1. 程式人生 > >吳恩達-機器學習(6)-評估學習演算法、偏差與方差、構架垃圾郵件分類器、處理傾斜資料

吳恩達-機器學習(6)-評估學習演算法、偏差與方差、構架垃圾郵件分類器、處理傾斜資料

文章目錄

Evaluating a Learing Algorithm

Decidding what to try next

當預測新的資料集,效果很差時:

  1. 獲取更多的訓練資料
  2. 減小特徵數量
  3. 嘗試獲取附加特徵
  4. 嘗試新增多項式特徵
  5. 嘗試減小 λ \lambda
  6. 嘗試增加 λ
    \lambda

機器學習診療法:可以幫助你知道機器學習演算法是否在工作,而且可以知道提高演算法效能的最好的方法

Evaluating your hypothesis

將資料集按照7:3的比例分為訓練集和測試集

線性迴歸

邏輯迴歸

####Model selection and Train/Validation/Test Sets
模型選擇,對每個多項式進行訓練,選擇測試機誤差最小的模型,但這並不能評估模型在新的資料集中表現

將資料集分為6:2:2的三段,第一段為訓練集,第二段為交叉驗證集、第三段為測試集

選擇交叉驗證誤差最小的模型,這就避免使用測試集

Bias vs Variance

Diagnosing bias vs variance

隨著多項式的增加,訓練集的誤差逐漸減小,驗證集的誤差先減小後增大
高偏差(欠擬合): J t r a i n ( θ ) J_{train}(\theta) J c v ( θ ) J_{cv}(\theta) 都很高,且 J t r a i n ( θ ) J c v ( θ ) J_{train}(\theta) \approx J_{cv}(\theta)
高方差(過擬合): J t r a i n ( θ ) J_{train}(\theta) 很小, J c v ( θ ) J_{cv}(\theta) J t r a i n ( θ ) J_{train}(\theta) 大很多

Regularization and Bias/Variance


選取模型和 λ \lambda 的步驟:

  1. 建立 λ \lambda 的列表 (i.e. λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24});
  2. 建立一組具有不同次方或任何其他變體的模型
  3. 遍歷所有的 λ \lambda 和模型學習引數
  4. 計算交叉驗證集上的 J c v ( θ ) J_{cv}(\theta) (沒有正則化)
  5. 選擇在交叉驗證集中產生最低錯誤的最佳組合。
  6. 使用最好的模型和 λ \lambda ,在測試集上測試效能


Learning Curves

學習曲線是誤差和訓練集大小的曲線

高偏差時:
小的訓練集導致 J t r a i n ( θ ) J_{train}(\theta) 很小 J c v ( θ ) J_{cv}(\theta) 很高
大的訓練集導致 J t r a i n ( θ ) J_{train}(\theta) J c v ( θ ) J_{cv}(\theta) 都很高且 J t r a i n ( θ ) J c v ( θ ) J_{train}(\theta) \approx J_{cv}(\theta)
當學習演算法是高偏差時,增大訓練集並不能改善其效能

高方差時:
小的訓練集導致 J t r a i n ( θ ) J_{train}(\theta) 很小 J c v ( θ ) J_{cv}(\theta) 很高
隨著訓練集的增大 J t r a i n ( θ ) J_{train}(\theta) 增大 J c v ( θ ) J_{cv}(\theta) 減小且都不會趨於平穩, J t r a i n ( θ ) J_{train}(\theta) < J c v ( θ ) J_{cv}(\theta) 且差異很大

模型改善方法總結

Building a Spam Classifier

Prioritizing What to Work on

垃圾郵件分類:
給定一組電子郵件資料,我們可以為每個電子郵件構造一個向量。這個向量中的每個元素代表一個單詞。向量通常包含10,000到50,000個條目,這是通過查詢我們資料集中最常用的單詞來收集。如果要在郵件中找到一個單詞,我們將分配它各自的條目1,否則如果沒有找到,這個條目就是0。一旦我們準備好所有的x向量,我們訓練我們的演算法,最後,我們可以用它來分類一個郵件是否是垃圾郵件。

如何提高分類器的準確性:

  • 收集大量的資料,如‘honeypot’專案
  • 尋找更加複雜的特性(例如:在垃圾郵件中使用電子郵件頭資料)
  • 從郵件內容中尋找複雜的特徵
  • 開發演算法檢測錯誤拼寫

Error Analysis

解決機器學習問題的建議方法是:

  • 從一個簡單的演算法開始,快速實現它,並在交叉驗證資料的早期測試它。
  • 繪製學習曲線來判斷更多的資料,更多特徵是否有幫助
  • 誤差分析:手動檢查交叉驗證集中的例子中的錯誤,並嘗試找出大多數錯誤發生的趨勢。

誤差分析

Handing Skewed Data

Error Metrics for Skewed Classes

Skewed Classes:對於分類問題,y=1和y=0,在樣本數量中y=1的數量遠小於y=0的數量。
假設你的演算法在測試集上只有1%的錯誤,可實際上,測試集中只有0.5%的病人患有癌症,所以錯誤率並不能評價這個演算法的優劣,所以就提出了Precision和Recall

Trading Off Precision and Recall

  1. 為了防止癌症誤診斷給人造成壓力,所以要有很大的把握判斷的了癌症,所以提高閾值,這將造成precision較高,recall較低
  2. 為了防止錯誤的診斷癌症為沒有癌症,導致沒有及時治療,所以要通過降低閾值防止漏了癌症病人,這將造成precision較低,recall較高

    將兩者合併為一個量

Using Large Data Sets

Data For Machine Learning