2013-11-22 4 views
1

나는 베이 스 기반 스팸 탐지에 대해 이해하려고 노력하고 있으며이를 코딩하는 방법을 이해하는 데 어려움이 있습니다. 그것을 이해하기 위해, 나는 아래처럼 SpamAssassin 코드를 읽었습니다. http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Bayes/CombineChi.pm?view=markup카이 제곱 기반 스팸 탐지는 SpamAssassin에서 어떻게 작동합니까?

하지만 어떻게 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에 읽거나 책을 읽으려고했지만 이론적으로 코드를 포함하여 완전한 설명을 찾을 수 없습니다.

왜 작동하는지 설명해 주시겠습니까?

2 세트의 숫자는이 관측 값과의 차이를 찾는 포함

내가 빨리 인터넷 검색으로 찾을 수있는 가장 좋은 explaination 여기 http://formulas.tutorvista.com/math/chi-square-formula.html

했다 "유사"하는 경우 카이 제곱 테스트 말할 수

답변

1

기대 값. 또는 다른 조건의 값입니다. 그런 다음 차이가 제곱됩니다. 그것을 squaring하는 것은 두 가지 효과가 있습니다. 제곱 된 수는 양수가되고 차이는 두드러집니다.

그러면이 차이와 제곱 연산으로 발견 된 모든 숫자가 합 해져서 숫자가 만들어집니다. 관측치의 "자유도"와 숫자를 비교하여 우연히 결과의 "p 값"또는 확률을 찾습니다.

두 세트의 값에 대한 유사성을 허용합니다. 그들이 정확히 같은

을하지 않고 당신이 비교 이런 종류의 스팸을 검출 할 수있는 방법을 유용하게 상상할 수있는 확신

귀하의 코드 샘플이 작업을 수행하지 않는 것, 그래서이 있다는 것을 추측 만 할 수 있습니다 나머지 스팸 방지 코드베이스에서 일어나는 다른 계산

+0

어떻게 p 값을 계산하거나 비교할 수 있습니까? 프로그래밍 방식으로 p - 값 테이블을? 유효 숫자의 취소를 피하기 위해 대수 사용이 필요하다는 정보를 보았습니다. 그러나 나는 구체적인 생각이 없습니다. 실제 샘플 구현이 있습니까? –

+0

이 페이지 http://easycalculation.com/statistics/p-value-t-test.php에는 p 값 계산기가 있습니다. 어떻게 작동하는지보고 싶다면 자바 스크립트 코드는 – Vorsprung

+0

페이지의 소스 코드에 있습니다. 자바 스크립트 코드는 직접 구현되거나 이해하기 쉽지 않습니다. 마법의 숫자가 너무 많아 보이는 군 ... –