Adore__

[인공지능을 위한 선형대수] 4.2 고유값 분해와 특이값 분해 응용 본문

Basis/Linear Algebra

[인공지능을 위한 선형대수] 4.2 고유값 분해와 특이값 분해 응용

3_GreenHeart 2023. 5. 1. 14:25
728x90

Source : [BoostCourse '인공지능을 위한 선형대수' - 주재걸 교수님]


 

어떤 정방행렬이 주어졌을 때, eigendecomposition은 존재할 수도 있고, 없을 수도 있다.

VDV(-1)에서 역행렬인 V가 없을 수 있기때문이다.

 

하지만 머신러닝에서 다루는 행렬은 대부분 symmetries positive (semi-)definite matrices이기때문에,

eigendecomposition과 SVD가 모두 가능하다.

 

 

 

symmetric positive definite matrix인 A가 들어온다.

이 행렬의 행은 특징값 (키, 몸무게, 나이...)을 가지고, 열은 data item (사람1, 사람2,..)을 가진다.

 

머신러닝에서는 AA(t)나 A(t)A를 가지고 알고리즘을 돌리는 경우가 대부분이다.

SVD에서 보았듯이, 이들은 항상 symmetric positive definite이다. 

 

 

✔︎ 여기서 A(t)A의 의미가 무엇일까?

이 식을 풀어서 써보면, 각 item 들이 갖고 있는 값들을 내적한 식이 나온다. 이는 item들 끼리의 유사도(상관관계)를 보여준다.

ex) 

이 유사도값을 활용하여 비슷한 특성을 가진 사람의 질병 가능도 예측

키가 160인 사람이 당뇨병에 걸릴 가능성이 높다면, 이와 유사한 키를 가진 다른 사람도 당뇨병이 걸릴 확률이 높다고 판단

 

✔︎ 반대로 AA(t)의 의미는?

이번에는 item이 아니라, 각 feature들의 내적 식이 나온다. 이는 feature들 간의 유사도 (상관관계)를 보여준다.

ex)

키가 클수록 몸무게도 커진다. 만약 키가 클수록 당뇨병에 걸릴 확률이 높다면, 몸무게가 많이 나갈수록 당뇨병에 걸릴 확률이 높다고 판단

 

 

특히 이 feature간의 상관관계를 이용하여 주성분 분석 (principal component analysis)와 Gram matrix에 적용할 수 있다.

 

뿐만 아니라, 차원 축소에도 적용할 수 있는데,

앞서 배웠던 SVD의 축소 버전을 보면 mxn 행렬이 주어졌을 때, U는 mxm, sigma는 mxn, V transpose는 nxn이었다.

하지만 여기서 계산을 해보면 U의 m개 열 중에서 n개만 뽑아 계산을 수행해도 비슷하게 나왔다.

 

비슷하게 A의 n개의 선형독립인 열벡터 (rank)에서 n보다 작은 rank를 뽑아서 최대한 근사한 값을 찾을 때, (low rank approximation)

sigma 에서 오름차순으로 정렬된 값의 앞부분에서 추출하여 값을 구하면, 차원을 축소해도 그 상관관계를 최대한 보존할 수 있다.

왜냐하면 sigma의 뒷부분으로 갈수록 값이 작아지는 만큼, 기존 A 행렬에서 해당 열이 갖고 있는 정보의 중요도가 작다는 뜻이기때문이다.

 

예를들어 5:1 의 비율을 갖는 (키,몸무게) 데이터가 있다고 하자. 

[160 32] [180 36] [150 30] 이는 결국 rank가 1로, 계산이 간단해질 수 있는데 

실제 우리가 키를 측정할때는 이렇게 딱 떨어지는 정수값으로 나올 수 없다.

160.7, 179.7, 150.3 이렇게 나오게 되는데, 이 순간 선형종속의 관계가 깨지게 되고 rank3 이 된다.

사실상 이 소수자리의 정보는 크게 유의미하지 않는데, 이 정보들이 바로 sigma의 뒷부분에 해당하는 것이다.

이를 제거함으로서 5:1의 비율을 유지하게 되면, 차원을 축소해도 이들의 상관관계를 보존한 채 머신러닝의 성능을 키울 수 있다.

 

 

Comments