머신러닝을 위한 행렬 인수분해에 대한 짧은 소개

복잡한 행렬 연산은 컴퓨터의 제한된 정밀도를 사용하여 효율적으로 또는 안정적으로 해결할 수 없습니다.

행렬 분해는 행렬을 구성 부분으로 줄여 더 복잡한 행렬 연산을 더 쉽게 계산할 수 있도록 하는 방법입니다. 행렬 인수 분해 방법이라고도하는 행렬 분해 방법은 선형 방정식 시스템 풀기, 역함수 계산, 행렬 행렬식 계산과 같은 기본 연산에서도 컴퓨터에서 선형 대수학의 기초입니다.

이 자습서에서는 행렬 분해와 Python에서 계산하는 방법을 알아봅니다.

이 자습서를 완료하면 다음을 알 수 있습니다.

  • 행렬 분해란 무엇이며 이러한 유형의 연산이 중요한 이유.
  • 파이썬에서 LU 및 QR 행렬 분해를 계산하는 방법.
  • 파이썬에서 콜레스키 행렬 분해를 계산하는 방법.

튜토리얼 개요

이 튜토리얼은 다음과 같이 네 부분으로 나뉩니다.

  1. 행렬 분해란 무엇입니까?
  2. LU 매트릭스 분해
  3. QR 매트릭스 분해
  4. 콜레스키 분해

행렬 분해란 무엇입니까?

행렬 분해는 행렬을 구성 부분으로 줄이는 방법입니다.

원래 행렬 자체가 아닌 분해된 행렬에서 수행할 수 있는 더 복잡한 행렬 연산을 단순화할 수 있는 접근 방식입니다.

행렬 분해에 대한 일반적인 비유는 10을 2 x 5로 인수분해하는 것과 같은 숫자의 인수분해입니다. 이러한 이유로 행렬 분해는 행렬 인수 분해라고도합니다. 실수값을 인수분해하는 것과 마찬가지로 행렬을 분해하는 방법에는 여러 가지가 있으므로 다양한 행렬 분해 기술이 있습니다.

간단하고 널리 사용되는 두 가지 매트릭스 분해 방법은 LU 매트릭스 분해와 QR 매트릭스 분해입니다.

다음으로 이러한 각 방법을 자세히 살펴 보겠습니다.


LU 매트릭스 분해

LU 분해는 정사각형 행렬에 대한 것이며 행렬을 L 및 U 성분으로 분해합니다.

또는 점 표기법이 없습니다.

여기서 A는 분해하려는 정사각형 행렬이고 L은 하위 삼각형 행렬이고 U는 위쪽 삼각형 행렬입니다.

요인 L과 U는 삼각형 행렬입니다. 제거에서 오는 인수 분해는 A = LU입니다.

— 97페이지, 선형 대수학 입문, 제5판, 2016.

LU 분해는 반복적인 수치 프로세스를 사용하여 발견되며 쉽게 분해되거나 분해될 수 없는 행렬의 경우 실패할 수 있습니다.

실제로 해결하기에 수치적으로 더 안정적인 이 분해의 변형을 LUP 분해 또는 부분 피벗을 사용한 LU 분해라고 합니다.

부모 행렬의 행은 분해 프로세스를 단순화하기 위해 재정렬되고 추가 P 행렬은 결과를 치환하거나 결과를 원래 순서로 반환하는 방법을 지정합니다. LU의 다른 변형도 있습니다.

LU 분해는 선형 회귀에서 계수를 찾고 행렬의 행렬식 및 역함수를 계산하는 것과 같은 선형 방정식 시스템의 해결을 단순화하는 데 자주 사용됩니다.

LU 분해는 lu() 함수를 사용하여 파이썬에서 구현할 수 있습니다. 보다 구체적으로, 이 함수는 LPU 분해를 계산합니다.

아래 예제에서는 먼저 3×3 정사각형 행렬을 정의합니다. LU 분해가 계산된 다음 원래 행렬이 구성 요소에서 재구성됩니다.

예제를 실행하면 먼저 정의된 3×3 행렬이 인쇄된 다음 분해의 P, L 및 U 구성 요소가 인쇄되고 마지막으로 원래 행렬이 다시 생성됩니다.


QR 매트릭스 분해

QR 분해는 m x n 행렬(정사각형 행렬에 국한되지 않음)에 대한 것이며 행렬을 Q 및 R 구성 요소로 분해합니다.

또는 점 표기법이 없습니다.

여기서 A는 분해하려는 행렬이고, Q는 크기가 m x m인 행렬이고, R은 크기가 m x n인 상한 삼각형 행렬입니다.

QR 분해는 분해될 수 없거나 쉽게 분해될 수 없는 행렬에 대해 실패할 수 있는 반복적인 수치 방법을 사용합니다.

LU 분해와 마찬가지로 QR 분해는 선형 방정식 시스템을 푸는 데 자주 사용되지만 정사각형 행렬에 국한되지는 않습니다.

QR 분해는 qr() 함수를 사용하여 NumPy에서 구현할 수 있습니다. 기본적으로 이 함수는 더 경제적인 더 작거나 ‘축소된’ 차원을 가진 Q 및 R 행렬을 반환합니다. 모드 인수를 ‘complete’로 지정하여 Q에 대해 m x m, R에 대해 m x n의 예상 크기를 반환하도록 변경할 수 있지만 대부분의 응용 프로그램에는 필요하지 않습니다.

아래 예제에서는 3×2 행렬을 정의하고 QR 분해를 계산한 다음 분해된 요소에서 원래 행렬을 재구성합니다.

예제를 실행하면 먼저 정의된 3×2 행렬이 인쇄된 다음 Q 및 R 요소가 인쇄되고 마지막으로 시작한 것과 일치하는 재구성된 행렬이 인쇄됩니다.


콜레스키 분해

Cholesky 분해는 모든 고유값이 0보다 큰 정사각형 대칭 행렬, 소위 양의 한정 행렬에 대한 것입니다.

머신러닝에 대한 관심을 위해 실제 값 행렬에 대한 Cholesky 분해에 초점을 맞추고 복소수로 작업할 때는 무시합니다.

분해는 다음과 같이 정의됩니다.

또는 점 표기법이 없는 경우:

여기서 A는 분해되는 행렬, L은 하부 삼각 행렬, L^T는 L의 전치입니다.

분해는 다음과 같이 상위 삼각형 행렬의 곱으로 쓸 수도 있습니다.

여기서 U는 상삼각 행렬입니다.

Cholesky 분해는 선형 회귀를위한 선형 최소 제곱을 풀고 시뮬레이션 및 최적화 방법을 해결하는 데 사용됩니다.

대칭 행렬을 분해할 때 Cholesky 분해는 LU 분해보다 거의 두 배 더 효율적이며 이러한 경우에 선호되어야 합니다.

대칭적이고 양의 명확한 행렬은 다소 특별하지만 일부 응용 프로그램에서는 매우 자주 발생하므로 Cholesky 분해라고하는 특수 인수 분해에 대해 알아 두는 것이 좋습니다. 그것을 사용할 수있을 때, Cholesky 분해는 선형 방정식을 푸는 다른 방법보다 약 2 배 빠릅니다.

— 페이지 100, 수치 레시피: 과학 컴퓨팅의 기술, 제3판, 2007.

콜레스키 분해는 콜레스키() 함수를 호출하여 NumPy에서 구현할 수 있습니다. 이 함수는 필요에 따라 L 전치에 쉽게 액세스 할 수 있으므로 L 만 반환합니다.

아래 예제에서는 3×3 대칭 및 양의 한정 행렬을 정의하고 Cholesky 분해를 계산한 다음 원래 행렬을 재구성합니다.

예제를 실행하면 먼저 대칭 행렬이 인쇄된 다음 분해의 아래쪽 삼각형 행렬이 인쇄되고 그 뒤에 재구성된 행렬이 인쇄됩니다.


확장

이 섹션에는 탐색할 수 있는 자습서를 확장하기 위한 몇 가지 아이디어가 나열되어 있습니다.

  • 사용자 고유의 데이터로 각 작업을 사용하여 5개의 예제를 만듭니다.
  • 머신러닝 문서를 검색하고 사용 중인 각 작업의 예제 1개를 찾습니다.


추가 정보

이 섹션에서는 더 자세히 알아보려는 경우 주제에 대한 더 많은 리소스를 제공합니다.



API


기사


요약

이 자습서에서는 행렬 분해와 Python에서 계산하는 방법을 발견했습니다.

특히 다음 내용을 배웠습니다.

  • 행렬 분해란 무엇이며 이러한 유형의 연산이 중요한 이유.
  • 파이썬에서 LU 및 QR 행렬 분해를 계산하는 방법.
  • 파이썬에서 콜레스키 행렬 분해를 계산하는 방법.

네피리티
No Comments

Sorry, the comment form is closed at this time.