machine learning for hacker记录(3) 贝叶斯分类器
????? 本章主要介紹了分類算法里面的一種最基本的分類器:樸素貝葉斯算法(NB),算法性能正如英文縮寫的一樣,很NB,尤其在垃圾郵件檢測領(lǐng)域,關(guān)于貝葉斯的網(wǎng)上資料也很多,這里推薦那篇劉未鵬寫的http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/,作者深入淺出的概述了貝葉斯背后的思想跟應(yīng)用領(lǐng)域,關(guān)于其理論方面可以參考斯坦福大學(xué)NG的machine learning cs299的講義,關(guān)于代碼實現(xiàn)可以參考一些開源的包或者自己動手寫(之前,閑來無事寫了一個基于MRjob的MapReduce版本),關(guān)于成熟開源工具包可以參考scikit,orange,weka,mahout,tm等。
????? 言歸正傳,本章是結(jié)合R語言在垃圾郵件檢測上的應(yīng)用,整章大部分篇幅在特征提取那塊,如何提取郵件正文,并結(jié)合R的tm(text mining)工具包,抽取特征,計算各種先驗概率,最后通過貝葉斯法則導(dǎo)出P(y|x)的條件概率,盡管現(xiàn)實很多數(shù)據(jù)并不滿足該算法所要求的特征是相互獨立的硬性條件,但這不妨礙NB的NB性能。
????? 最后看一下書中給出的2個結(jié)果
? 表1
| 郵件類型 | 分類正常郵件的比例 | 分類垃圾郵件的比例 |
| 易識別正常郵件 | 0.78 | 0.22 |
| 不易識別正常郵件 | 0.73 | 0.27 |
| 垃圾郵件 | 0.15 | 0.85 |
?????表2????????????????????????????????????????????????????
| 郵件類型 | 分類正常郵件的比例 | 分類垃圾郵件的比例 |
| 易識別正常郵件 | 0.90 | 0.10 |
| 不易識別正常郵件 | 0.82 | 0.18 |
| 垃圾郵件 | 0.18 | 0.82 |
表1的結(jié)果是假定類別先驗概率比例是 垃圾郵件/正常郵件=0.5/0.5,而表2是 垃圾郵件/正常郵件=0.2/0.8。
????? 可以看出表2的誤判率低于表1,但是漏判率也要高于表1,這存在一個權(quán)衡,到底關(guān)注誤判率的低還是漏判率的低,或者二者的折中,這讓我想起了之前做的一個關(guān)于游戲用戶流失預(yù)警項目,當時我一個勁提高識別率而忽略了誤判率,其實這會對誤判的那些正常用戶造成很大的騷擾,所以做項目還是要緊密結(jié)合業(yè)務(wù)場景。在垃圾郵件這個場景下,誤判率高的意味著會更可能的把正常郵件當做垃圾郵件而刪除,這會影響用戶體驗,漏判率高意味著識別算法的性能低下,類似的矛盾很多,如機器學(xué)習(xí)里面的bais/variance,計算機算法里面的時間復(fù)雜度/空間復(fù)雜度等。
????? 在垃圾郵件這個場景下,誤判率比漏判率可能更為重要一點,如果一封對用戶很重要的郵件被系統(tǒng)判定spam的話,那么給用戶帶來的體驗傷害比一封垃圾郵件帶來的騷擾更深刻。當然現(xiàn)在的郵箱系統(tǒng)功能豐富,加入了各種其他的非郵件正文的特征,比如發(fā)件人的IP地址等等,識別率已經(jīng)達到了99%+了,也添加了跟用戶的交互功能,可以讓用戶標示哪些是垃圾郵件,定制一個個性化郵件過濾系統(tǒng)。
轉(zhuǎn)載于:https://www.cnblogs.com/kobedeshow/p/3335026.html
總結(jié)
以上是生活随笔為你收集整理的machine learning for hacker记录(3) 贝叶斯分类器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu1404_server搭建l
- 下一篇: Nhibernate代码自动生成工具[转