13章に続き14章もテキスト分類の話題だが、今回はベクトル空間も用いた手法について考える。
特徴選択
テキスト分類は、一般に高次元のドキュメント空間になる。
しかしそこにはレアなタームも多く含まれており、それらは分類に誤りを生じさせるので、ノイズと呼ばれる。
これらのノイズをなくし、ドキュメント空間の次元を下げ、テキスト分類の効果・効率を上げたい。これを特徴選択という。
特徴選択の手法としては、以下のようなものがある。
- タームの出現頻度
- MI(Mutual Information)
以下では、MIについて説明する。
ベクトル空間における分類
各ドキュメントをベクトルで表現する。
まず、訓練データセットとして、ドキュメントセットを用意し、各ドキュメントにそれの属するクラスのラベルを付加する。
ここで、同じクラスのドキュメント同士は隣接しており、他のクラスとのオーバーラップはないことにする。
訓練データセットに、新たなドキュメント★を適用させ、そのクラスを求めたい。
ドキュメント★はChinaに属しそうであるが、それをどのように見分けるのか。
以下では、その手法を考えることにする。
Rocchio分類法
適合性フィードバックの考えを用いる。
まず、訓練データに対し、各クラスの重心を求める。
そして新しいドキュメントと各クラスの重心との距離を計算し、最も距離が近いクラスに割り当てる。
しかし、一般にナイーブベイズよりも性能はよくない。
歪んだ分布に対応できないことが原因である。
kNN(k近傍法)
新たなドキュメントに対し、それと最も距離の近いk個の訓練データを見つけ、その中で最も多いクラスに割り当てる。
とても単純で実行が容易であり、またナイーブベイズやRocchio分類法よりも概ね性能がよいが、実行効率はあまりよくない。
訓練データセットが大きい程、kNNの性能はよくなる。
線形分類器
ある閾値を境に、クラスを線形分類するものを、線形分類器という。
以下のように閾値θを求める。
以下の図では、どれが識別線になるのか?
どの識別線も訓練データを正しく分類しているが、異なる結果を生む。
それでは、どの手法が最も誤りの少ない識別線を見付けれられるか?
大きく分けて以下の表のようになる。
これらの線形分類アルゴリズムは、状況により使い分けるとよい。
しかし、上記の線形識別アルゴリズムでは、以下のような非線形データを分類できない。
この場合、kNNではうまくいく。