[掲示板へもどる]
一括表示

  [No.1439] 「ベイズ学習による分類」に関して 投稿者:今井  投稿日:2013/10/18(Fri) 14:08:43

樋口先生

お世話になります。
今井と申します。

「外部変数から学習」⇒「学習結果を用いた自動分類」の処理に関して以下の点についてご教示いだだきたく宜しくお願い致します。

1. 自動分類の際、学習に使用しなかった文書は全て、学習した分類のどれかに必ず分類されます。
 ⇒自動分類する文書が、学習に使用した文書との相関性が低い(Scoresの差が小さい?)場合、あえて分類せずに空白出力とするようなことは可能でしょうか。

2. 上記1.が困難である場合、自動分類実行後に分類ログファイルのcoresを確認して相関性が低いと思われるものを後処理で抽出できれば良いと思いますが、分類ログは1文書毎での表示となっており文書数が多い場合は利用は困難です。
 ⇒分類ログをcsv形式等で全文書について出力する事は可能でしょう
か。

3. 上記2.が困難である場合、分類ログファイル(xxxx.nbl)の書式や解読方法を開示いただくこと は可能でしょうか。
(エディタでファイルを見てみましたが文字コードの関係か、多くの文字が判読できませんでした)

《質問の背景》特許公報の分類に利用できないかと期待しております
が、全体数に対して少数の特異な内容の公報(学習文書のどれにも
類似しないもの)を検出したいため。


  [No.1441] Re: 「ベイズ学習による分類」に関して 投稿者:HIGUCHI Koichi  投稿日:2013/10/18(Fri) 21:55:33

こんにちは、樋口です。書き込みありがとうございます。

KH Coderの機能を相当詳しくお調べいただいているご様子で、喜ばしく拝読い
たしました。

さて、少数の特異な文書を見つけるということでしたら、文書のクラスター分
析を実行して、結果を見るのも一手です。文書数が1といった小さなクラスタ
ーを形成する文書は、「ほかに似た文書が無い特異なもの」である可能性が高
いです。

それに対して、ベイズ学習を使う場合、「既知のカテゴリーの典型的な文書群
」を準備しておけば、「既知のカテゴリーとは一致しない文書」を見つけられ
る可能性があります。学習用の文書群を上手く準備することで、より狙いを絞
れるかもしれません。

ただし、お書きいただいた1. 2.ともに、実現するためにはKH Coderのソース
コードに手を入れる必要があります。また、いずれもそれなりに大がかりな編
集になると思います。ちなみに、1.を実現するためには、どの程度スコア(の
差)が小さいければ空白にするかという閾値を決める必要があります。この閾
値を決めるためには、2.が必要になるでしょう。

こうした機能追加(ソースコードの編集)について、「是非に」ということで
したら有償でうけたまわります。条件や費用の詳細についてはメールでお問い
合わせください。

※企業様向けのこうした有償サポートは、コンサルティング営業というよりも、
研究成果を社会に還元するためのアウトリーチ活動として行うものです。その
ため、案件内容であったり、樋口の教育研究活動の立て込み具合であったりに
よっては、お引き受けできない場合もあることを、あらかじめご了承ください。

3. につきましては、既に公開しているKH Coderのソースコードそのものから
読み取っていただく以外には、今のところ資料がありません。また、ある程度
プログラムで操作・計算をしないと、画面表示の状態にならないような、必要
最小限のデータを保存しています。


なお1.2.3.とは異なるアプローチとして、KH Coderで作成した「文書×抽出語
」表を、他の機械学習ソフトで分析するというアプローチもあるでしょう。私
自身きちんと使ったことは無いのですが、Wekaというソフトがこの分野では有
名です。もしかしたら1.のような機能が元からあるかもしれません。

[追記]
あるいは、仮にKH Coderに機能を追加するにしても、必ずしも樋口に依頼しな
くとも、任意のPerl開発を扱う会社に依頼していただくことが可能です。KH
Coderはソースコードを公開している(フリーソフトウェアである)ためです。

以上、ご検討ください。


  [No.1446] Re: 「ベイズ学習による分類」に関して 投稿者:今井  投稿日:2013/10/21(Mon) 13:47:38

Re: 「ベイズ学習による分類」に関して (画像サイズ: 1153×667 202kB)

樋口先生

早速ご丁寧な回答を頂きまして誠にありがとうございます。

ご教示頂きました複数の手段(下記)にてこれから再度試行してみたいと思います。

1. クラスター分析による特異な文書検出
2. ベイズ学習にて「既知のカテゴリーとは一致しない文書」を見つける
3. 「文書×抽出語」表を、他の機械学習ソフト(Weka)で分析する

1.について取り急ぎクラスター分析を当方のデータにて実行してみたのですが
途中で添付のようなエラーメッセージが出て中断してしまいます。
オプション設定を色々変えてみたのですが上手く行きませんでした。
設定不備など、もしお心当たりがありましたらご教示お願いします。

上記2.につきまして、申し訳ありませんがもう少し具体的にお教えください。
当方で実施した ベイズ学習⇒自動分類の手順は、
対象文書から、約15%ほどの段落をランダムにサンプリングして8カテゴリ程度
に分類して教師データとし、この学習結果を元に残りの約85%を自動分類する、
というものです。
小生の理解不足で申し訳ありません。

上記3.につきましては、ご教示いただいたソフトを入手しましたのでこれから
トライしてみます。

以上、大変お手数をお掛け致しますが宜しくお願い致します。


  [No.1447] Re: 「ベイズ学習による分類」に関して 投稿者:HIGUCHI Koichi  投稿日:2013/10/21(Mon) 14:25:32

こんにちは、樋口です。書き込みありがとうございます。

まずクラスター分析のエラーですが、もしエラーが複数回表示されている場合
は、最初のエラーが特に重要ですので、最初のものの内容をお知らせいただけ
ると助かります。

また漱石「こころ」のチュートリアルデータで、集計単位を「H2」とした場合
に、正常に文書のクラスター分析が行われるかどうかをご確認いただけますと
幸いです。「こころ」で正常に終了するようでしたら、お使いのデータに(例
えば文書数が多すぎるといった)何らかの原因があるのかもしれません。

> ベイズ学習にて「既知のカテゴリーとは一致しない文書」を見つける

もちろん、既に取り組んでいらっしゃるように、ランダムサンプリングした文
書を学習に使うのも1つの手だと思います。

私が書きましたのは、学習用文書を準備するために、ランダムサンプリングを
行うのではなく、人手でカスタマイズするのも良いかもしれないということで
す。

例えば学習用の文書として、「パソコン」に関するもの50ほどと、「(二つ折
り型の)ケータイ」に関するもの50ほどを準備しておきます。そして学習と分
類を行えば、「スマホ」に関する文書は、「パソコン」にも「ケータイ」にも
あてはまらない「未知のもの」と判定し、発見しうるでしょう。

この場合は「パソコン」「ケータイ」が「既知のカテゴリー」、「スマホ」が
「未知(=既知のカテゴリーに一致しない)」ということになります。

「パソコン」「ケータイ」の他にどんなカテゴリーの文書を学習用に準備する
かということによって、「未知」の文書として発見される文書が変化するで
しょう。すなわち、「未知」の文書としてどんなものを発見するかをコントロ
ールできるでしょう。

書きたかったのはそういうようなことなのですが、伝わりますでしょうか。


  [No.1448] Re: 「ベイズ学習による分類」に関して 投稿者:今井  投稿日:2013/10/21(Mon) 18:18:55

Re: 「ベイズ学習による分類」に関して (画像サイズ: 865×847 242kB)

樋口先生

迅速なご回答、誠にありがとうございます。

クラスター分析でのエラーの件
「こころ」のH2の集計での分析は全く問題なく処理できます。
当方のデータでのエラーの表示を添付します(KH coder再立上げ後、再分析)
ご検討宜しくお願いします。(やはりデータ数が多すぎるのでしょうか)

ベイズ学習の件
ご説明ありがとうございます。しかし、

・・・「スマホ」に関する文書は、「パソコン」にも「ケータイ」にも
あてはまらない「未知のもの」と判定し、発見しうるでしょう。・・・

の部分がまだ理解できておりません。
カスタマイズした学習結果を用いて自動分類を実行した場合も、「スマホ」
は、「パソコン」か「ケータイ」のどちらかに必ず分類されてしまうため、
自動分類の結果からは「未知のもの」として発見することはできないのでは
ないかと思います。
「未知のもの」は未知ですから予め学習用に準備することは困難と思います。

小生の理解力不足にて大変ご面倒をお掛けします。
もう少しだけご教示お願い致しします。


  [No.1450] Re: 「ベイズ学習による分類」&クラスター分析のバグ 投稿者:HIGUCHI Koichi  投稿日:2013/10/21(Mon) 20:57:19

こんにちは、樋口です。書き込みありがとうございます。

クラスター分析ですが、10000件程度なら分類できるはずと思って調べてみま
すと、バグがあったことが分かりました。分類はできるのですが、デンドログ
ラム(が大きくなりすぎるために)描画に失敗していました。

そこで、文書数が300を越える場合にはデンドログラム作成を抑制することで
この問題を回避するよう修正しました。また、すべての文書が「分類不可」と
なってしまう場合があるバグも修正しました。

修正版をこちらに置いておきますので、現在お使いのkh_coder.exeのファイル
名をkh_coder.exe.bakのように変更した上で、同じ場所にコピーしてお試しく
ださい。
http://khcoder.info/psnl/tmp/kh_coder.exe

なお、文書数の少ないクラスターを形成する文書群に加えて「分類不可」とな
る文書も、特異な存在と考えられます。この場合は、データ全体で頻出してい
る語群を含まないという意味で、「特異」と言えます。

>> ・・・「スマホ」に関する文書は、「パソコン」にも「ケータイ」にも
>> あてはまらない「未知のもの」と判定し、発見しうるでしょう。・・・
>
> の部分がまだ理解できておりません。
> カスタマイズした学習結果を用いて自動分類を実行した場合も、「スマホ」
> は、「パソコン」か「ケータイ」のどちらかに必ず分類されてしまうため、
> 自動分類の結果からは「未知のもの」として発見することはできないのでは
> ないかと思います。

十分でない説明を繰り返してしまって、大変恐れ入ります。

お書きいただいた通り、現状のKH Coderでは、「パソコン」か「ケータイ」の
どちらかに必ず分類されてしまいます。そのため、「未知のもの」として発見
することはできません。

これは、「[No.1439]でお書きいただいた、1.ないしは2.のような機能が実現
すれば、そういうことが行えるでしょう」という、仮定のお話しとして書いて
いました。

これで、伝わりますでしょうか。


  [No.1455] Re: 「ベイズ学習による分類」&クラスター分析のバグ 投稿者:今井  投稿日:2013/10/22(Tue) 12:58:40

樋口先生

お世話になっております。
毎度の即答、本当にありがとうございます。

修正版の件、問題なく動作する事を確認いたしました。
早急なるご対応ありがとうございました。

また、自動分類に関するご説明、良く理解いたしました。
大変お手間を取らせてしまいまして申し訳ありませんでした。

クラスター分析の利用、及び「文書×抽出語」表の利用、の2手法にて今後
試行を進めたいと思います。
この分野に関する知識・経験が全くありませんので、また質問させて頂く
かもしれませんが、その節はどうぞ宜しくお願い致します。

この度はどうもありがとうございました。