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