2017-12-31 12 views
1

ELKI DBSCAN을 사용하여 단어 벡터를 클러스터하려고합니다. 300 차원의 단어 벡터를 클러스터하기 위해 코사인 거리를 사용하고 싶습니다. 데이터 세트의 크기는 19,000 단어 (19000 * 300 크기 매트릭스)입니다. gensim word2vec하고 목록 출력을 이용하여 계산 이들은 wordvectors이 다음은 CSVELKI DBSCAN 엡실론 값 문제

로 저장 제가

-dbc.in 인터페이스

KDDCLIApplication 전달 된 커맨드 "는 D : \ w2v \ vectors.csv"-parser .colsep ' ","'- 알고리즘 클러스터링 .DBSCAN -algorithm.distancefunction CosineDistanceFunction -dbscan.epsilon 1.02 -dbscan.minpts 5 -vis.window.single

나는 엡실론 값으로 놀았고 그렇게하면서 시도했다. 3 값은 0.8, 0.9, 1.0이다. 0.8 & 0.9 - "이웃이 거의 없습니다. 엡실론은 너무 작을 수 있습니다." 1.0 동안 - "매우 많은 이웃들이 있습니다 .Epsilon이 너무 클 수 있습니다."

여기서 내가 뭘 잘못하고 있니? 나는 ELKI에 대해 매우 익숙해 져서 어떤 도움도 받으실 수 있습니다.

답변

1

300 차원에서, 당신은 차원의 저주를 보게 될 것입니다.

인기있는 주장과는 달리, 코사인에 대한 차원의 저주가 있습니다 (코사인은 정규화 된 벡터에서 유클리드와 동일하므로 유클리드보다 "최상의"차원 일 수 있음). 코사인 애플리케이션을 자주 사용하는 이유는 본질적인 차원이 텍스트의 표현 차원보다 훨씬 작다는 것입니다. 즉 어휘에 수천 단어가 포함될 수 있지만 두 문서의 교차 부분에는 소수만 나타납니다.

단어 벡터는 일반적으로 스파 스하지 않으므로 본질적인 차원이 상당히 높을 수 있으며 차원의 저주가 표시됩니다.

그래서 Cosine 거리를 집중시키는 것이 놀라운 일이 아니며 몇 자리 수의 정밀도로 임계 값을 선택해야 할 수도 있습니다.

명백한 이유로 1.0은 코사인 거리에 대한 의미없는 임계 값입니다. 최대 코사인 거리는 1.0입니다! 예, 예를 들어 0.95와 0.99를 사용해보십시오.

KNNDistancesSampler를 사용하여 DBSCAN 매개 변수를 선택하거나 OPTICS를 사용할 수 있습니다 (단일 임계 값이 아닌 다른 임계 값을 가진 클러스터를 찾을 수 있음).

매우 특정한 시나리오 (대체 가능성)에 대해 단어 벡터가 학습된다는 점에 유의하십시오. 그들은 "왕 - 남자 + 여자 = 여왕"의 예에 따라 널리 해석되는 보편적 인 것이 아닙니다. "왕의 남자 + 소년"을 시도해보십시오. 왕의 가장 가까운 이웃이 "여왕"과 "왕"이기 때문에 그 결과는 "여왕"(또는 "왕")을 반환합니다. 그리고 "자본"의 예는 훈련 데이터로 인해 지나치게 적합하다. 그것은 종종 "자본, 국가, 어쩌구"로 텍스트를 시작하는 뉴스 기사에 대해 교육을 받았습니다. "자본"을 생략하고 "국가"를 생략하면 거의 동일한 문맥을 갖게됩니다. 따라서 word2vec 모델은 "대체 가능"하다는 것을 알게됩니다. 자본이 주요 미국 신문의 기반이되는 한 (예 : 베를린, 파리)이 방법이 효과가 있습니다. Toronto, New York, Sydney와 같은 주요보고 허브가있는 캐나다, 미국 또는 호주와 같은 국가에서는 종종 실패합니다. 그리고 그것은 벡터가 자본이 무엇인지를 배웠다는 것을 증명하지 못합니다. 처음에 작동 한 이유는 뉴스 교육 데이터에 지나치게 적합하기 때문입니다.

+0

광학을 위해 ELKI에는 최신 버전의 여러 기능이 있습니다. 단어 벡터에 어떤 방법을 제안합니까? – Enthusiast

+1

기본 OPTICSHeap이 좋을 것입니다.확률적인 근사치 인 FastOPTICS를 사용해 볼 수도 있지만 매개 변수를 조정해야합니다. Xi 추출을 사용하십시오. –

+0

도와 줘서 고맙습니다 !! – Enthusiast