1

Bayes ベースのスパム検出について理解しようとしていますが、コーディング方法を理解するのが困難です。それを理解するために、以下のように SpamAssassin のコードを読んでいます。 http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes/CombineChi.pm?view=markup

しかし、chi2q がどのように機能するのか理解できませんでした。

# Chi-squared function (API changed; see comment above)
107 sub chi2q {
108   my ($x2, $halfv) = @_;    
109 
110   my $m = $x2 / 2.0;
111   my ($sum, $term);
112   $sum = $term = exp(0 - $m);
113   
114   # replace 'for my $i (1 .. (($v/2)-1))' idiom, which creates a temp
115   # array, with a plain C-style for loop
116   my $i;
117   for ($i = 1; $i < $halfv; $i++) {
118     $term *= $m / $i;
119     $sum += $term;
120   }
121   return $sum < 1.0 ? $sum : 1.0;
122 }

Google で検索したり、本を読んだりしましたが、理論からコードまでを含む完全な説明が見つかりません。

なぜそれが機能するのか説明できますか?

4

1 に答える 1

1

カイ 2 乗検定では、2 つの数値セットが「類似」しているかどうかがわかります。

グーグルですぐに見つけることができる最良の説明は、ここにありましたhttp://formulas.tutorvista.com/math/chi-square-formula.html

これには、観測値と期待値の差を見つけることが含まれます。または別の状態での値。次に、差を二乗します。2 乗すると 2 つの効果があり、2 乗した数値が正になり、差が強調されます。

次に、この差と二乗演算で見つかったすべての数値が合計され、これが数値になります。数値は、観測値の「自由度」とともにテーブル上で比較され、結果が偶然に発生する「p 値」または確率が求められます。

2 つの値のセットの類似性を一致させることができますが、まったく同じである必要はありません。

この種の比較がスパムの検出にどれほど役立つか想像できると思います

あなたのコード サンプルはこれを行っていないようです。そのため、spamassassin コード ベースの残りの部分で他の計算が行われていると推測できます。

于 2013-11-26T11:31:57.433 に答える