【Doc2Vec:その4】評価値向上の検証

前回、簡単なモデル作成まで行いました。

文書内の区分ごとで比較したところ文章が長い方が評価結果が良い傾向になりました。しかし、パラメータ調整することや、学習データに手を加えるなど評価値を上げる方法はいくつか考えることができます。

そこで今回はパラメータ調整や学習データに手を加えた場合にどのように評価値が変わるのか検証した結果を記載していきます。

パラメータ調節

Doc2Vecでは学習する際にいくつかのパラメータを必要とします。(指定しない場合はデフォルトの値で実行される)

今回は4つのパラメータを変更して実行します。変更したパラメータは以下の4つです。

  • ”dm”:単語の出現順序を考慮するかどうかを決めるもの。(0は考慮しない。1は考慮する)
  • ”vector_size”:文書をベクトル化する際のベクトルの次元数を決めるもの。
  • ”window”:同時に何個まで単語を考慮するかを決めるもの。
  • ”min_count”:全体であまり出現しない単語を考慮しないようにするもの。(”min_count”以下の出現回数の単語はないものとして扱う)

パラメータ調整の評価結果

  dm   vector_size  window  min_count  評価値 
01045161797.8
11045133829.8
030045215785.0
130045184506.2
0300165215459.2
1300165126838.4
03001650212035.4
13001650129055.2
【表1】パラメータ毎の評価値(一部のみ)

パラメータを変更しつつ実行していくと、上記の表のような結果となりました。

少し予想外だったのが単語の出現順序を考慮しない方が評価が高くなる傾向にあったことです。
学習データ数が3万件以上とかなり多いのでベクトルの次元数は多くしても問題なく学習ができているようです。
”window”は”dm”が0のときは大差ないですが、1のときは広くしすぎると上手く学習ができてないことが分かります。
”min_count”による差はあまりないように見受けられます。
しかし、”dm=0”の順序を考慮しない場合は”min_count”が大きくなるほど評価が下がり、逆に”dm=1”の順序を考慮する方では”min_count”が大きいほど評価が高くなるという結果になりました。

全体の傾向では単語の順序を考慮せず、”vector_size”は大きく、”window”は小さい方が評価が高くなりました。(”min_count”はそこまで大きな差はない)

学習データに手を加える

今回は学習に使う文章にTF-IDFを用いて単語をピックアップして、それらの単語だけで学習をおこなってみました。

TF-IDFとは何かという話は長くなるので割愛し、簡単にどのようなものかだけを記すなら。
”TF-IDFとは文書内で重要(特徴的)となる単語”を見つける手法となっています。
前回も例に挙げた童話を例に挙げると、”鬼”や”サル”などの少数の童話でしかでない単語は文書内で特徴的な単語であるとされます。一方で”むかしむかし”などの多くの文書で出てくるような単語は特徴的な単語ではないとTF-IDFでは判断されます。

このTF-IDFという手法を用いて文書内の特徴的な単語のみを残し、特徴的な単語以外は排除して学習を行い評価値がどのように変化するかを調べてみました。

※パラメータの調整はしていない。

TF-IDF後の学習評価結果

  区分  前回記事の評価値TF-IDF後の評価値
要約107410.2105854.4
請求130831.0130715.0
詳細213691.4211746.8
【表2】TF-IDFの有無による評価値の比較

誤差の範囲とも捉えられますが、3つのすべてで評価値が若干下がっていました。

前回、文章が長いほど良い結果になりやすいという結果でしたが、重要ではなさそうな単語を排除し、文章が少し短くなったため若干評価が下がったと考えることもできる今回の結果となりました。