[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

[scikit-learn 라이브러리] 특이값분해 (SVD)

inu 2020. 9. 1. 15:30
반응형

특이값분해 (SVD)

  • PCA의 경우 정방행렬(행과 열의 크기가 같은 행렬)만을 고유벡터로 분해할 수 있으나 SVD는 정방행렬뿐만 아니라 행과 열의 크기가 다른 행렬에 대해서도 적용할 수 있다.
  • SVD는 m x n 크기의 행렬 A를 분해하여, U, ∑, V 행렬로 만든다.

출처:  https://www.pikpng.com/transpng/hxRRmbR/

  • 행렬 U와 V에 속한 벡터는 특이 벡터(Singular Vector)라고 하며, 모든 특이 벡터는 서로 직교하는 성질을 가진다.
  • ∑는 직사각 대각 행렬이며, 행렬의 대각에 위치한 값만 0이 아니고 나머지 위치의 값은 모두 0의 값을 가진다.
  • m < n인 경우 첫번째와 같이 분해되며, m > n인 경우 두번째와 같이 분해
  • ∑의 0이 아닌 대각 원소값을 특이값(Singular Value)라고 한다.

TruncatedSVD

# 2개의 주요 component로 TruncatedSVD 변환
tsvd = TruncatedSVD(n_components=2)
X_tsvd = tsvd.fit_transform(X)
  • 훈련된 데이터를 통해 SVD의 특이값을 얻어낸다.
  • 리턴값은 특이값이다.
반응형