내 질문은 일반적으로 SVD (Singular Value Decomposition), 특히 LSI (Latent Semantic Indexing)에 관한 것입니다.
예 를 들어, 7 개의 문서에 대해 5 개의 단어 빈도를 포함하는 가 있습니다.
A = matrix(data=c(2,0,8,6,0,3,1,
1,6,0,1,7,0,1,
5,0,7,4,0,5,6,
7,0,8,5,0,8,5,
0,10,0,0,7,0,0), ncol=7, byrow=TRUE)
rownames(A) <- c('doctor','car','nurse','hospital','wheel')
I는를위한 매트릭스 분해 얻을 SVD를 사용하여 : .
s = svd(A)
D = diag(s$d) # singular value matrix
S = diag(s$d^0.5 ) # diag matrix with square roots of singular values.
는 단어 유사성 행렬을 제공합니다 . 여기서 의 행 은 다른 단어를 나타냅니다.
WordSim = s$u %*% S
는 의 열이 다른 문서를 나타내는 문서 유사성 매트릭스를 제공합니다 .
DocSim = S %*% t(s$v)
질문 :
- 대수적으로 과 단어 / 문서 유사성 매트릭스 인 이유는 무엇입니까? 직관적 인 설명이 있습니까?
- 주어진 R 예를 기반으로 과 (행 / 열 사이의 코사인 유사성 또는 상관 계수를 사용하지 않고) 직관적 인 단어 수 / 유사성 관찰을 할 수 있습니까?
나는 LSI에 대해 거의 알지 못하지만 행렬의 SVD는 주요 구성 요소, 이중도, 대응 분석과 같은 선형 차원 축소, 매핑 방법의 핵심입니다. SVD의 주요 "법칙"은
—
ttnphns
= 행의 투영 주축에; 과 = 열의 투영 주축에. 어떤 점에서는 점 (행 또는 열)과 주축 사이의 "유사성"값입니다. 포인트 자체 간의 유사성으로 취급 될 수 있는지 여부는 상황에 따라 다릅니다.
아 .. 위키 백과에서 LSI는 단지 통신 분석 (CA) 이라는 것을 알았습니다 . 그게 낫다. CA는 특별히 준비된 데이터 테이블 의 이중표 입니다. 위에서 언급 한 투영 또는 좌표-기본 축의 공간에 행 및 열 점을 그리는 데 사용합니다. 행-행, 열-콜 및 행-열 포인트 사이의 유사성은 이들의 유사성과 관련이 있습니다. 그러나 플롯의 레이아웃은 행과 열 점에 관성 (분산)을 분산시키는 방법에 따라 다릅니다.
—
ttnphns
@ttnphns. 감사합니다. 다음에 대한 참조를 제공 할 수 있습니다. "= 주축 상으로의 A 행의 투영; 과 = A의 열을 주축에 투영합니다. "라고 생각합니다. 주축을 기준으로하여 m 개의 단수 값에 해당하는 고유 벡터를 의미합니까? ? 또한 "PCA의 경우 왼쪽 특이 벡터를 계산할 필요가 없습니다"라고 생각했지만 이것이 왜 그런지 완전히 이해할 수는 없습니다.
—
Zhubarb
해당 문서의 내용을 올바르게 반영하도록 편집하여 질문을 개선 할 수 있습니다. 에 p. 22 그것은 정의한다포함하는 등의 제곱근 의를, 가장 큰 것으로 제한됩니다. 따라서 어느 쪽도 ...도 아니다 "유사성 매트릭스"로 해석되지도 않습니다. 관련 행렬은 대신 과 . 그것들은 근사치를 재구성하는데 사용될 수 있습니다.
—
whuber