tf-idf 행렬을 기반으로 피어슨 상관 계수를 계산하여 다른 용어와 조합하여 어떤 용어가 발생하는지 파악하는 것이 합리적입니까? 수학적으로 맞습니까?tf-idf 값을 기반으로 상관 관계를 계산 하시겠습니까?
내 출력은 각 용어의 각 셀에 상관 계수가있는 상관 행렬입니다.
- ------- 용어 1 용어 2 term3
- 용어 2
- 용어 2
- 용어 2
tf-idf 행렬을 기반으로 피어슨 상관 계수를 계산하여 다른 용어와 조합하여 어떤 용어가 발생하는지 파악하는 것이 합리적입니까? 수학적으로 맞습니까?tf-idf 값을 기반으로 상관 관계를 계산 하시겠습니까?
내 출력은 각 용어의 각 셀에 상관 계수가있는 상관 행렬입니다.
그것은 '다른 용어와 함께 발생하는'당신의 정의에 따라 달라집니다. 이 점을 좀 더 명확히하기 위해 :
피어슨 평균 상관 관계 분석을 수행 할 때 idf는 중요하지 않습니다. 동일한 항의 모든 tf 값은 최종 tf-idf를 산출하는 동일한 idf 값으로 곱해진다. PMC는 입력 스케일링에 대해 불변하므로 여기에서 idf가 제거됩니다. 그러므로 제안 된 아이디어에서 중요한 것은 모두 tf입니다. 당신이 idf를 계산조차하지 않으면 몇 가지 계산을 저장할 수도 있지만 그렇게하면 많이 상처주지 않을 것입니다.
이제 tf의 사용법에 대해 알아보십시오. 예를 들어 무엇이 필요한지 알아 내려고합시다.
TermA
이 Document1
에 자주 나타나고 Document2
에 나타납니다. 반면에 TermB
은 Document1
에 조금 자주 나타나며 Document2
에 나타납니다. 이 두 용어가 함께 나타나지 않겠습니까? 동일한 문서에서 발생하지만 빈도가 다릅니다. tf-idf의 PMC를 사용하면 (주파수의 차이 때문에) 동시에 발생하지 않는 결과가 생깁니다.
이 시점에서 PMC 값은 -1에서 1로 변경됩니다. 나는. (PMC = 1)과 반대되는 단어 (PMC = -1)를 가질 수 있습니다. 이것이 당신이 모델링하는 도메인에 맞습니까? 그렇지 않은 경우 PMC에 1을 추가하십시오.
또 다른 대안은 코사인 유사성을 사용하는 것인데, 이것은 PMC와 매우 유사하지만 약간 다른 특성을 가지고 있습니다. 또한 어떤 경우에는 실제 공동 발생에만 관심이있을 수 있으며 빈도는 신경 쓰지 않습니다.
이 모든 방법은 '정확합니다'라고 말합니다. 더 중요한 질문은 모델링하는 문제에 가장 적합한이 방법들 중 어느 것인가입니다. 대부분의 경우 이론적으로는 결정할 수 없지만 여러 대안을 시도하고 문제 도메인에 가장 적합한 것을 테스트하는 경우에만 가능합니다.
EDIT (아래 코멘트에 대한 몇 가지 발언) :
코사인 유사성이 실제로 도움이 되는가, 그러나 당신이이 경우에 다르게 생각해야합니다. 물론 문서의 용어에 대한 용어 - 주파수 벡터를 생성 한 다음 이러한 문서 용어 - 주파수 벡터에 대한 코사인 유사성을 계산할 수 있습니다. 당신은 정확하게 당신에게 서로의 게시물의 유사성을 줄 것이라고 지적했습니다. 그러나 이것은 내가 의미했던 것이 아닙니다. 전체 용어 - 빈도 행렬이있는 경우 벡터를 생성 할 수도 있습니다.이 벡터는 단일 용어로 각 용어의 빈도를 기술합니다. 이러한 벡터의 코사인 유사성을 계산할 수도 있습니다. 이렇게하면 문서 공동 발생 (co-occurence)을 기반으로하는 용어의 유사성을 얻을 수 있습니다.
그것에 대해 이런 식으로 생각 (하지만 먼저 우리는 약간의 표기가 필요합니다) :
용어 i
문서 j
(내가 여기 IDF을 무시하고 있습니다 등장 횟수를 나타내는 f_{i,j}
을 할 수 있기 때문에 그냥 것 문서 대신 용어를 처리 할 때 취소). 또한 F=(f_{i,j})_{i=1...N,j=1...M}
을 전체 문서 - 용어 행렬 (용어는 행과 문서를 행으로 표시)을 나타냅니다. 마지막으로 |F|_c
행렬 F
을 호출합니다. 각 열은 l^2
표준 및 |F|_r
행렬 F
행렬로 정규화됩니다. 각 행은 l^2
표준에 따라 표준화됩니다. 물론 평소와 마찬가지로 A^T
은 전치 부호 A
을 나타냅니다. 이 경우 당신은
(|F|_r)*(|F|_r)^T
같은 용어를 기반으로 모든 문서 사이의 정상 코사인 거리 이것은 당신에게 문서의 유사성을 설명하는 MxM
매트릭스를 줄 것이다있다. 대신 용어의 유사성을 계산하려면
, 당신은 단순히 당신에게 문서의 공동 발행 수에 따라 용어의 유사성을 설명하는 NxN
매트릭스를 제공
(|F|_c)^T*(|F|_c)
을 계산합니다.
PMC의 계산은 기본적으로 동일하며 각 행렬 곱셈의 행과 열에 적용되는 정규화 유형이 다릅니다.
이제는 다른 게시물에 termA
이 문서에 나타나면 같은 문서에 termB
도 표시 될 가능성이 얼마나 높습니까? 또는 형식적으로 말하기 p(termB | termA)
여기서 p(termX)
은 문서에 나타나는 termX
확률을 나타냅니다. 즉 다시 계산이 매우 간단 완전히 다른 동물이지만 :
1. Count the number of documents in which `termA` appears (call it num_termA)
2. Count the number of documents in which both `termA` and `termB` appear (call it num_termA_termB)
then p(termB | termA)=num_termA_termB/num_termA
이 공동 occurenct 가능성 실제로 사용의 통계적 측정치이다. 알 수 있듯이, p(termB | termA) == p(termA | termB)
관계는 유지되지 않으므로 MDS를 통한 클러스터링에이 공동 측정 값을 전혀 사용할 수 없으며 가장 가능성이 큽니다 (말장난 의도 없음).
제 제안은 PMC와 코사인 유사성을 시험해 보는 것입니다 (위에서 볼 수 있듯이 정규화가 다르므로 두 가지를 모두 구현하는 것이 빠름). 그리고 클러스터링 후에 어느 것이 더 잘 보이는지 확인하십시오.
일련의 문서를 기반으로 주제를 클러스터링하는 고급 기술이 있습니다. 용어 문서 행렬의 주성분 분석 (PCA) 또는 비 음수 행렬 요소 분해 (non-negative matrix factorisation) 또한 자주 사용됩니다 (잠재 의미 해석 또는 LSA 참조). 그러나 이것은 유스 케이스에 과도 할 수 있으며 이러한 기술은 수행하기가 훨씬 더 어렵습니다. PMC와 코사인 유사성은 구현이 간단하고 (코사인 유사도가 약간 더 간단합니다. 정규화가 더 쉽기 때문에) 사 망하기 쉽고 절대적으로 잘못 될 수있는 절대적인 이점이 있습니다.
저는 가장 인기있는 주제와 특정 브랜드에 대한 관계를 함께 2 차원지도로 만들려고합니다. 나는 약 2500 소셜 미디어/네트워크 게시물 (페이스 북, 트위터, 보드 등). 나는 토큰 화, filtern (불용어) 및 게시물의 줄기를 세웠다. 그런 다음 모든 문서 (게시물)/용어에 대해 tf-idf 값을 계산했습니다. 이 값을 사용하여 상관 행렬을 계산했습니다. 상관 행렬을 사용하여 다차원 스케일링을 수행했습니다.출력은 모든 주제 (용어)의 "맵"입니다. 함께 발생하는 주제는 함께 발생하지 않는 주제보다 더 가깝습니다. – user1341610
내 생각에 코사인 유사성은 전체 게시물/문서의 유사성을 계산하기 때문에 내 방식에 맞지 않습니다. 필요한 것은 용어가 서로 관련되어 있는지를 측정하는 것입니다. 마치 누군가가 그의 포스트 XY에 글을 쓰면 XZ도 썼을 가능성이 있습니다. – user1341610
@ user1341610 : 내 수정 사항을 확인하고 조금 더 정리해 주시기 바랍니다. – LiKao