読者です 読者をやめる 読者になる 読者になる

naoya_t@hatenablog

いわゆるチラシノウラであります

ナイーブベイズ分類器の実装とか(その2)〜新アルバムの楽曲で畑さん/こだまさん分類器を試してみた〜

1/17のエントリ「ナイーブベイズ分類器の実装とか 〜畑さん/こだまさん問題〜」の続編。

とあるアーティスト(仮にMとします)の新アルバムが2/29にリリースされたので、前回作ったナイーブベイズ分類器に過去の3アルバムのデータを訓練データとして与え、新アルバムの楽曲を分類してみようかと。

D-Formation(初回限定盤)(Blu-ray Disc付)

新アルバム(仮にDとします)にはH/K作品が計4曲(各2曲)入っていますが、多変数ベルヌーイモデル/多項モデルのどちらを用いても

=====================================
Contact + Parade + SAL -> D-Formation
=====================================
<Metamorphosing Door>,作詞:こだまさおり → こだまさおりに分類 ◎
<Planet patrol>,作詞:畑亜貴 → 畑亜貴に分類 ◎
<KEY FOR LIFE>,作詞:こだまさおり → こだまさおりに分類 ◎
<TERMINATED>,作詞:畑亜貴 → 畑亜貴に分類 ◎
正答率: 100.00%

全問正解でした。余裕のようです。

学習 分類 多変数ベルヌーイMAP 多項MAP
C+P+S D 100.00% 100.00%

各クラスに属する訓練文書数のバランスについて

この辺りがまだちゃんと理解しきれてない感があるのだけれど、1/17のエントリでは

  • そのまま多変数ベルヌーイモデルを適用するとなぜかほとんど全ての楽曲をクラスHに分類してしまって(テストデータが各クラス同数の場合、正答率50%という結果になる)残念。ちなみにクラスHに属する文書はクラスKの文書の2〜3倍ほどあります。
    • 多項モデルではそれなりの分類をしてくれるので調整不要なのだけれど、変数ベルヌーイモデルの比較のため、同一のHK同数データを利用しています。
    • 多変数ベルヌーイモデルでいまいちなのは訓練文書単位で単語の生起の有無を見る多変数ベルヌーイモデルの性質だろうか、あるいは自分の実装が何か間違っているのだろうか…後で計算式と実装を見返してみよう。
  • テストデータも各クラス同数なら、全部Hに分類した際(=半分が誤分類)に正答率50%が出るし比較しやすい

みたいな理由というか経緯から、各クラス(H or K)に属する訓練文書数をアルバム単位で同数にするという調整をしています。この調整が本質的に必要なものなのか疑問です。

どのアルバムでもクラスH楽曲の方が若干数が多いので、訓練データとして利用するクラスH楽曲をクラスK楽曲の曲数(n)に合わせてチョイスしています。1/17のエントリでは適当に先頭からn曲取っていたのだけれど、いちばん良い結果が出る組み合わせを選んで使うと正答率がここまで上がります(※試したのはそれぞれMAP推定のみ):

学習 分類 多変数ベルヌーイMAP同数 多ベルヌーイMAP全曲 多項MAP同数 多項MAP全曲
C P 87.50% 92.86% 100.00% 100.00%
C S 83.33% 84.62% 83.33% 84.62%
P C 100.00% 100.00% 100.00% 100.00%
P S 91.67% 92.31% 100.00% 100.00%
S C 87.50% 91.67% 75.00% 83.33%
S P 62.50% 78.57% 87.50% 92.86%
C+P S 91.67% 92.31% 91.67% 92.31%
C+S P 87.50% 92.86% 87.50% 92.86%
P+S C 100.00% 100.00% 100.00% 91.67%
平均 87.96% 91.69% 91.67% 93.07%

先頭からn曲の場合

学習 分類 多変数ベルヌーイMAP同数 多ベルヌーイMAP全曲 多項MAP同数 多項MAP全曲
C P 87.50% 92.86% 100.00% 100.00%
C S 83.33% 84.62% 75.00% 69.23%
P C 75.00% 83.33% 100.00% 100.00%
P S 50.00% 53.85% 75.00% 76.92%
S C 62.50% 75.00% 75.00% 76.92%
S P 62.50% 78.57% 75.00% 85.71%
C+P S 75.00% 76.92% 83.33% 84.62%
C+S P 100.00% 100.00% 87.50% 92.86%
P+S C 75.00% 83.33% 100.00% 100.00%
平均 74.54% 80.94% 85.65% 87.36%

と比べてみると、多変数ベルヌーイモデルでも多項モデルでも著しく正答率がUPしています。

おまけ:「各アルバムのクラスH楽曲の部分集合で、訓練データとして用いた時に分類器の性能が最もよかったもの」

上でさらっと「いちばん良い結果が出る組み合わせを使ってみたら」と書いていますが、各アルバム高々_{10}C_{4}程度の組み合わせなので、簡単なパターン総当りプログラムを書いて正答率の最も高いものを選びました。

アルバムC

多変数ベルヌーイモデル 「sleeping terror」「too late? not late...」「夏を忘れたら」「君がくれたあの日」
多項モデル 「詩人の旅」「sleeping terror」「君がくれたあの日」「truth gift」

※「Contact 13th」(クラスH)をアルバムCに入れても良いならほんの少し正答率がUP

アルバムP

多変数ベルヌーイモデル 「Prism in the name of hope」「Lush march!!」「そのとき僕は髪飾りを買う」、「Paradise Lost
多項モデル 「透明パークにて」「Prism in the name of hope」「Lush march!!」「Melty tale storage」

※多変数ベルヌーイの「Prism〜」を「Melty〜」に替えても同率

アルバムS

多変数ベルヌーイモデル 「覚醒フィラメント」「Tomorrow's chance」「サクラピアス」「Falling heaven's now」「Flame」「Perfect energy」
多項モデル 「Tomorrow's chance」「孤独の結晶」「サクラピアス」「Falling heaven's now」「Flame」「Perfect energy」