機器學習模型建立的幾點建議


構建一個垃圾郵件分類器

​ 對於垃圾郵件,我們可以人為的挑選若干個關鍵詞作為識別垃圾郵件判斷的特征,而在實際應用中,我們應該遍歷整個訓練集,在訓練集中找出出現次數最多的n個單詞,n介於10,000和50,000之間,將這些單詞作為所選用的特征。根據所找到的特征集合,我們可以為每一個郵件構建一個向量,如果在電子郵件中找到一個字,我們將分配其相應的項1,否則這一項將為0,即向量的每一項表示一個單詞。一旦我們准備好所有的x向量,我們就會訓練我們的算法,最后, 我們可以使用它來分類郵件是否是垃圾郵件。

![1.jpg](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fhaktg3vqlj20ka06xtb8.jpg)
​ 為此我們打開腦洞想一下應該花時間在那些措施上以提高分類器的精確度呢?
  1. 收集更多地數據(例如“honepot”項目,但這並不一定有效)
  2. 發現更具有代表性的特征(例如:垃圾郵件發送中的題目-header)
  3. 開發一種算法實現輸入的不同方式(垃圾郵件中的拼寫錯位)

很難講,以上的措施哪一個更有效。。。從而引出接下來的error analysis

誤差分析

​ 解決一個新的機器學習問題的推薦方法是:

  1. 從一個簡單的算法開始,盡快的實現它,並通過交叉驗證集測試它
  2. 嘗試繪出學習曲線(learning curve)以決定是否更多地特征、數據會對處理有效
  3. 手動檢查交叉驗證集中的樣本誤差,並嘗試發現大多數誤差發生的趨勢

​ 例如假設我們有500份郵件,我們的模型誤分類了其中的100份,我們這是應手動的分析這100份郵件,判斷各屬於什么類型,然后,我們可以嘗試提出新的線索和特征,以幫助我們正確地分類這100封電子郵件。如果大多數錯誤分類的電子郵件是嘗試竊取密碼的郵件,那么我們可以找到這些電子郵件特有的功能,並將其添加到我們的模型中。

數值化模型的誤差值

​ 將得到誤差轉化為單個數值是機器學習中的一個竅門。 否則,很難評估學習出的算法的性能。例如,如果我們使用詞干截取軟件(這是將不同形式的同一個單詞(fail/failing/failed)作為一個單詞(fail))處理的過程,並且獲得3%的錯誤率而不是5%,那么我們應該增加它到我們的模型。然而,如果我們嘗試區分大寫字母和小寫字母,最終得到3.2%的錯誤率而不是3%,那么我們應該避免使用這個新功能。總而言之,我們應該嘗試方法,並將該方法下的誤差率以數值表示,並根據得到的結果決定是否要保留新功能。

錯誤指標-偏斜類

​ 以癌症的分類為例,訓練邏輯回歸模型\(h_\theta(x)\).其中(確診為癌症時y=1,否則y=0)。當通過訓練集樣本訓練出的模型對診斷的精確度達到99%時,即在測試集上誤差律僅為1%,這是是否可以說我們的訓練模型已經很優秀了呢?然而癌症患者的患病概率僅為0.5%,若我們進定義如下函數:

function y = predictCancer(x)
	y = 0; %ignore x!
return

​ 上述函數模型精確度也達到了99.5%,比之前訓練的模型看起來更加優秀,事實是這樣嗎?

查准率/回收率

​ y=1表示我們想檢測的真實類,整體分類可能有以下幾種:

![2.1jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhaktg7t9wj20b809qaa4.jpg)
​ 查准率(Precision)和回收率(Recall)的定義如下:
![2.2jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhakth1mksj20c602kweg.jpg)
如何比較查准率/回收率的計算數值:F值(F score)
![3.jpg](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fhakthr04pj20l908mgml.jpg)
**機器學習的數據集更多**

​ 設計一種高精度的學習系統:如,對於模糊單詞的分類{to,two,too},{then,than}

嘗試使用以下4種算法:1.感知器-Perceptron(Logistic regression)2.Winnow 3.Me,ory-based 4.朴素貝葉斯,隨着訓練集數目的增多,精確度如下圖:

![4.jpg](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fhaktib48sj208p07c74q.jpg)
進而,研究者Banko and Brill談到“It's not who has the best algorithm that win.It's who has the most data"

使用包含很多參數的學習算法(如:具有很多特征的邏輯回歸/線性回歸;具有多個隱藏層的神經網絡)有:\(J_{train}(\theta)\)將會變小,在沒有出現過擬合現象下,增大訓練集有:

\(J_{train}(\theta) \approx J_{test}(\theta)\),此時\(J_{test}(\theta)\)也將會變小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM