SVD
SVD를 직접 numpy로 구현해 보았습니다.
SVD는 singluar vector decomposition의 약자로 singular value로 행렬을 분해하는 작업입니다.
그럼 singular vlaue는 뭘까요?
singular value는 직교하는 벡터집합과 선형 변환 후에도 직교 할수있게 해주는 벡터집합간의 변화한 벡터의 길이들이라고 생각 할 수 있을것 같다.
SVD를 이용하면 한 행렬을 sigular value의 모음인 sigma 행렬과 U,V 두 행렬로 분해 할 수 있고, 세 행렬을 연산을 통해 원래 행렬과 비슷 하게 복원 할 수 있다
여기서 대각행렬인 sigma 행렬의 요소를 얼마나 사용하냐에 따라서 압축률이 정해지게 된다.
추천시스템에서는 U,V를 각각 사용자와 아이템의 잠재의미 행렬로 사용하게 된다
0 comments:
댓글 쓰기