優先考慮什么工作
系統設計實例:
給定一個數據集的電子郵件,我們可以構建一個向量的每一封電子郵件。在這個向量的每個條目代表一個字。該向量通常包含10000到50000個條目,這些集合是通過查找數據集中最常用的詞來收集的。如果在電子郵件中找到一個詞,我們將把它的條目指定為1,否則如果找不到,該條目將是0。一旦我們所有的X向量准備好了,我們就訓練我們的算法,最后,我們可以用它來分類一封電子郵件是否是垃圾郵件。
所以你如何花你的時間,提高分類的准確性?
1.收集大量的數據(例如“蜜罐”項目,但並不總是工作)
2.形成精妙的變量(例如:使用垃圾郵件電子郵件標頭數據)
3.開發算法用不同的方法來處理你的輸入(在垃圾郵件識別拼寫錯誤)。
很難說出哪一個選擇將是最有幫助的。
誤差分析
推薦的方法來解決機器學習問題是:
1.從一個簡單的算法開始,快速實現它,並在交叉驗證數據上盡早測試它。
2.繪制學習曲線來決定如果更多的數據,更多的變量,是否有幫助。
3.手動檢查交叉驗證集中的示例中的錯誤,並試圖指出大多數錯誤產生趨勢。
例如,假設我們有500封郵件,我們的算法的誤分了100人。我們可以手動分析100電子郵件和分類基於他們是什么類型的電子郵件。然后我們可以想出新的線索和特征,幫助我們正確地分類這100封電子郵件。因此,如果我們的大多數錯誤的電子郵件是那些試圖竊取密碼,然后我們可以找到一些特別的電子郵件並將它們添加到我們的模型的特點。我們還可以看到每個詞的分類根據其根本改變我們的錯誤率:
它是作為一個單一的得到錯誤的結果很重要,數值。否則很難評估算法的性能。例如,如果我們使用詞干,即用不同的形式處理同一個單詞(失敗/失敗/失敗)作為一個詞(失敗),得到3%的錯誤率而不是5%的過程,那么我們肯定會把它添加到我們的模型中。但是,如果我們試圖區分大寫字母和小寫字母,最終得到3.2%的錯誤率而不是3%,那么我們應該避免使用這個新特性。因此,我們應該嘗試新事物,得到錯誤率的數值,並根據我們的結果決定是否保留新特性。