スパムメールフィルターの開発にチャレンジ!
omegawvw
コンペを開催してくださった運営の皆様、コンペの参加者の皆様に感謝申し上げます。スパムメールの判別という身近な題材で取り組みやすく、自然言語処理の勉強になりました。
特にcha_kabuさんの下記のトピックが参考になり、このbaselineをもとにコンペを進めていきました。MultinomialNBを使ったbaseline(参考)
疑似ラベルの作成とモデルの学習を繰り返しました。他のトピックにもあるように pseudo-labeling がよく効きました。
解法の詳細ありがとうございます。 すみません。コンペ自体がはじめてで不勉強なため教えて下さい。 このモデルを新規のメールの判別に利用しようとした場合 \
>テストデータ内のスパムメールの確 >率が上位17000件をスパムとし、>そ れ以外をスパムでないとする \
この部分はどのように機能させればよいのでしょうか? このモデルは今回のコンペのデータセットでしか使えないモデルなのでしょうか? お忙しいところ大変恐縮ですが、ご回答いただけるとありがたいです
ご回答いただきありがとうございます。\
やはり、新規メールの判定では後処理の部分を使用できず、Step3までのモデルで判断するしかないとのことですね。テストデータの分割数は公開されている情報なのでそれを使用すること自体はルール違反でないと私も認識しています。ただ、結果的に作成されたモデルがテストデータにしか使用できないようなものになっていることに関しては疑問が残ります。今回のコンペの趣旨は基本情報に書かれている通り「電子メールのテキストデータより、スパム・非スパムを判別する分類モデル」だと私は認識しています。しかし、omegawvw様が作成されたモデルは「テストデータの分類モデル」となってしまっていて、正しい意味での「テキストデータの分類モデル」になっていないように感じます。\
このような結果でモデルの精度を評価することは正しくないように思われます。Step3までの結果で勝負すべきだと思います。\
この辺についてご見解をお聞かせいただけないでしょうか?
omegawvw様お付き合いいただきありがとうございました。私としては大変有意義でした。最終的な判断は運営殿にお任せしたいと思います。
To 運営殿omegawvw様のモデルの可否についてご判断いただけないでしょうか? 私の主張は、テストデータの割合の情報は公開されているので使用することはルール違反ではないが、提出するデータのスコアを上げるために新規テキストの判定が不可能(テストデータから任意のテキストを1つ取り出しても判定不能)なモデルにしてしまうことは本来の目的である「テストデータの分類モデルの作成」が達成されておらず、モデルとして採用できないのではないか? です。
omegawvw様の主張に関してはomegawvw様のコメントをご参照ください
ご多忙のところお手数おかけして申し訳ありませんがご判断よろしくお願いいたします。
haruai様、omegawvw様
ディスカッションありがとうございます。haruai様のご意見、最もと存じます。今回のコンペにおいては、いただいたご指摘はあると想定したうえで、以下背景のもとあえて比率を公開する判断をいたしました。
■比率公開に至った背景今回 異常検知モデルの開発をテーマとしたコンペとするために、データ量の制約上、非spamデータのほとんどをtrainによせる必要があり、結果的にtrain, test dataで非spam / spamの比率が大きく異なることとなりました。
そのため、・非spam / spamの比率を設定しバリデーションをかける行為が続出すると想定されたこと・露骨に比率が設定されていなかったとしても、事前に知ったうえでパラメータチューニングした人が有利になることがあるならば避けたい
の2点理由により、公平性を担保できなくなるくらいなら予め公開してしまった方が良い、と判断させていただきました。
本コンペにおきましては、情報としてspamデータの件数を公開しておりましたため、omegawvw様の対応につきましては許容されるものとさせていただきます。混乱を招くこととなりまして申し訳ございませんが、ご確認のほどよろしくお願いいたします。
運営殿\
少し認識の違いがあるようなので確認させてください、「比率を公開すること」、「それを利用すること」自体を問題視しているわけではありません。使い方に問題があるのでは?という問いかけだったのですが、ご回答いただいた内容が「公開された比率を使用すること」にフォーカスされているように感じます。つまり、テストデータが7838 : 17000に分割されるようにspamの判定閾値を0.5⇒0.48にするという処理なら新規メールにも使用可能なので問題ないが、テストデータを7838 : 17000に分割するは一般性を欠く処理なので問題があるという認識です
本来、スパムメールの判定モデルの性能評価の手段としてテストデータによる評価があるはずなのに、テストデータのスコアを上げることが目的になっており、手段と目的がチグハグになっていると思います。この点も踏まえ問題ないとの認識でしょうか?
haruai様
なるほど、問題意識について理解いたしました。今回の後処理は、テストデータのラベル割合という情報に過度に依存した手法なので、一般的な問題設定の場合には適用できない。よって、コンペティション本来の趣旨にそぐわないということですね。
正直なところ、コンペ設計時の想定が少々不十分だったと感じております。おそらく、以下のようなデータ設計・ルール設定のほうが良かったと思っています。・testデータについても非スパム/スパムの比率をtrainと合わせたうえで、testデータ側の比率を非公開とする・モデル構築に使ってよい/よくない情報を明記する・「趣旨に即したモデル」を開発することを明記する (自分の手法がOKか否か疑問に感じ場合はその都度運営に質問)非常によい教訓なので、今後のコンペ設計の方針として採用させて頂きます。ご指摘、誠にありがとうございます。
ただ、今回のコンペに限っては上記に関して明記されておらず曖昧なところがあったため、失格とはできないので可とさせて下さい。
ご確認のほど、よろしくお願いいたします。
運営殿
ご回答いただきありがとうございました。承知いたしました