樋口先生さま
お世話になります、袋井と申します。
いつも、ご丁寧にご教示いただき、ありがとうございます。
心より御礼を申し上げます。
最初は不慣れなこともあり、先生のお手を何度も煩わせてしまいましたが、
お陰さまで、ベイズ学習ツールを理解でき、無事に使いこなしております。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
1.先にご報告したエラー
結果的には、私の操作ミスが原因でした。
【ベイズ学習による分類】では、私が想定していたメッセージ表示の流れとは違っており、操作ミスをしていました。
私が想定しているメッセージ表示の流れとは、以下のようなものです。
(例)
【前処理】−【前処理の実行】
「この処理には時間がかかる場合があります。続行してよろしいですか?」メッセージ
⇒「OK」ボタン
「砂時計表示」
「処理が完了しました。 経過時間: 00:00:55」メッセージ
しかし、【ベイズ学習による分類】では、このようなメッセージ表示の流れにはなっていませんでした。
【ベイズ学習による分類】−【外部変数から学習】ウィンドウ
⇒「OK」ボタン
「この処理には時間がかかる場合があります。続行してよろしいですか?」メッセージ
⇒「OK」ボタン
【学習結果を新規ファイルに保存】ウィンドウ
⇒ファイル名入力
を行うと、【外部変数から学習】ウィンドウに戻ります。
つまり、「砂時計表示」がなかったために、処理が行われなかったと思ってしまいました。
そこで、やりなおすために、【外部変数から学習】ウィンドウで、もう一度、OKボタンを押してしまっていたことが原因でした。
【ベイズ学習による分類】でも、上述した【前処理の実行】と同じようなメッセージの表示の流れになっていればよいなと思いました。
具体的には、以下のような流れです。
【ベイズ学習による分類】−【外部変数から学習】ウィンドウ
⇒「OK」ボタン
【学習結果を新規ファイルに保存】ウィンドウ
⇒ファイル名入力
「この処理には時間がかかる場合があります。続行してよろしいですか?」メッセージ
⇒「OK」ボタン
「砂時計表示」
「ナイーブベイズモデルの学習が終了しました。今回学習した文書:27」
2.TrueTellerとの比較
結論から言えば、KH coderに軍配を挙げてよいと思います。
kokoro2を題材にして、ナイーブベイズ学習で文書自動分類のベンチマークの報告はなされていないと思いますので、
樋口先生には良いご報告ができました。ご恩返しができました。
ソフトが異なりますので、全く同じ計算条件にはできませんが、採用する語の数を3以上で揃えました。
27ケースを教師データとして学習し、110-27=83ケースを分類データとして自動分類を行い、正解と突き合わせました。
TrueTellerでは、優位度と呼ばれる独自な分類の指標があります。
これが閾値を下回っていると分類先を決めることができずに、「未分類」として残ります。
平たくいえば、分類として自信がもてるものは分類するが、自信がないものは分類を保留する、
というイメージです。
この数値は、推奨値(デフォルト値)を採用しました。
計算結果は、以下のようになりました。
()内数値は、ケース数です。
全体(110)
⇒上( 21)
⇒教師データ(10)
⇒分類データ(11)
⇒○(10)
⇒×( 1) ・・・ 「下」が誤分類された
⇒中( 21)
⇒教師データ( 4)
⇒分類データ(17)
⇒○(13)
⇒×( 4) ・・・ 「上」が誤分類された
⇒下( 57)
⇒教師データ(13)
⇒分類データ(44)
⇒○(39)
⇒×( 5) ・・・ 「上」が誤分類された
⇒未分類(11)
自信をもって分類できたのは、110-11=99ケースです。
残り11ケースについては、分類の自信がなく、保留されたということです。
自信をもって分類した99ケースについては、全部が○かといえばそうではなく、計10ケース(1+4+5)が×です。
その先の作業としては、未分類(11)を分類できるように、優位度の閾値を下げていくことになりますが、
時間がなくてやっておりません。
また時間を確保してやってみたいと思いますが、恐らく、誤分類ケースが増えてくるのではないでしょうか?
一方、KH coderは、私の計算結果では、110ケースのうち、○が103、×が7でした。
ということで、KH coderに軍配を挙げてよいと思います。
さすが、樋口先生です。