LSI의 맥락에서 특이 값 분해 이해


9

내 질문은 일반적으로 SVD (Singular Value Decomposition), 특히 LSI (Latent Semantic Indexing)에 관한 것입니다.

예 를 들어, 7 개의 문서에 대해 5 개의 단어 빈도를 포함하는 가 있습니다.Aword×document

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를 사용하여 : .AA=UDVT

s = svd(A)
D = diag(s$d) # singular value matrix
S = diag(s$d^0.5 ) # diag matrix with square roots of singular values.

에서 12 , 그것은 것을 주장한다 :

WordSim=US단어 유사성 행렬을 제공합니다 . 여기서 의 행 은 다른 단어를 나타냅니다. WordSim

WordSim = s$u %*% S

DocSim=SVT 는 의 열이 다른 문서를 나타내는 문서 유사성 매트릭스를 제공합니다 .DocSim

DocSim = S %*% t(s$v)

질문 :

  1. 대수적으로 과 단어 / 문서 유사성 매트릭스 인 이유는 무엇입니까? 직관적 인 설명이 있습니까?WordSimDocSimS
  2. 주어진 R 예를 기반으로 과 (행 / 열 사이의 코사인 유사성 또는 상관 계수를 사용하지 않고) 직관적 인 단어 수 / 유사성 관찰을 할 수 있습니까?WordSimDocSim

여기에 이미지 설명을 입력하십시오


나는 LSI에 대해 거의 알지 못하지만 행렬의 SVD는 주요 구성 요소, 이중도, 대응 분석과 같은 선형 차원 축소, 매핑 방법의 핵심입니다. SVD의 주요 "법칙"은AV=UD = 행의 투영 A주축에; 과AU=VD = 열의 투영 A주축에. 어떤 점에서는 점 (행 또는 열)과 주축 사이의 "유사성"값입니다. 포인트 자체 간의 유사성으로 취급 될 수 있는지 여부는 상황에 따라 다릅니다.
ttnphns

아 .. 위키 백과에서 LSI는 단지 통신 분석 (CA) 이라는 것을 알았습니다 . 그게 낫다. CA는 특별히 준비된 데이터 테이블 의 이중표 입니다. 위에서 언급 한 투영 또는 좌표-기본 축의 공간에 행 및 열 점을 그리는 데 사용합니다. 행-행, 열-콜 및 행-열 포인트 사이의 유사성은 이들의 유사성과 관련이 있습니다. 그러나 플롯의 레이아웃은 행과 열 점에 관성 (분산)을 분산시키는 방법에 따라 다릅니다.
ttnphns

@ttnphns. 감사합니다. 다음에 대한 참조를 제공 할 수 있습니다. "AV=UD= 주축 상으로의 A 행의 투영; 과AU=VD = A의 열을 주축에 투영합니다. "라고 생각합니다. 주축을 기준으로하여 m 개의 단수 값에 해당하는 고유 벡터를 의미합니까? D? 또한 "PCA의 경우 왼쪽 특이 벡터를 계산할 필요가 없습니다"라고 생각했지만 이것이 왜 그런지 완전히 이해할 수는 없습니다.
Zhubarb

2
해당 문서의 내용을 올바르게 반영하도록 편집하여 질문을 개선 할 수 있습니다. 에 p. 22 그것은 정의한다S포함하는 등의 제곱근 의를D, 가장 큰 것으로 제한됩니다. 따라서 어느 쪽도UD ...도 아니다 DV"유사성 매트릭스"로 해석되지도 않습니다. 관련 행렬은 대신USSV. 그것들은 근사치를 재구성하는데 사용될 수 있습니다.A=UDVU(S2)V=(US)(SV).
whuber

1
나는 D=svd(A)$dR이 0이 아닌 고유 값의 제곱근을 반환 한다고 가정 했기 때문에UD. 나는 차원 축소 측면에 문제가 없으며 설명 된대로 A의 하위 순위 근사가 형성 될 수 있음을 이해합니다. 이 링크의 답변이 내 질문에 부분적으로 답변 한다는 것을 알았습니다 .
Zhubarb

답변:


2

SVD를 사용한 행렬 분해는 입력 행렬을 세 부분으로 분해합니다.

  • 왼쪽 특이 벡터 U. 이 행렬의 첫 번째 열은 입력 행렬의 행이 가장 다양한 축을 지정합니다. 귀하의 경우 첫 번째 열에는 어떤 단어가 가장 많이 변하는 지 알려줍니다.
  • 특이 값 D. 이것들은 스케일링입니다. 이들은 서로에 대해 상대적입니다. 첫 번째 값이D 첫 번째 특이 벡터 (in UVT)는 초 특이 벡터보다 2 배 많은 변형을 설명합니다.
  • 오른쪽 특이 벡터 VT. 이 행렬의 첫 번째 행은 입력 행렬의 열이 가장 많이 변하는 축을 지정합니다. 귀하의 경우 첫 번째 행은 어떤 문서가 가장 많이 다른지 알려줍니다.

단어 나 문서를 할 때 함께 다양 그들이 유사하다는 것을 나타냅니다. 예를 들어, 의사라는 단어가 문서에서 더 자주 발생하면 간호사와 병원이라는 단어도 더 많이 발생합니다. 이것은 첫 번째 축척 된 왼쪽 특이 벡터로 표시됩니다.WordSim입력 데이터를보고이 결과의 유효성을 검사 할 수 있습니다. 간호사가 발생하면 병원도 발생하고 발생하지 않으면 병원도 발생하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.