對應機器學習公開課第六週和第10周算法
一、對於一個data,能夠將data劃分爲training set、test set和cross validation set三類(比例60%、20%、20%),其代價函數值分別爲\(J_{train}、J_{test}、J_{cv}\),例如在構建新特徵 \(x\) 的多項式時,能夠假設不一樣的階次 \(d\) 的 \(x\) 的多項式,利用training set獲得各個多項式的具體參數,利用cross validation選擇多項式模型中性能最好的一組,即肯定最佳的 \(d\),而test set則用於評價最終模型的性能。
二、模型在泛化時中常見的兩類問題是欠擬合與過擬合。前者表明數據有大的誤差,即平均值和真實值偏離;後者表明有大的方差,即平均值和真實值接近,可是波動幅度大。對於正則項,\(\lambda\) 過大時引起了underfit(欠擬合)問題,反之則引起overfit(過擬合問題), \(\lambda\) 的選擇一樣能夠根據cross validation set來選擇。繪製m和\(J_{train}、J_{cv}\)的曲線,能夠觀察系統存在的問題:
對於高誤差,最終測試集的偏差和訓練集偏差隨着樣本m的提升很是接近,可是這偏差值很是高,離咱們指望值較遠;而對於高誤差,測試集偏差和訓練集偏差在m很大時仍然有必定差距,且隨着m的增大而繼續接近。這也說明,試圖經過增大樣本數量來改善模型性能的,只對高誤差的過擬合問題有效。
三、對於系統的過擬合和欠擬合問題,一些能夠嘗試的解決辦法以下機器學習
解決方案 | 問題 |
---|---|
更多data | high variance |
更少特徵 | high variance |
增長額外特徵 | high bias |
增長特徵階次 | high bias |
增大正則參數 | high bias |
減少正則參數 | high variance |
四、某些狀況下,測試集的存在不能很好地評估系統性能,例如對於偏斜類問題(即分類問題中,某個類別特別少),所以還有一種評價方法:函數
預測\真實 | 1 | 0 |
---|---|---|
1 | true positive | false positive |
0 | false negative | true negative |
此時,有 \[查準率P = \frac{TP}{TP+FP}\] \[查全率R = \frac{TP}{TP+FN}\] \[F=2*\frac{PR}{P+R}\]性能
一、在正式開始前,能夠選用較小的數據集,繪製學習曲線,來大體尋找參數範圍
二、批量梯度降低法須要讀入全部數據才完成一次更新,在數據量過大時,速度很緩慢,爲了提升速度,有兩種方法:學習
a. 隨機梯度降低法:每讀入一個數據,就進行參數更新:\[\theta_j=\theta_j-\alpha(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} j=0,...,n \] 直到將m個數據所有讀入更新完畢,而後打亂數據集順序,再從新讀入一次,通常要重複1~10次;隨機梯度降低法只能逼近最小值,但不能達到。若要繪製曲線,則可每讀入一個數據,就計算該數據的代價,每掃描必定數量的數據,就計算平均cost,而後繪製一個點,最後獲得曲線測試
b. 小批量梯度降低法:每讀入b(1<b<m)個數據,就進行參數跟新:
say b=10,m=1000
repeat{
for i=1,11,21,...,991{
\(\theta_j=\theta_j-\alpha\frac{1}{10}\sum\limits_{k=i}^{i+9}(h_\theta(x^{(k)})-y^{(k)})x_j^{(k)} j=0,1,...,n\)大數據
}
}spa