2016-06-10 2 views
6

저는 데이터 집합의 차원을 줄이는 방법을 배우려고합니다. Principle Component AnalysisSingular Value Decomposition에 관한 자습서를 보았습니다. 나는 그것이 가장 큰 분산의 차원을 취하고 다음으로 가장 높은 분산의 차원을 순차적으로 축소한다는 것을 이해한다.단일 값 분해 결과를 해석하는 법 (Python 3)?

출력 매트릭스를 해석하는 방법에 대해 혼란스러워합니다. 나는 문서를 보았으나별로 도움이되지 않았다. 나는 튜토리얼을 따라 갔고 결과 행렬이 정확히 무엇인지 잘 모르고 있었다. 데이터 세트 (sklearn.datasets)의 각 변수 분포에 대한 느낌을 얻기 위해 몇 가지 코드를 제공했습니다.

초기 입력 배열은 (n x m)n samplesm attributes입니다. PC1 대 PC2의 일반적인 PCA 플롯을 만들 수 있지만 각 PC가 나타내는 크기를 어떻게 알 수 있습니까?

죄송합니다. 기본 질문 인 경우 죄송합니다. 많은 리소스가 무척이나 무거워서 괜찮습니다.하지만보다 직관적 인 대답이 유용 할 것입니다. 아니요 원래 레이블이 붙은 데이터의 관점에서 결과물을 해석하는 방법에 대해 이야기 한 곳은 없습니다. U * S의 *의 V * :

나는 sklearn의 당신이 제품으로 하다며 3 행렬을 분해 할 수 행렬 M 위에서 언급 한 바와 같이 decomposition.PCA

#Singular Value Decomposition 
U, s, V = np.linalg.svd(X, full_matrices=True) 
print(U.shape, s.shape, V.shape, sep="\n") 
(442, 442) 
(10,) 
(10, 10) 
+1

직관을 얻으려면이 pdf 및 stackoverflow 대답을 참조 할 수 있습니다. 나는 또한 며칠 전에 책을 읽었는데, 그들은 나를 위해 성경과 같았습니다. http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf – hashcode55

+1

http://stats.stackexchange.com/questions/2691/making-sense-of-principal-component-analysis-eigenvectors- 고유치 – hashcode55

+1

Jonathan Shlens의 [PCA 튜토리얼] (http://arxiv.org/abs/1404.1100)은 최고 중 하나입니다. – lightalchemist

답변

1

사용하여 열려있어. 기하학적 의미는 다음과 같습니다. 모든 변환은 회전 시퀀스 (V *), 스케일링 (S) 및 회전 (U)으로 간주 할 수 있습니다. 여기에 좋은 description and animation입니다.

중요한 점은 무엇입니까? 행렬 S는 대각이다 - 모든 값들은 주 대각선이 0

같다 오프 누워 - 각각의 값은 특정 축을 따라 스케일링 인자이다

np.diag(s) 

array([[ 2.00604441, 0.  , 0.  , 0.  , 0.  ,   0.  , 0.  , 0.  , 0.  , 0.  ], 
     [ 0.  , 1.22160478, 0.  , 0.  , 0.  ,   0.  , 0.  , 0.  , 0.  , 0.  ], 
     [ 0.  , 0.  , 1.09816315, 0.  , 0.  ,   0.  , 0.  , 0.  , 0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 0.97748473, 0.  ,   0.  , 0.  , 0.  , 0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 0.  , 0.81374786,   0.  , 0.  , 0.  , 0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 0.  , 0.  ,   0.77634993, 0.  , 0.  , 0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 0.  , 0.  ,   0.  , 0.73250287, 0.  , 0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 0.  , 0.  ,   0.  , 0.  , 0.65854628, 0.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 0.  , 0.  ,   0.  , 0.  , 0.  , 0.27985695, 0.  ], 
     [ 0.  , 0.  , 0.  , 0.  , 0.  ,   0.  , 0.  , 0.  , 0.  , 0.09252313]]) 

기하학적. 우리의 목적 (분류 및 회귀)에서이 값은 특정 축이 전체 결과에 미치는 영향을 보여줍니다.

이 값은 2.0에서 0.093으로 감소하고 있습니다. 가장 중요한 응용 프로그램 중 하나입니다. Low-rank matrix approximation의 정확도가 있습니다. 매우 정밀한 분해 (ML 문제에 해당)가 필요하지 않은 경우 가장 낮은 값을 버리고 중요성 만 유지하면됩니다. 이러한 방법으로 단계별로 솔루션을 개선 할 수 있습니다 : 테스트 세트로 품질을 평가하고, 최소값을 버리고 반복하십시오. 결과적으로 쉽고 강력한 솔루션을 얻을 수 있습니다. 수축 할

enter image description here

여기에 좋은 후보는 5 ~ 7 8 9, 그리고 당신은 단지 하나 개의 값으로 모델에 근접 할 수있는 마지막 옵션으로 - 첫째.

+0

공변량 행렬에 대한 고유 벡터는 어디에 있습니까? –

+0

그들은 U 또는 V의 열입니까? 당신의 대답을 주셔서 감사합니다 btw 거기에 원래의 데이터 집합의 차원이 고유 벡터에 의해 표현되는 방법을 알고 계십니까? –

+1

o fU와 V 열은 각각 M의 왼쪽 단일 벡터와 오른쪽 특이 벡터입니다. 자세한 내용은 https://en.wikipedia.org/wiki/Singular_value_decomposition#Relation_to_eigenvalue_decomposition –

관련 문제