머신러닝을 위한 고유값과 고유벡터에 대한 짧은 소개

매트릭스 분해는 더 복잡한 작업의 범위를 단순화하기 위해 매트릭스를 구성 부분으로 줄이는 데 유용한 도구입니다.

아마도 가장 많이 사용되는 행렬 분해 유형은 행렬을 고유 벡터와 고유 값으로 분해하는 고유 분해입니다. 이 분해는 주성분 분석 방법 또는 PCA와 같이 머신러닝에 사용되는 방법에서도 중요한 역할을합니다.

이 튜토리얼에서는 선형 대수학의 고유 분해, 고유 벡터 및 고유 값을 발견합니다.

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

  • 고유 분해가 무엇이며 고유 벡터와 고유 값의 역할.
  • NumPy를 사용하여 파이썬에서 고유 분해를 계산하는 방법.
  • 벡터가 고유 벡터인지 확인하는 방법과 고유 벡터와 고유 값에서 행렬을 재구성하는 방법.

튜토리얼 개요

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

  1. 행렬의 고유분해
  2. 고유 벡터와 고유값
  3. 고유분해의 계산
  4. 고유 벡터와 고유값 확인
  5. 원본 행렬 재구성

행렬의 고유분해

행렬의 고유분해는 정사각 행렬을 고유벡터와 고유값의 집합으로 분해하는 분해 유형입니다.

가장 널리 사용되는 행렬 분해 종류 중 하나는 행렬을 고유 벡터와 고유 값 집합으로 분해하는 고유 분해라고 합니다.

— 42페이지, 딥러닝, 2016.

벡터는 다음 방정식을 만족하는 행렬의 고유 벡터입니다.

이를 고유값 방정식이라고 하며, 여기서 A는 분해하는 부모 정사각형 행렬이고, v는 행렬의 고유 벡터이며, lambda는 소문자 그리스 문자이며 고유값 스칼라를 나타냅니다.

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

행렬은 부모 행렬의 각 차원에 대해 하나의 고유 벡터와 고유값을 가질 수 있습니다. 모든 정사각형 행렬을 고유 벡터와 고유값으로 분해할 수 있는 것은 아니며, 일부는 복소수가 필요한 방식으로만 분해할 수 있습니다. 부모 행렬은 고유 벡터와 고유 값의 곱으로 표시 될 수 있습니다.

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

여기서 Q는 고유 벡터로 구성된 행렬이고, diag(V)는 대각선을 따라 고유값으로 구성된 대각 행렬(때로는 대문자 람다로 표시됨)이며, Q^-1은 고유 벡터로 구성된 행렬의 역행렬입니다.

그러나 우리는 종종 행렬을 고유값과 고유 벡터로 분해하려고합니다. 이렇게 하면 정수를 소인수로 분해하면 해당 정수의 동작을 이해하는 데 도움이 될 수 있는 것처럼 행렬의 특정 속성을 분석하는 데 도움이 될 수 있습니다.

— 43페이지, 딥러닝, 2016.

Eigen은 이름이 아닙니다 (예 : 메소드는 “Eigen”의 이름을 따서 명명되지 않았습니다). eigen (발음 eye-gan)은 부모 행렬에 속하는 것처럼 “소유”또는 “타고난”을 의미하는 독일어 단어입니다.

분해 작업은 행렬의 압축을 초래하지 않습니다. 대신 매트릭스에서 특정 작업을 더 쉽게 수행할 수 있도록 구성 부분으로 나눕니다. 다른 행렬 분해 방법과 마찬가지로 고유 분해는 다른 복잡한 행렬 연산의 계산을 단순화하는 요소로 사용됩니다.

거의 모든 벡터는 A를 곱할 때 방향을 바꿉니다. 특정 예외 벡터 x는 Ax와 같은 방향입니다. 그것들은 “고유 벡터”입니다. 고유 벡터에 A를 곱하면 벡터 Ax는 람다에 원래 x를 곱한 숫자입니다. 고유값 람다는 특수 벡터 x에 A를 곱할 때 특수 벡터 x가 늘어나거나 축소되거나 반전되거나 변경되지 않은 상태로 남아 있는지 여부를 알려줍니다.

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

고유 분해는 머신러닝에서 데이터의 차원을 줄이는 데 사용할 수있는 주성분 분석 방법 또는 PCA에서 행렬의 주성분을 계산하는 데에도 사용할 수 있습니다.

고유 벡터와 고유값

고유 벡터는 단위 벡터이며, 이는 길이 또는 크기가 1.0과 같음을 의미합니다. 그것들은 종종 오른쪽 벡터라고 불리며, 이는 단순히 열 벡터를 의미합니다 (행 벡터 또는 왼쪽 벡터와 반대). 오른쪽 벡터는 우리가 이해하는 벡터입니다.

고유값은 벡터에 길이 또는 크기를 부여하는 고유벡터에 적용되는 계수입니다. 예를 들어, 음의 고유값은 스케일링의 일부로 고유벡터의 방향을 반전시킬 수 있습니다.

양의 고유값만 있는 행렬을 양의 한정 행렬이라고 하며, 고유값이 모두 음수이면 음의 한정 행렬이라고 합니다.

행렬의 고유값과 고유벡터의 관점에서 행렬을 분해하면 행렬의 속성에 대한 귀중한 통찰력을 얻을 수 있습니다. 행렬의 거듭제곱을 계산하는 것과 같은 특정 행렬 계산은 행렬의 고유분해를 사용할 때 훨씬 쉬워집니다.

— 페이지 262, 선형 대수학에 대한 좋은 가이드, 2017

고유분해의 계산

고유 분해는 효율적인 반복 알고리즘을 사용하여 정사각형 행렬에서 계산되며 이에 대해서는 자세히 설명하지 않습니다.

종종 고유 값이 먼저 발견 된 다음 고유 벡터가 발견되어 방정식을 계수 집합으로 해결합니다.

고유 분해는 eig()함수를 사용하여 NumPy에서 계산할 수 있습니다.

아래 예제에서는 먼저 3×3 정사각형 행렬을 정의합니다. 고유분해는 고유값과 고유벡터를 반환하는 행렬에서 계산됩니다.

예제를 실행하면 먼저 정의된 행렬이 인쇄되고 그 뒤에 고유값과 고유벡터가 인쇄됩니다. 보다 구체적으로, 고유 벡터는 오른쪽 고유 벡터이며 단위 길이로 정규화됩니다.



고유 벡터와 고유값 확인

벡터가 실제로 행렬의 고유 벡터임을 확인할 수 있습니다.

후보 고유 벡터에 고유 벡터를 곱하고 결과를 고유 값과 비교하여이를 수행합니다.

먼저 행렬을 정의한 다음 고유값과 고유벡터를 계산합니다. 그런 다음 첫 번째 벡터와 값이 실제로 행렬의 고유값과 고유벡터인지 테스트합니다.

고유 벡터는 부모 행렬과 동일한 차원을 갖는 행렬로 반환되며, 여기서 각 열은 고유 벡터입니다(예: 첫 번째 고유 벡터는 vectors[:, 0]). 고유값은 목록으로 반환되며, 여기서 반환된 배열의 값 인덱스는 열 인덱스에 의해 고유벡터와 쌍을 이룹니다(예: values[0]의 첫 번째 고유값은 vectors[:, 0].

이 예제에서는 원래 행렬에 첫 번째 고유 벡터를 곱하고 첫 번째 고유 벡터에 첫 번째 고유 값을 곱한 값과 비교합니다.

예제를 실행하면 예상대로 동일한 결과 벡터를 표시하는 이 두 곱셈의 결과가 인쇄됩니다.


원본 행렬 재구성

프로세스를 역전시키고 고유 벡터와 고유 값만 주어진 원래 행렬을 재구성할 수 있습니다.

먼저 고유 벡터 목록을 행렬로 변환해야 하며, 여기서 각 벡터는 행이 됩니다. 고유값은 대각선 행렬로 정렬해야 합니다. 이를 위해 NumPy diag() 함수를 사용할 수 있습니다.

다음으로 inv() NumPy 함수로 달성할 수 있는 고유 벡터 행렬의 역행렬을 계산해야 합니다. 마지막으로 이러한 요소는 dot() 함수와 함께 곱해야 합니다.

이 예제에서는 고유값과 고유벡터를 다시 계산하고 이를 사용하여 원래 행렬을 재구성합니다.

예제를 실행하면 먼저 원래 행렬이 인쇄된 다음 원래 행렬과 일치하는 고유값 및 고유벡터에서 재구성된 행렬이 인쇄됩니다.

확장

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

  • 사용자 고유의 데이터로 각 작업을 사용하여 5개의 예제를 만듭니다.
  • 목록 목록으로 정의된 행렬에 대해 각 행렬 연산을 수동으로 구현합니다.
  • 머신러닝 문서를 검색하고 사용 중인 각 작업의 예제 1개를 찾습니다.


추가 정보

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


API

기사

요약

이 튜토리얼에서는 선형 대수학의 고유분해, 고유벡터, 고유값을 발견했습니다.

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

  • 고유 분해가 무엇이며 고유 벡터와 고유 값의 역할.
  • NumPy를 사용하여 파이썬에서 고유 분해를 계산하는 방법.
  • 벡터가 고유 벡터인지 확인하는 방법과 고유 벡터와 고유 값에서 행렬을 재구성하는 방법.

네피리티
No Comments

Sorry, the comment form is closed at this time.