2

デフォルトで正規化されたベクトルを生成するsklearn.feature_extraction.text.TfidfVectorizerを使用して、すでに TF*IDF 特徴ベクトルに変換されているトレーニング ドキュメントで χ² 特徴選択を実行しました。ただし、上位 K 個の最も有益な機能を選択した後、次元が削除されるため、ベクトルは正規化されなくなります (すべてのベクトルの長さが 1 未満になりました)。

特徴選択後に特徴ベクトルを再正規化することをお勧めしますか? また、B/T 正規化とスケーリングの主な違いもよくわかりません。それらは、SVC などの学習者に対して同様の目的を果たしますか?

あなたの親切な答えを前もってありがとう!

4

1 に答える 1

2

これは実際には多くの質問が1つになっています。tf-idfベクトルで正規化を行う主な理由は、それらのドット積(SVMが決定関数で使用する)を、情報検索におけるドキュメントベクトル比較の主力であるコサイン類似性として容易に解釈できるようにするためです。正規化により、

"hello world"             -> [1 2]
"hello hello world world" -> [2 4]

同じベクトルになるため、ドキュメントをそれ自体に連結しても決定境界は変更されず、これら2つのドキュメント間の類似性は正確に1つになります(ただし、劣線形スケーリングでsublinear_tfは、vectorizerコンストラクターではこれは当てはまりません)。

スケーリングを行う主な理由は、数値の不安定性の問題を回避することです。フィーチャはすでに[0、1]の範囲にあるため、正規化によってこれらのほとんどが処理されます。(これは正則化にも関係していると思いますが、SVMはあまり使用していません。)

お気づきのように、chi²は特徴ベクトルを「非正規化」するので、元の質問に答えるために、それらを再正規化してみることができます。scikit-learnドキュメント分類の例にchi²特徴選択を追加するときにこれを行いました。これは、一部の推定者に役立ち、他の推定者に悪影響を及ぼしました。正規化されていないtf-idfベクトルでchi²を実行してみて(この場合、設定を試してみることをお勧めしますsublinear_tf)、後でスケーリングまたは正規化を実行することもできます。

于 2013-03-06T13:21:39.400 に答える