ブログ執筆中 このページをアンテナに追加

2009-07-25

Confidence Weightedの挙動を見てた

理論は理解したつもりになって、実装してみたは良いものの、なかなか正体が見えないので、パラメータの更新量を調査してみることにする。

ブログで上手く紹介できないかとと計算機サービスを探してみたところ、instacalcというWebサービスを発見。早速入力してみた。

http://tinyurl.com/mgo69o

M_iはmean margin。パラメータと重みの線形和。|M_i|はi番目の事例がどれだけはっきり分類されているかを解釈することができる。負であれば正解ラベルと分類されたラベルが逆。

V_iはvariance margin。事例に出てきた素性の出現回数が少ないと素性に対応する分散は大きい値になる(出現するごとに分散は小さくなっていく)ので、V_iが大きい値になるということは、事例の素性が余り出てきていないと解釈することができる。ということはV_iはi番目の事例が目新しいほど高い値を示していると考えることが出来そう。こちらは正値のみ。

Cはconficdence parameter

alphaがM_i, V_i, Cを元に算出された更新量


V_iが大きくなるとalphaも大きくなる。これは、目新しい事例だと大きく更新してやろうとする、CWの計算通り。

M_iが正値で大きくなると、alphaは0になり、M_iが負値で小さくなるほどalphaは大きい値になる。事例とラベルが同じだとほとんど更新せず、逆だと大きく更新してくれる。

また、Cが大きいとalphaも大きくなる。Cが大きくなれば更新量も大きい

以上をまとめると、分類が誤っていた時、また分類が正しかったとしても目新しい事例を受け取った時はパラメータを大きく更新し、正しくて目新しくもないときはパラメータの更新量を小さく、もしくは全く更新しないようにする、ということになる。そして、その更新量はCにより制御できる、と。解析すればするほどよくできてる分類器だということが分かる。

んーでも、正例と負例の割合が偏ってる場合はどうなるんだろう。例えば負例がすごい多くて、久しぶりに正例が出てきた場合、既に目新しくない事例だとCWに理解されて全然更新されなくなってしまうという事態がおこる可能性が十分ありうる。インスタンスの値を上手く調整してやる必要が有りそうだ。

mamorukmamoruk 2009/07/26 06:09 SVM とか他の分類器でも正例と負例は同じくらいじゃないとうまく動かないと思いますが、learning from imbalanced data の研究はけっこうあるらしいので、もしかするとなにか対策あるのかもしれませんね。(キーワードだけですみません)

tomitytomity 2009/07/26 11:54 >mamorukさん
どうもお久しぶりです

ビショップ本でもそういう話がちらりと書かれていたのは知っていて、例えば正例:負例=2:1だったら正例の特徴パラメータを半分にしてやるとか調節するという方法もあり、この方法を試してみたんですが僕がやっているケースだと上手くいっていないっぽいです。

しかし、正例と負例のバランスが異なる際の学習が一大分野だとは知らなかったです。learning from imbalanced dataというんですね。情報ありがとうございます!

トラックバック - http://d.hatena.ne.jp/tomity/20090725/1248540839