On Fri, 2009-10-02 at 00:08 +0200, mouss wrote: > Karsten Bräckelmann wrote: > > False positive. Something, that matches (positive) the criterion for a > > certain test, but should not (false).
I stand to what I said. > you can certainly devise a system to detect alpha(foo) where alpha is a > function mapping a Banach space to a Hilbert Space, and define what FP, > FN, FX mean in the context you consider. you can also say "let PI=69, > ... ". but conventions are here for a reason. they allow us to > understand each others more easily. the fact that children of today can > solve computation problems that "great scientists" of the old times > couldn't handle is thanks to conventions (think of a/b * c/d = > (a*c)/(b*d), which looks trivial today, but wasn't before). > > when talking about spam or intrusion detection, FN means "missing" and > FP means "false alarm". if we allow defining FN and FP differently, then > we'll need to rewrite a lot of books, reports, articles, ... IFF you are talking about the black box that spam detection is, that is true. If you are talking about a rule like FORGED_MUA_OUTLOOK, it appears to be that simple. However, it is not. You are looking at a single test, which -- if positive -- either is correct or wrong. Same for RCVD_IN_DNSWL. If it positively matches, it either it is correct, or wrong. A false positive is a match, that is wrong. No matter the score you assign the test. This concept is NOT specific to spam detection, or even computer science. As a matter of fact, when I first really grasped the concept, a medical scientist explained it to me. Yes, a FP for a rule that identifies *ham* actually evaluated positive on a spam. It only appears to be spam centric on this list, cause it is mainly dedicated to identifying spam, not ham. You might want to ask wikipedia as well. And don't focus on the spam filtering *example*, which again exclusively talks about a rule identifying spam. Not ham. -- char *t="\10pse\0r\0dtu...@ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4"; main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1: (c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}