IIR14章まとめ

13章に続き14章もテキスト分類の話題だが、今回はベクトル空間も用いた手法について考える。

特徴選択

テキスト分類は、一般に高次元のドキュメント空間になる。

しかしそこにはレアなタームも多く含まれており、それらは分類に誤りを生じさせるので、ノイズと呼ばれる。

これらのノイズをなくし、ドキュメント空間の次元を下げ、テキスト分類の効果・効率を上げたい。これを特徴選択という。

特徴選択の手法としては、以下のようなものがある。

  • タームの出現頻度
  • MI(Mutual Information)

以下では、MIについて説明する。

MI

MIとは情報利得のことで、どの程度の情報かを示してくれる。

以下に定義を示す。

しかし実際には次の式を使って求める。

以下に計算例を挙げておく。

一般に、良い結果を求めるためには、特徴選択は不可欠である。

ベクトル空間における分類

各ドキュメントをベクトルで表現する。

まず、訓練データセットとして、ドキュメントセットを用意し、各ドキュメントにそれの属するクラスのラベルを付加する。

ここで、同じクラスのドキュメント同士は隣接しており、他のクラスとのオーバーラップはないことにする。

訓練データセットに、新たなドキュメント★を適用させ、そのクラスを求めたい。

ドキュメント★はChinaに属しそうであるが、それをどのように見分けるのか。

以下では、その手法を考えることにする。

Rocchio分類法

適合性フィードバックの考えを用いる。

まず、訓練データに対し、各クラスの重心を求める。

そして新しいドキュメントと各クラスの重心との距離を計算し、最も距離が近いクラスに割り当てる。

しかし、一般にナイーブベイズよりも性能はよくない。

歪んだ分布に対応できないことが原因である。

kNN(k近傍法)

新たなドキュメントに対し、それと最も距離の近いk個の訓練データを見つけ、その中で最も多いクラスに割り当てる。

とても単純で実行が容易であり、またナイーブベイズやRocchio分類法よりも概ね性能がよいが、実行効率はあまりよくない。

訓練データセットが大きい程、kNNの性能はよくなる。

線形分類器

ある閾値を境に、クラスを線形分類するものを、線形分類器という。

以下のように閾値θを求める。

以下の図では、どれが識別線になるのか?

どの識別線も訓練データを正しく分類しているが、異なる結果を生む。

それでは、どの手法が最も誤りの少ない識別線を見付けれられるか?

大きく分けて以下の表のようになる。

これらの線形分類アルゴリズムは、状況により使い分けるとよい。

しかし、上記の線形識別アルゴリズムでは、以下のような非線形データを分類できない。

この場合、kNNではうまくいく。

3クラス以上の識別

上記では、2クラスへの分類を前提に説明したが、3クラス以上に分類する場合はどうすればよいだろうか。

以下のように線形識別を組み合わせる?

これは各クラスが独立していることを前提としているが、実際はそうではないので、うまくいかない。

ではどうすればいいのか?(次章以降への布石)