Spam 分類法

由 blue 於 週一, 08/15/2005 - 22:34 發表
::

在科學人雜誌上看到一篇關於垃圾郵件技術的文章,其中一些新的分類法可以進一步研究是否可以應用。

聰明的過濾器
我們小組並沒有採用指紋方法,而是走上探索機器學習能力的道路。這些專門的電腦程式可學習分辨垃圾電子郵件與正常訊息,而且不會那麼容易被額外加入的亂碼或文字愚弄。

一開始,我們先嘗試最簡單且最常見的機器學習方法。「原始貝氏」(Naive Bayes)演算法從訊息中每個文字的機率著手。舉例來說,垃圾郵件裡出現「點選」(click)、「此處」(here)與「取消訂閱」(unsubscribe)這幾個字的機率可能各為0.9,但正常郵件裡出現這些字的機率卻只有0.2(1.0為必然出現)。把訊息中所有文字的機率相乘,再利用貝氏統計原則,即可估計出該訊息為垃圾郵件的機率。

原始貝氏策略可相當成功地決定出真實郵件的樣貌,而且也像其他同類的學習方法一樣,能防範簡單的混淆手法。不過,我們也知道它具有缺點。這個方法假設電子郵件內的所有文字之間彼此獨立、互不相關,但在許多狀況下,這個假設並不正確(比如click與here就常常結伴出現),因此會使結論產生偏差。

由於存在這些困難,所以我們把研究焦點擺在區別式線性模型(discriminative linear model)。這類模型可針對不同的性質加權,包括訊息的內容文字與屬性,比如是否為大量寄送的郵件等,以提升後續的判斷。這些模型在某種程度上可學會文字之間的關係,比如它們「知道」,經常結伴出現的文字不該具有太大的權值,好比click、here與unsubscribe。進一步解釋,假設原始貝氏模型找到這三個經常與垃圾郵件關聯在一起的文字,可能會判斷自己已經掌握到足夠的證據,而把含有這些文字的任何訊息都當做垃圾郵件,因此正常的電子郵件有時也會遭到刪除。相對之下,區別式模型就知道這些文字經常結伴出現,所以會賦予它們較低、較合理的權值。這類系統甚至可能知道,有些文字雖然較常出現在垃圾郵件中,但其實對於分辨郵件的好壞並無助益,比如here,因此不該給予任何權值。區別式模型還可能發現,某些文字會抵消彼此的作用。比如「濕」(wet)雖然較常出現在垃圾郵件中,但如果與「天氣」(weather)一起出現,則該郵件就可能是正常的。

原始貝氏系統的優勢在於容易訓練,但是為區別式模型決定權值則困難得多:程式設計師必須一再嘗試文字與其他性質的權值,找出最佳組合,使模型在區分垃圾郵件與正常郵件時達到最佳的效能。幸運的是,研究人員已經取得重大的進展。比如微軟公司的普拉特(John C. Platt)所發明的「序列最小優化」(Sequential Minimal Optimization, SMO)演算法,以及我們成員之一古德曼所提出的「序列條件一般化迭代定標」(Sequential Conditional Generalized Iterative Scaling, SCGIS)演算法,就比舊有的技術快上數十或數百倍。當模型接受大量垃圾郵件資料的訓練,動輒超過數百萬個訊息,以及數十萬個權值時,演算法的速度十分關鍵。