当たり前ですけど、学習データって大事です。
2009-11-19 20:57:19 Theme: NaiveBayes
最近仕事で spam 判別器なんての作成していたんですが、この spam の分類器を作成していて思ったことがあります。
自分も割とそうなのですが、いわゆる精度を上げるために、アルゴリズムに傾倒してしまうようなことが普通にあって、
ベイズがベイジアンネットになり、SVMになり、SVM+カーネルロジスティックのBoostingになり・・・って具合でどんどん難しいアカデミックなところを攻めてしまうわけですが、
しかしながら実際の所、純粋に精度を上げるためには、
実はアルゴリズム云々よりも、
学習データの作りかたの方がよほど大事なんじゃないかなぁ?ってのが、最近の私の感想です。
この前、2値問題のスパム判定やってたんですが、
久々に学習データを見直すって話で、学習データ数を3倍に上げて、変数選択を見直したら検出数が二倍になり、
更にスパムを5カテゴリくらいに分割して、カテゴリ毎の学習データをそれぞれ作って、どれかスパムカテゴリに入ったらアウト!みたいな判定したら、検出数が3倍になったとかありました。
(無論精度は担保してあります。)
まぁ、元々のベースが酷すぎるだろ!?って話は、あるんですけど、
想定するspamの言語空間(spamの定義) と 学習データとの誤差を無くすってのが、いかに大事かってことを身にしみて思った次第です。
単純な エロspamコメント っていっても、実はサービスによって、その表現方法は微妙に異なります。
一例を上げると、サービスのキャリア、つまりPC or 携帯向けのサービスっていう所でも、画面表示力の差で携帯の方が短文スパムが送られてくる比率が非常に高い。
他にも、メッセージの種類、サービス利用者の層、認証のあるなし、などといったところで、やはりそれぞれに微妙に差異があるわけです。
その差異って実は決定的だったりするんですね。
また単純にspam判定されたテキストをそのまま学習データにしていくと、誤差がどうしても生まれるという話もあります。
例えば、一文中にspamだと思われる部分が8割あったとして、残りの2割は普通の文面だったとすると、後者の2割が、結構悪戯するわけです。
具体的には、外れ値除去とか変数選択とか、ホント真面目にやれって話なんですけどね。
まぁ、というわけで、
サービスごとのspamの傾向をうまく学習データに反映させたり、学習データの誤差を取り除くってのは凄く大事って話で、
確かにアルゴリズムをSVMにするってのは、普通というか、大事なことだとは思うんですけど、
それと同じかそれ以上に、学習データの作り方が、あたり前ですけど、改めて大事だなぁっと思った次第です。
終り。
自分も割とそうなのですが、いわゆる精度を上げるために、アルゴリズムに傾倒してしまうようなことが普通にあって、
ベイズがベイジアンネットになり、SVMになり、SVM+カーネルロジスティックのBoostingになり・・・って具合でどんどん難しいアカデミックなところを攻めてしまうわけですが、
しかしながら実際の所、純粋に精度を上げるためには、
実はアルゴリズム云々よりも、
学習データの作りかたの方がよほど大事なんじゃないかなぁ?ってのが、最近の私の感想です。
この前、2値問題のスパム判定やってたんですが、
久々に学習データを見直すって話で、学習データ数を3倍に上げて、変数選択を見直したら検出数が二倍になり、
更にスパムを5カテゴリくらいに分割して、カテゴリ毎の学習データをそれぞれ作って、どれかスパムカテゴリに入ったらアウト!みたいな判定したら、検出数が3倍になったとかありました。
(無論精度は担保してあります。)
まぁ、元々のベースが酷すぎるだろ!?って話は、あるんですけど、
想定するspamの言語空間(spamの定義) と 学習データとの誤差を無くすってのが、いかに大事かってことを身にしみて思った次第です。
単純な エロspamコメント っていっても、実はサービスによって、その表現方法は微妙に異なります。
一例を上げると、サービスのキャリア、つまりPC or 携帯向けのサービスっていう所でも、画面表示力の差で携帯の方が短文スパムが送られてくる比率が非常に高い。
他にも、メッセージの種類、サービス利用者の層、認証のあるなし、などといったところで、やはりそれぞれに微妙に差異があるわけです。
その差異って実は決定的だったりするんですね。
また単純にspam判定されたテキストをそのまま学習データにしていくと、誤差がどうしても生まれるという話もあります。
例えば、一文中にspamだと思われる部分が8割あったとして、残りの2割は普通の文面だったとすると、後者の2割が、結構悪戯するわけです。
具体的には、外れ値除去とか変数選択とか、ホント真面目にやれって話なんですけどね。
まぁ、というわけで、
サービスごとのspamの傾向をうまく学習データに反映させたり、学習データの誤差を取り除くってのは凄く大事って話で、
確かにアルゴリズムをSVMにするってのは、普通というか、大事なことだとは思うんですけど、
それと同じかそれ以上に、学習データの作り方が、あたり前ですけど、改めて大事だなぁっと思った次第です。
終り。
同じテーマの最新記事
- Naive Bayes その一 - s… 10月01日




