4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授
機器學習系統設計–垃圾郵件分類
假定我們現有一封郵件,其內容如下:
From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subject: Buy now!Deal of the week!Buy now! Rolex w4ches - $100 Med1cine (any kind) - $50 Also low cost M0rgages available.充斥著各種誘人的促銷信息,很有可能是一封垃圾郵件(Spam)。假定我們有一個垃圾郵件的數據集,想通過機器學習的方式來學會鑒定郵件是否是垃圾郵件,通過這個范例,我們也將學習到機器學習的系統設計。
模型設計
我們令向量 x 表示垃圾郵件的特征向量,該向量包含了 100 個按字母序排序的單詞特征,這些單詞通常為垃圾郵件常出現的詞匯:discount,deal,now 等等:
xj={1第j個單詞出現0未出現x_j=\begin{cases}1\quad第j個單詞出現\\0\quad未出現\end{cases}xj?={1第j個單詞出現0未出現?
令 y 標簽表示該郵件是否是垃圾郵件:
y={1x是垃圾郵件0x不是垃圾郵件y=\begin{cases}1\quad x是垃圾郵件\\0\quad x不是垃圾郵件\end{cases}y={1x是垃圾郵件0x不是垃圾郵件?
那么垃圾郵件分類就是一個 0/1 分類問題,可以用邏輯回歸完成,這里不再重復介紹邏輯回歸的過程了,我們考慮如何降低分類錯誤率:
- 盡可能的擴大數據樣本:Honypot 做了這樣一件事,把自己包裝成一個對黑客極具吸引力的機器,來誘使黑客進行攻擊,就像蜜罐(honey pot)吸引密封那樣,從而記錄攻擊行為和手段。
- 添加更多特征:例如我們可以增加郵件的發送者郵箱作為特征,可以增加標點符號作為特征(垃圾郵件總會充斥了?,!等吸引眼球的標點)。
- 預處理樣本:正如我們在垃圾郵件看到的,道高一尺,魔高一丈,垃圾郵件的制造者也會升級自己的攻擊手段,如在單詞拼寫上做手腳來防止郵件內容被看出問題,例如把 medicine 拼寫為 med1cinie 等。因此,我們就要有手段來識別這些錯誤拼寫,從而優化我們輸入到邏輯回歸中的樣本。
錯誤分析
對于機器學習問題,吳恩達給出了一些 tips:
- 在一開始,盡量不要將問題復雜化(不要提前優化),先快速實現一個簡單算法,然后通過交叉驗證集評估模型。這就好比在軟件工程中,不會做提前優化,而是先迭代功能。
- 通過繪制學習曲線(learning curve),確定面臨的問題是高偏差還是高方差,來決定是添加更多訓練樣本,還是添加更多特征。
- 甚至可以手動檢查交叉驗證集中誤差較大的樣本,確定錯誤的來源和解決策略。
舉個例子,假定交叉驗證集有 500 個樣本,即 mcvm_{cv}mcv?=500 ,我們的模型錯分了其中 100 個樣本,那么我們會通過下述手段進行錯誤分析:
例如,在這 100 個錯分樣本中,我們發現有 53 個樣本是釣魚郵件,因此,我們就需要考慮為模型注入識別的釣魚郵件的能力。繼續觀察,我們發現,在這 53 封釣魚郵件中,故意使用錯誤拼寫的郵件有 5 封,來源可疑(發送人可疑)的郵件有 16 封,使用了大量煽動性標點符號的郵件有 32 封。因此,對于識別釣魚郵件來說,我們更適合將煽動性標點符號添加為特征,而不用再考慮去識別錯誤拼寫。
總結
以上是生活随笔為你收集整理的4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.3 偏差与方差-机器学习笔记-斯坦福
- 下一篇: 4.5 偏斜类-机器学习笔记-斯坦福吴恩