前言
此片有很多別人的東西,直接搬過來了,都有注釋,里面也有一些自己的理解和需要注意的地方,以此記錄一下,總結如下,思想不夠成熟,以后再補充,如有錯誤請不吝指正
犀利的開頭
在機器學習中,我們用訓練數(shù)據(jù)集去訓練(學習)一個model(模型),通常的做法是定義一個Loss function(誤差函數(shù)),通過將這個Loss(或者叫error)的最小化過程,來提高模型的性能(performance)。然而我們學習一個模型的目的是為了解決實際的問題(或者說是訓練數(shù)據(jù)集這個領域(field)中的一般化問題),單純地將訓練數(shù)據(jù)集的loss最小化,并不能保證在解決更一般的問題時模型仍然是最優(yōu),甚至不能保證模型是可用的。這個訓練數(shù)據(jù)集的loss與一般化的數(shù)據(jù)集的loss之間的差異就叫做generalization error=bias+variance。
作者:路小墨
鏈接:https://www.zhihu.com/question/27068705/answer/82132134
來源:知乎
著作權歸作者所有,轉載請聯(lián)系作者獲得授權。
Error = Bias^2 + Variance+Noise
- 什么是Bias(偏差)
Bias反映的是模型在樣本上的輸出與真實值之間的誤差,即模型本身的精準度,即算法本身的擬合能力
- 什么是Variance(方差)
Variance反映的是模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩(wěn)定性。反應預測的波動情況。
- 什么是Noise(噪聲)
這就簡單了,就不是你想要的真正數(shù)據(jù),你可以想象為來破壞你實驗的元兇和造成你可能過擬合的原因之一,至于為什么是過擬合的原因,因為模型過度追求Low Bias會導致訓練過度,對測試集判斷表現(xiàn)優(yōu)秀,導致噪聲點也被擬合進去了
簡單的例子理解Bias和Variance
- 開槍問題
想象你開著一架黑鷹直升機,得到命令攻擊地面上一只敵軍部隊,于是你連打數(shù)十梭子,結果有一下幾種情況:
1.子彈基本上都打在隊伍經(jīng)過的一棵樹上了,連在那棵樹旁邊等兔子的人都毫發(fā)無損,這就是方差?。ㄗ訌棿虻煤芗校?,偏差大(跟目的相距甚遠)。
2.子彈打在了樹上,石頭上,樹旁邊等兔子的人身上,花花草草也都中彈,但是敵軍安然無恙,這就是方差大(子彈到處都是),偏差大(同1)。
3.子彈打死了一部分敵軍,但是也打偏了些打到花花草草了,這就是方差大(子彈不集中),偏差小(已經(jīng)在目標周圍了)。
4.子彈一顆沒浪費,每一顆都打死一個敵軍,跟抗戰(zhàn)劇里的八路軍一樣,這就是方差?。ㄗ訌椚慷技性谝粋€位置),偏差?。ㄗ訌椉械奈恢谜撬鼞撋湎虻奈恢茫?。
作者:刑無刀
鏈接:https://www.zhihu.com/question/20448464/answer/24397161
來源:知乎
著作權歸作者所有,轉載請聯(lián)系作者獲得授權。
-再來個射箭問題:假設你在射箭,紅星是你的目標,以下是你的射箭結果
作者:Jason Gu
鏈接:https://www.zhihu.com/question/20448464
來源:知乎
著作權歸作者所有,轉載請聯(lián)系作者獲得授權。
分析:
我們可以看到,在Low Variance的一列,數(shù)據(jù)分布是非常集中的,恩,小伙子,你的穩(wěn)定性很好,方差很小,表現(xiàn)的很聚集。而第二列就是High Variance的一列,機智的你可能一下就看出來了,沒錯,飄來飄去的,非常不穩(wěn)定!
看下Low Bias這一行,命中紅心的次數(shù)很多對不對,說明你還是有準頭的,至少偏差不算大,我要是裁判,我就不管你沒射中幾只箭飄到哪去了(方差大,不集中),畢竟我看的是命中了多少(準確度),而High Bias這一行,明顯可以看出一支箭都沒射中,表現(xiàn)很差,偏離目標好遠,負分滾粗!
綜合起來看,我們需要的模型最好是兩個L,又準確又穩(wěn)定,妥妥的,但是,這個在現(xiàn)實模型中是不會存在的。你只能權衡著來
Bias,Variance和Overfitting(過擬合),Underfitting(欠擬合)
過擬合,也就是我對訓練樣本能夠百分百命中了,超級擬合了,但是測試時候就掉鏈子,擬合很差,也就是我們說的泛化性能不好的問題,所以如果太追求在訓練集上的完美而采用一個很復雜的模型,會使得模型把訓練集里面的噪聲都當成了真實的數(shù)據(jù)分布特征,從而得到錯誤的數(shù)據(jù)分布估計。
一句話,過擬合會出現(xiàn)高方差問題
欠擬合:訓練樣本太少,導致模型就不足以刻畫數(shù)據(jù)分布了,體現(xiàn)為連在訓練集上的錯誤率都很高的現(xiàn)象。
一句話,欠擬合會出現(xiàn)高偏差問題
怎么避免過擬合和欠擬合
避免欠擬合(刻畫不夠)
- 尋找更好的特征-----具有代表性的
- 用更多的特征-----增大輸入向量的維度
避免過擬合(刻畫太細,泛化太差)
增大數(shù)據(jù)集合-----使用更多的數(shù)據(jù),噪聲點比重減少
減少數(shù)據(jù)特征-----減小數(shù)據(jù)維度,高維空間密度小
正則化方法-----即在對模型的目標函數(shù)(objective function)或代價函數(shù)(cost function)加上正則項
-
交叉驗證方法
更多方法詳解請看@一只鳥的天空--機器學習中防止過擬合的處理方法
為什么要用交叉驗證(Cross-Validation)
1.交叉驗證,這是僅使用訓練集衡量模型性能的一個方便技術,不用建模最后才使用測試集
2.Cross-validation 是為了有效的估測 generalization error(泛化誤差) 所設計的實驗方法,而generalization error=bias+variance
首先:bias和variance分別從兩個方面來描述了我們學習到的模型與真實模型之間的差距。Bias是 “用所有可能的訓練數(shù)據(jù)集訓練出的所有模型的輸出的平均值” 與 “真實模型”的輸出值之間的差異;Variance則是“不同的訓練數(shù)據(jù)集訓練出的模型”的輸出值之間的差異。
作者:路小墨
鏈接:https://www.zhihu.com/question/27068705/answer/82132134
來源:知乎
著作權歸作者所有,轉載請聯(lián)系作者獲得授權。
可以發(fā)現(xiàn),怎么來平衡Bias和Variance則成了我們最大的任務了,也就是怎么合理的評估自己模型呢?我們由此提出了交叉驗證的思想,以K-fold Cross Validation(記為K-CV)為例,基本思想如下:(其他更多方法請看@bigdataage --交叉驗證(Cross-Validation))
將原始數(shù)據(jù)分成K組(一般是均分),將每個子集數(shù)據(jù)分別做一次驗證集,其余的K-1組子集數(shù)據(jù)作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準確率的平均數(shù)作為此K-CV下分類器的性能指標.K一般大于等于2,實際操作時一般從3開始取,只有在原始數(shù)據(jù)集合數(shù)據(jù)量小的時候才會嘗試取2. 而K-CV 的實驗共需要建立 k 個models,并計算 k 次 test sets 的平均辨識率。在實作上,k 要夠大才能使各回合中的 訓練樣本數(shù)夠多,一般而言 k=10 (作為一個經(jīng)驗參數(shù))算是相當足夠了。
看不清上面的就來一幅更簡單的
每次的training_set 紅色, validation_set白色 ,也就是說k=5的情況了
注意:交叉驗證使用的僅僅是訓練集??!根本沒測試集什么事!很多博客都在誤導!
這也就解決了上面剛開始說的Variance(不同訓練集產(chǎn)生的差異),Bias(所有data訓練結果的平均值)這兩大問題了!因為交叉驗證思想集合了這兩大痛點,能夠更好的評估模型好壞!
說白了,就是你需要用下交叉驗證去試下你的算法是否精度夠好,夠穩(wěn)定!你不能說你在某個數(shù)據(jù)集上表現(xiàn)好就可以,你做的模型是要放在整個數(shù)據(jù)集上來看的!畢竟泛化能力才是機器學習解決的核心
Bias、Variance和K-fold的關系
下面解釋一下Bias、Variance和k-fold的關系:k-fold交叉驗證常用來確定不同類型的模型(線性、指數(shù)等)哪一種更好,為了減少數(shù)據(jù)劃分對模型評價的影響,最終選出來的模型類型(線性、指數(shù)等)是k次建模的誤差平均值最小的模型。當k較大時,經(jīng)過更多次數(shù)的平均可以學習得到更符合真實數(shù)據(jù)分布的模型,Bias就小了,但是這樣一來模型就更加擬合訓練數(shù)據(jù)集,再去測試集上預測的時候預測誤差的期望值就變大了,從而Variance就大了;反之,k較小時模型不會過度擬合訓練數(shù)據(jù),從而Bias較大,但是正因為沒有過度擬合訓練數(shù)據(jù),Variance也較小。
作者:TANGent
鏈接:https://www.zhihu.com/question/27068705/answer/35286205
來源:知乎
著作權歸作者所有,轉載請聯(lián)系作者獲得授權。
致謝
@知乎--機器學習中的Bias(偏差),Error(誤差),和Variance(方差)有什么區(qū)別和聯(lián)系?
@知乎--方差和偏差
@bigdataage --交叉驗證(Cross-Validation)
@一只鳥的天空--機器學習中防止過擬合的處理方法