6

NLP では、特徴の次元が非常に大きい場合が常にあります。たとえば、手元にある 1 つのプロジェクトでは、特徴の次元はほぼ 20,000 (p = 20,000) であり、各特徴は、特定の単語またはバイグラムが論文 (1 つの論文はデータ ポイント $x \in R^{p}$) です。

機能間の冗長性が非常に大きいことはわかっているため、次元削減が必要です。3 つの質問があります。

1) 1 万のデータ ポイント (n = 10,000) があり、各データ ポイントには 1 万の特徴 (p = 10,000) があります。次元削減を行う効率的な方法は何ですか? 行列 $X \in R^{n \times p}$ は非常に大きいため、PCA (または SVD、切り捨てられた SVD は問題ありませんが、SVD はバイナリ機能の次元を減らす良い方法ではないと思います) と Bag単語数 (または K-means) を $X$ で直接実行することは困難です (確かに、スパースです)。私はサーバーを持っていません。私は自分の PC を使用しています:-(.

2) 2 つのデータ ポイント間の類似性または距離を判断するにはどうすればよいですか? ユークリッド距離は、バイナリ機能にはうまく機能しない可能性があると思います。L0ノルムはどうですか?あなたは何を使うのですか?

3) SVM マシン (または他のカーネル手法) を使用して分類を行う場合、どのカーネルを使用すればよいですか?

どうもありがとう!

4

1 に答える 1

3

1)次元削減は必要ありません。本当に必要な場合は、L1 ペナルティ付き線形分類器を使用して、最も有用な機能に減らすことができます。

2) コサイン類似度がよく使用されます。または、TFIDF の再スケーリングされたベクトルのコサイン類似度が使用されます。

3) 線形 SVM は非常に多くの機能で最適に機能します。

Python でこのような分類を行う方法に関する優れたチュートリアルがここにあります: http://scikit-learn.org/dev/tutorial/text_analytics/working_with_text_data.html

于 2014-11-21T16:43:03.850 に答える