做者:chen_h
微信號 & QQ:862251340
微信公衆號:coderpai
簡書地址:http://www.jianshu.com/p/f143...算法
我認爲對誤差 - 方差之間的權衡判讀對學習機器學習是很是重要的。那麼爲何這麼說呢?由於這個現象的背後是全部參數,性能和幾乎全部機器學習模型的深層緣由。若是你能很深入的理解這個,我保證你能很好的理解機器學習的每個模型。微信
因此,咱們就不浪費時間在無聊的介紹中,直接深刻挖掘吧。理論講解可能有一點枯燥,但我但願你能耐心看完本文。機器學習
機器學習所有是關於給定輸入數據(X)和給定輸出數據(Y),而後去尋找一個最佳映射函數(F),這個映射函數一般也被叫作目標函數。函數
任何機器學習算法的預測偏差能夠分解爲三部分,即:誤差偏差+方差偏差+不可約的偏差(對於給定的模型,咱們不能進一步減小的偏差)。在這個文章中,咱們將重點來討論機器學習中的前兩個偏差。咱們按照以下目錄來進行講解:性能
1)誤差偏差;學習
2)方差偏差;優化
3)誤差 - 方差之間的權衡;人工智能
4)一些想法的總結;spa
用簡單的話來講,這個偏差是因爲簡單的假設所形成的,由於咱們的假設越簡單,那麼咱們的模型更加容易去訓練。設計
通常而言,參數化算法具備較高的誤差,使得學習速度很是快,並且很是容易去理解,可是一般不太靈活。
注意:對於參數化算法和非參數化算法之間的區別,簡單來講,參數化算法對數據進行參數化,造成不少的特徵,這種方法訓練速度很是快,並且也不須要不少的數據,可是他不是很靈活。非參數化算法對目標函數作出不多或者根本不作任何假設,可是它須要更多的數據,訓練速度很是慢,模型複雜度很是高,可是模型很是強大。
低誤差:對目標函數提出更少的假設;
高誤差:對目標函數提出更多的假設;
低誤差模型例子:KNN 和 SVM;
高誤差模型例子:線性迴歸和邏輯斯特迴歸;
1)若是咱們使用不一樣的數據去訓練同一個模型,那麼最後咱們獲得的目標函數估計也是會改變的。
2)目標函數是由機器學習的訓練數據所估計獲得的,因此咱們指望訓練數據擁有必定的方差。理想狀況下,咱們不但願目標函數從一個訓練數據集到另外一個訓練數據集有太大的變化,也就是說咱們的算法須要很好的從訓練數據中找到一些映射的特徵關係,這樣能夠保證不一樣訓練集都有一個差很少的目標函數。
低方差:隨着訓練數據集的變化,對目標函數估計值的變化很是小;
高方差:隨着訓練數據集的變化,對目標函數估計值的變化很是大;
通常而言,具備很大靈活性的非參數學習算法都具備很高的方差。
高方差例子:KNN 和 SVM。
在上面的例子中咱們能夠看到一個趨勢:參數或者線性的機器學習算法通常都會有一個很高的誤差和一個很低的方差。可是,非參數或者非線性的機器學習算法通常都有一個很低的誤差和一個很高的方差。全部,咱們須要在這二者之間找到一個平衡點,來優化咱們的算法。
好比,KNN 算法有很低的誤差和很高的方差,可是咱們能夠經過調整 k 的值來改變誤差和方差之間的權衡關係,從而達到一個比較平衡的狀態。
所以,咱們增長誤差會致使方差的減小,同理,咱們增長方差會致使誤差的減小。但在實踐中,咱們沒法去計算真正的誤差和方差值,由於咱們不知道實際的目標函數。可是,做爲一種方法,誤差和方差爲咱們提供了一種去判斷機器學習算法性能的方法。
1)機器學習是去找到一個映射函數(F),這個函數也常常被稱之爲目標函數;
2)誤差是模型所作的簡化假設,使得目標函數更加容易求解;
3)方差是在給定不一樣訓練數據集的狀況下,目標函數估計值所改變的量;
4)權衡是去調整一些參數使得誤差和方差之間相對平衡;
做者:chen_h
微信號 & QQ:862251340
簡書地址:http://www.jianshu.com/p/f143...
CoderPai 是一個專一於算法實戰的平臺,從基礎的算法到人工智能算法都有設計。若是你對算法實戰感興趣,請快快關注咱們吧。加入AI實戰微信羣,AI實戰QQ羣,ACM算法微信羣,ACM算法QQ羣。長按或者掃描以下二維碼,關注 「CoderPai」 微信號(coderpai)