선형대수학에서 실제로 SVD하는 과정은 꼭 익혀보길 바란다.
공돌이의 수학노트에서 원형에서 타원형으로 했을 때, x,y가 Ax,Ay로 변할 때 수직인 부분만 관찰한 것을 기억하자.
https://www.youtube.com/watch?v=cq5qlYtnLoY
U,V 는 정규직교벡터이며, 단위벡터라고 정의하였다.
scaling vector가 0이라는 것은 선형변환을 진행하고 나서 그 해당하는 부분의 영향이 0으로 없어졌다는 의미이다.
그리고 scaling vector는 σi = |Avi| 에 해당한다. 따라서 A 행렬에 대한 단위벡터 vi와 ui에 대한 정보량을 담고 있다.
https://darkpgmr.tistory.com/106
적용 - 2
실제로 SVD는 다양한 곳에서 쓰인다.
어떤 사진을 보낼 때, 그 사진의 data는 행렬의 n차원으로 표현될 것이다.
따라서 SVD를 통해 Scaling Vector를 큰 순으로 보내면 사진에 정보량을 많이 가지고 있는 벡터들이 먼저 보내지면, scaling vector가 적은 부분을 최소화시켜서 적은 data의 양으로 사진을 보낼 수가 있다.
적용 - 2
인수분해가 이차방정식의 해를 구하기 위한 도구로 쓰이는 것처럼 특이값 분해도 행렬을 차원축소 하기위한 도구로 쓰입니다. 실제로 주성분분석(PCA, principle component analysis)와 같은 차원축소 분야에서는 특이값 분해가 흔하게 쓰입니다.
이 때 data는 공분산구조를 가져야하며, 공분산 구조의 장축과 이에 수직하는 단축을 찾는 것이 PCA 차원축소이다.
SVD는 A라는 선형변환 or A라는 data가 v라는 공분산 구조의 장축과 단축에 해당하는 직교벡터를 만나
특이값 분해는 차원축소를 하는데 사용된다고 말씀드렸는데, 좀 더 구체적으로 알아보겠습니다.
데이터를 나타내는 행렬 A가 존재한다고 합시다. 차원축소는 말 그대로 차원을 축소시키는 것인데요,
즉, 데이터 전체 공간의 차원보다 낮은 차원으로 근사시켜 적합(fit)시킬 수 있는 차원이 낮은 공간을 찾는 것입니다.
행렬 A의 크기가 이라는 말은 d차원에서 n개의 점이 있다고 생각하실 수 있습니다. 따라서 A에 대한 차원축소란 n개의 점을 표현할 수 있는 p보다 작은 차원인 d차원-부분공간을 찾는 문제라고 볼 수 있습니다. 그렇다면 해당 부분공간은 어떻게 구할까요? 그것은 데이터와 부분 공간으로부터의 수직거리를 최소화 시키는 것이라고 볼 수 있습니다.
이때 직선거리의 최소화는 회귀분석에 나오는 제곱합(sum of squre)를 최소화 시키는 것이죠.
제곱합이라고 했으니 를 사용하는 것이고, 따라서 특이값 분해에서는 원본행렬 A 자체를 다루기보다 를 다루는 것입니다.
'AI' 카테고리의 다른 글
ML : Machine Learning 개념과 종류 : 모형의 적합성 평가 및 실험 설계 (0) | 2020.03.07 |
---|---|
ML : Machine Learning 개념과 종류 : 개념과 종류 (0) | 2020.03.07 |
자연어 처리 : 문서 유사도 : 유클리드, 코사인, 자카드 (0) | 2020.03.06 |
자연어 처리 : TF-IDF 활용해 문서의 유사도 구하기 (0) | 2020.03.06 |
자연어 처리 : 카운트 기반의 단어 표현 : TF-IDF (0) | 2020.03.06 |
댓글