吳恩達-機器學習(6)-評估學習演算法、偏差與方差、構架垃圾郵件分類器、處理傾斜資料
文章目錄
Evaluating a Learing Algorithm
Decidding what to try next
當預測新的資料集,效果很差時:
- 獲取更多的訓練資料
- 減小特徵數量
- 嘗試獲取附加特徵
- 嘗試新增多項式特徵
- 嘗試減小
- 嘗試增加
機器學習診療法:可以幫助你知道機器學習演算法是否在工作,而且可以知道提高演算法效能的最好的方法
Evaluating your hypothesis
將資料集按照7:3的比例分為訓練集和測試集
線性迴歸
邏輯迴歸
####Model selection and Train/Validation/Test Sets
模型選擇,對每個多項式進行訓練,選擇測試機誤差最小的模型,但這並不能評估模型在新的資料集中表現
將資料集分為6:2:2的三段,第一段為訓練集,第二段為交叉驗證集、第三段為測試集
選擇交叉驗證誤差最小的模型,這就避免使用測試集
Bias vs Variance
Diagnosing bias vs variance
隨著多項式的增加,訓練集的誤差逐漸減小,驗證集的誤差先減小後增大
高偏差(欠擬合):
和
都很高,且
高方差(過擬合):
很小,
比
大很多
Regularization and Bias/Variance
選取模型和
的步驟:
- 建立 的列表 (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});
- 建立一組具有不同次方或任何其他變體的模型
- 遍歷所有的 和模型學習引數
- 計算交叉驗證集上的 (沒有正則化)
- 選擇在交叉驗證集中產生最低錯誤的最佳組合。
- 使用最好的模型和 ,在測試集上測試效能
Learning Curves
學習曲線是誤差和訓練集大小的曲線
高偏差時:
小的訓練集導致
很小
很高
大的訓練集導致
和
都很高且
當學習演算法是高偏差時,增大訓練集並不能改善其效能
高方差時:
小的訓練集導致
很小
很高
隨著訓練集的增大
增大
減小且都不會趨於平穩,
<
且差異很大
模型改善方法總結
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
- 為了防止癌症誤診斷給人造成壓力,所以要有很大的把握判斷的了癌症,所以提高閾值,這將造成precision較高,recall較低
- 為了防止錯誤的診斷癌症為沒有癌症,導致沒有及時治療,所以要通過降低閾值防止漏了癌症病人,這將造成precision較低,recall較高
將兩者合併為一個量