6

NLP에서는 항상 피쳐의 크기가 매우 큰 경우입니다. 예를 들어 한 프로젝트의 경우, 피쳐의 크기는 거의 20,000 (p = 20,000)이며, 각 피쳐는 특정 단어 나 바이 그램이 종이에 표시되는지 여부를 나타내는 0-1 정수입니다 (한 종이 R^{p} $의 데이터 점 $ x \입니다.자연 언어 처리 (NLP)에서 효과적인 차원 축소는 어떻게합니까?

필자는 기능 중 중복성이 매우 커서 크기 축소가 필요하다는 것을 알고 있습니다. 나는 세 가지 질문을 가지고있다 :

1) 나는 10 천개의 데이터 포인트 (n = 10,000)를 가지고 있고, 각 데이터 포인트는 10 천개의 피쳐 (p = 10,000)를 가지고있다. 치수 축소를 수행하는 효율적인 방법은 무엇입니까? R^{n \ times p} $의 행렬은 너무 커서 PCA (또는 SVD, 잘린 SVD는 괜찮습니다.하지만 SVD가 바이너리 피처의 치수를 줄이는 좋은 방법이라고 생각하지 않습니다)와 Bag of Kords (또는 K-means)는 $ X $에서 직접 수행하기가 어렵습니다 (물론, 드문 드문). 저는 서버가 없으며 PC를 사용하고 있습니다 :-(.

2) 두 데이터 포인트 간의 유사성 또는 거리를 판단하는 방법은 무엇입니까? 유클리드 거리가 바이너리 기능에서는 잘 작동하지 않을 수도 있습니다. L0 표준은 어때? 너는 무엇을 사용하니?

3) SVM 머신 (또는 다른 커널 메소드)을 사용하여 분류를 수행하려면 어떤 커널을 사용해야합니까?

많은 감사!

+3

이 지역 사회를위한 좋은 질문처럼 보인다 http://stats.stackexchange.com/ :

여기 파이썬에서 다음과 같이 분류 작업을 수행하는 방법에 대한 좋은 튜토리얼이있다 – Leo

답변

2

1) 치수 감소가 필요하지 않습니다. 정말로 원한다면 L1 형벌 선형 분류기를 사용하여 가장 유용한 기능으로 줄일 수 있습니다.

2) 코사인 유사성이 자주 사용되거나, TFIDF 재조정 된 벡터의 코사인 유사성이 사용됩니다.

3) 선형 SVM은 많은 기능으로 가장 잘 작동합니다. http://scikit-learn.org/dev/tutorial/text_analytics/working_with_text_data.html