天天看點

《Arduino家居安全系統建構實戰》——第2章 垃圾郵件還是非垃圾郵件?

本節書摘來異步社群《機器學習項目開發實戰》一書中的第2章,作者:【美】mathias brandewinder(馬蒂亞斯·布蘭德溫德爾),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

機器學習項目開發實戰

用貝葉斯定理自動檢查垃圾郵件

如果你使用電子郵件(我想你一定用),有可能每天都在工作中看到機器學習。你的電子郵件用戶端可能包含某種垃圾郵件過濾機制,從收到的郵件中自動識别令人厭煩的推銷材料,然後小心地将它們發送到“垃圾郵件檔案夾”。這個功能免去了人工逐個删除這些郵件的麻煩,還可以防止你不小心點選有害連結,是機器學習實施得當令生活更美好的典型範例。計算機擅長執行重複性任務,并且做得很徹底。通過自動進行乏味的活動,避免我們犯錯,使人們可以專注于更有趣、更值得深思的活動。

垃圾郵件檢測是機器學習的極好例證,也是分類概念的權威示例。我們必須将給定的一組電子郵件分為兩類:垃圾郵件(應該直接進入垃圾箱的有害資訊)或者非垃圾郵件(我們希望閱讀的有效資訊)。這一工作還有另一個有趣之處:和第1章處理的數字識别問題不同,垃圾郵件檢測所用的資料都是文本,而不是數字形式。在數字世界中,大部分可用材料是文本而不是結構清晰的數字表格,是以了解處理方式十分重要。

在本章中,我們将從頭開始建構一個垃圾郵件檢測引擎,然後用這個例子說明幾種有用的技術和思路,我們将:

确定處理文本的方法。從計算機的角度看,原始文本文檔就是字元的随機組合。我們将看到如何将一個文本塊轉換為計算機所能處理的标記(token),從中提取特征(也就是将原始資料轉換為資訊量更大、更有用的新屬性——“特征”)。

了解貝葉斯定理——這個簡單而強大的數學公式可以量化所包含的新資訊,以更新我們對不确定事件的評估。作為直接的應用,我們将實作一個簡單貝葉斯分類器——使用詞彙頻度确定文檔類型的算法。

讨論了解資料以正确解讀結果及其品質的重要性,并闡述即使不修改算法本身,僅從資料集提取新特征就能給模型的預測能力帶來多麼顯著的提高。

我們将首先專注于實作一個分析文本文檔,确定其所屬類别的算法。一旦有了這個工具,我們将把注意力轉向資料集,看看仔細檢查所擁有的資料如何幫助我們找出新特征,顯著改善預測的品質。

繼續閱讀