19

2つのグループに分類された過去数年間に受信した電子メール(約1万通の電子メール)の履歴を持つ電子メールアカウントにアクセスできるとします。

  • 本物のメール
  • スパム

スパム検出に使用できるニューラルネットワークソリューションを作成するタスクにどのようにアプローチしますか?基本的に、電子メールをスパムまたは非スパムのいずれかに分類しますか?

電子メールのフェッチがすでに行われており、分類部分のみに焦点を当てる必要があると仮定します。

私が答えてもらいたい主なポイントは次のとおりです。

  1. NNの入力として選択するパラメーターとその理由を教えてください。
  2. NNのどの構造が、そのようなタスクに最適である可能性が最も高いでしょうか。

また、リソースの推奨事項、または既存の実装(できればC#)は大歓迎です

ありがとうございました

編集

  • プロジェクトの主な側面は、スパム検出でNNアプローチがどのように機能するかをテストすることであるため、ニューラルネットワークを使用することにしました。
  • また、ニューラルネットワークとスパムの主題を単に調査することは「トイプロブレム」です
4

4 に答える 4

24

あなたがNNを主張するなら...私はすべての電子メールについていくつかの特徴を計算します

文字ベース、単語ベース、語彙の両方の機能 (数えると約 97):

  1. 総文字数 (C)
  2. アルファ文字の総数 / C アルファ文字の比率
  3. 総桁数 / C
  4. 空白文字の総数/C
  5. 各文字の頻度 / C (キーボードの 36 文字 – A ~ Z、0 ~ 9)
  6. 特殊文字の頻度 (10 文字: *、_、+、=、%、$、@、ـ、\、/)
  7. 合計単語数 (M)
  8. 略語総数/M 2文字以内
  9. 総文字数/C
  10. 平均語長
  11. 平均 文字単位の文の長さ
  12. 平均 単語での文の長さ
  13. 語長周波数 分布/M 長さ n の単語の比率、n は 1 から 15 の間
  14. タイプ トークン 比率 固有の単語の数/ M
  15. Hapax Legomena Freq. 一度出てくる言葉の
  16. Hapax Dislegomena Freq. 2回出現する単語の
  17. ユールのK測度
  18. シンプソンの D メジャー
  19. Sichel の S メジャー
  20. 黒髪のWメジャー
  21. オノレのR測定
  22. 句読点の頻度 句読点 18 文字: . ○; ? ! : ( ) – “ « » < > [ ] { }

フォーマットに基づいて、色、フォント、サイズなどの機能をさらに追加することもできます。

これらの測定値のほとんどは、オンライン、論文、またはウィキペディアでさえ見つけることができます (これらはすべて単純な計算であり、おそらく他の機能に基づいています)。

したがって、約 100 個のフィーチャがある場合、100 個の入力、非表示レイヤー内のいくつかのノード、および 1 つの出力ノードが必要です。

入力は、現在の事前に分類されたコーパスに従って正規化する必要があります。

私はそれを 2 つのグループに分け、一方をトレーニング グループとして使用し、もう一方をテスト グループとして使用し、それらを混合することはありませんでした。おそらく、同様のスパム/非スパム比率を持つトレーニング/テスト グループの 50/50 の比率で。

于 2009-05-06T12:54:11.987 に答える
8

ニューラルネットワークでそれをやろうとしていますか? ベイジアン分類を使用するようにかなりうまく設定されているようです。これは、ポール グレアムによるいくつかのエッセイで概説されています。

あなたがアクセスできる分類された履歴は、非常に強力なコーパスを作成してベイジアン アルゴリズムにフィードします。おそらく、非常に効果的な結果が得られるでしょう。

于 2009-04-20T21:47:23.507 に答える
2

チャド、あなたがこれまでに得た答えは合理的ですが、私はあなたの最新情報に応答します:

プロジェクトの主な側面は、NN アプローチがスパム検出にどのように機能するかをテストすることであるため、私はニューラル ネットワークを使用することにしました。

さて、問題があります。このような経験的なテストでは、不適切であることを証明できません。

NN が実際に行うことと行わないことについて少し学んで、この種の分類問題に対して NN が特に良い考えではない理由を確認することをお勧めします。おそらくそれらについて考えるのに役立つ方法は、普遍的な関数近似としてです。しかし、これらすべてが分類の領域 (スパム フィルタリングの問題とは何か) にどのように適合するかを理解するには、パターン分類のような紹介テキストを参照すると役立つ場合があります。

それが実行されるのを見て完全に設定されている場合は、ネットワーク自体に一般的なNNライブラリを使用してください。とにかく、あなたの問題のほとんどは、入力データをどのように表現するかです。「最良の」構造は自明ではなく、おそらくそれほど重要ではありません。入力は、コーパス自体の (正規化された) 測定値 (特徴) の数でなければなりません。明白なもの (「スパム」単語の数など) もあれば、そうでないものもあります。これは実際にいじることができる部分ですが、問題の性質上、ベイジアン フィルター (ここには独自の問題があります) に比べてうまく機能しないことが予想されます。

于 2009-04-20T23:28:22.220 に答える
2
  1. 基本的に、ニューラル ネットワークの設計とトレーニングと同様の範囲で、特徴抽出の問題全体が発生します。私があなただったら、入力テキストをさまざまな方法でスライスしてダイシングすることから始めます。それぞれの方法は、「「価格」と「バイアグラ」が発生した場合、このニューロンは 1.0 を通知するという行に沿った潜在的な機能入力です。互いに 3 語以内」であり、スパム識別との最適な絶対相関に従ってそれらを選別します。
  2. 最良の 50 ~ 200 個の入力機能ニューロンを取得し、それらを 1 つの出力ニューロン (1.0 = スパム、-1.0 = スパムではないトレーニング値)、つまり単層パーセプトロンに接続することから始めます。うまくいかない場合は、多層バックプロパゲーション ネットを試すかもしれませんが、素晴らしい結果を得るために息を止めているわけではありません。

一般的に、私の経験から、ニューラル ネットワークはこのタスクでせいぜい平凡なパフォーマンスを示すと信じるようになりました。これがニューラル ネットワークを探索するためのおもちゃの問題以外のものである場合は、Chad Birch が示唆するようにベイジアンをお勧めします。

于 2009-04-20T22:06:43.430 に答える