原文:http://blog.csdn.net/abcjennifer/article/details/7797502
本欄目(Machine learning)包括單參數(shù)的線性回歸、多參數(shù)的線性回歸、Octave Tutorial、Logistic Regression、Regularization、神經(jīng)網(wǎng)絡(luò)、機器學(xué)習(xí)系統(tǒng)設(shè)計、SVM(Support Vector Machines 支持向量機)、聚類、降維、異常檢測、大規(guī)模機器學(xué)習(xí)等章節(jié)。所有內(nèi)容均來自Standford公開課machine learning中Andrew老師的講解。(https://class.coursera.org/ml/class/index)
第六講. 怎樣選擇機器學(xué)習(xí)方法——Advice for applying machine learning
===============================
候選機器學(xué)習(xí)方法
評價方法假設(shè)
☆模型選擇和訓(xùn)練、驗證實驗數(shù)據(jù)
☆區(qū)別診斷偏離bias和偏差variance
☆規(guī)則化 和 bias/variance
Learning Curve:什么時候增加訓(xùn)練數(shù)據(jù)training set才是有效的?
===============================
候選機器學(xué)習(xí)方法——Deciding what to try next
還用房價的prediction舉例,假設(shè)我們已經(jīng)實現(xiàn)了用規(guī)則化的線性回歸方法預(yù)測房價:
但發(fā)現(xiàn)該預(yù)測應(yīng)用于一個新的訓(xùn)練數(shù)據(jù)上時有很大誤差(error),這時應(yīng)采取一些解決方案:
Get more training examples
Try smaller sets of features
Try getting additional features
Try adding polynomial features (e.g. ?x1^2, x2^2, x1x2...)
Try decreasing λ
Try increasing λ
Machine Learning 方法的診斷:
-?什么是診斷Dignostic呢?診斷就是能夠判斷一種學(xué)習(xí)算法能不能work,并且改善該算法性能的一個測試。
Diagnostic: A test that you can run to gain insight what is/isn't working with a learning algorithm, and gain guidance as to how best to improve its performance.
-診斷的效果:Diagnostics can take time to implement, but doing so can be a very good use of your time.
===============================
評價方法假設(shè)——Evaluating a hypothesis
首先呢,我們將所有數(shù)據(jù)分為兩個集合,一個Trainning set和一個Testing set,用Training set得到參數(shù)向量,用Testing set進行測試(比如分類)。
這時,將test set的error分為線性回歸linear regression和邏輯回歸logistic regression兩類:
-線性回歸的error:
-邏輯回歸的error:
===============================
模型選擇和訓(xùn)練、驗證實驗數(shù)據(jù)
面對模型選擇問題,如何才能得到一個just fit的模型而不會導(dǎo)致underfit 或者overfit呢?我們引入一類數(shù)據(jù)集,叫做cross validation set,即交叉驗證數(shù)據(jù)集。將所有數(shù)據(jù)按<6,2,2>分為training set , cross validation set , testing set三類,如下圖所示:
其error計算公式如下,其實三類計算方法大同小異,相同的公式只是換了數(shù)據(jù)及而已:
進行模型選擇的方法其實很簡單,對應(yīng)下圖大家來看:
-首先,建立d個model 假設(shè)(圖中有10個,d表示其id),分別在training set 上求使其training error最小的θ向量,那么得到d個θ
-然后,對這d個model假設(shè),帶入θ,在cross validation set上計算J(cv),即cv set error最小的一個model 作為 hypothesis,如下圖中J(cv)在第4組中最小,便取d=4的假設(shè)。
PS: 其實d表示dimension,也就是維度,表示該hypothesis的最大polynomial項是d維的。
PS': 一般地,J(cv)是大于等于J(train)的
===============================
區(qū)別診斷偏離bias和偏差variance
前面的課程中我們曾講過相同數(shù)據(jù)不同回歸情況:
這一節(jié)中,我們給大家區(qū)分兩個概念:bias?vs.?variance。
如下圖所示為error隨不同dimension的model變化圖,可以想見,隨d上升是一個由underfit到overfit的過程,這個過程中,training set的error逐漸下降,而cv set的error先降后升。
這里就產(chǎn)生了bias和variance的概念:
bias:J(train)大,J(cv)大,J(train)≈J(cv),bias產(chǎn)生于d小,underfit階段;
variance:J(train)小,J(cv)大,J(train)<<J(cv),variance產(chǎn)生于d大,overfit階段;
如下圖所示:
來來,做道題:
-------------------------------------------------------------
好,有了初步概念,現(xiàn)在我們來看bias和variance的由來及具體定義:
給定數(shù)據(jù)及D(比如一個點集吧),對于這些數(shù)據(jù)集上的點我們可以計算每個index下點的平均值(即期望)t(x) = E(y|x),則我們有mean square error:
MSE = 1/n * Σ(f(x)-t(x))^2
MSE(mean square error) = Bias2 + Variance +noise
定義上是這么講的:
Variance: measures the extent to which the solutions for individual data sets vary around their average, hence this measures the extent to which the function f(x) is sensitive to theparticular choice of data set.
Bias: represents the extent to which the average prediction over all data sets differs from the desired regression function.
Our goal is to minimize the expected loss, which we havedecomposed into the?sum of a (squared) bias, a variance, and a constant noiseterm. As we shall see, there?is a trade-off between bias and variance, with very flexible models(overfit) having low bias?and high variance, and relatively rigid models(underfit) having high bias and low variance
總結(jié)一下:
variance:估計本身的方差。
bias:估計的期望和樣本數(shù)據(jù)樣本希望得到的回歸函數(shù)之間的差別。
具體來講,我有一個統(tǒng)計量D(比如統(tǒng)計某大學(xué)研一學(xué)生身高在[0.5-1],[1,1.1],[1.1,1.2]……[1.9,2]之間的人數(shù)),這樣可以形成一些離散點。然后呢,本校研一有20個班,每個班就都可以擬合成一條估計曲線f(x),這20條曲線呢,有一個平均值,也就是估計期望(均值)曲線E(f(x,D))。
variance是指,這20條估計曲線與最后估計期望(均值)之間的距離,也就是估計曲線本身的方差,是不可能為0的。
bias是指,20條估計曲線的均值與實際最佳擬合情況之間的距離。
這樣一來呢,對于regularization項中的λ,
λ小 , d大 -> overfit(flexible) ->
對于不同的訓(xùn)練數(shù)據(jù)集(不同班級的數(shù)據(jù))的擬合結(jié)果抖動很大 -> variance大
bias是估計均值與實際值期望的偏差 -> bias小
下圖中,左圖為擬合的20條曲線;右圖紅線為20條曲線的期望,綠色為實際數(shù)據(jù)期望所得的擬合曲線。
λ大 , d小 -> underfit(stable) ->
對于不同的訓(xùn)練數(shù)據(jù)集(不同班級的數(shù)據(jù))的擬合結(jié)果抖動較小 -> variance小
bias是估計均值與實際值期望的偏差 ,不能很好地進行回歸-> bias大
下圖中,左圖為擬合的20條曲線;右圖紅線為20條曲線的期望,綠色為實際數(shù)據(jù)期望所得的擬合曲線。
下圖所示為λ與bias, variance, error之間的關(guān)系:
我們希望的數(shù)據(jù)的variance和bias都不要大:
那么著就是一個variance和bias之間的tradeoff 了~
===============================
規(guī)則化 和 bias/variance
上面一節(jié)中講了bias和variance的誕生,那么這一節(jié)中偶們就將他們應(yīng)用于regularization中。
大家還記的什么是regularization么?regularization就是為了防止overfit而在cost function中引入的一個分量。
還不清楚?看下圖吧,regularization項就是cost function J(θ)中的最后一項,其中λ太大導(dǎo)致underfit,λ太小導(dǎo)致overfit……
將λ從0,0.01,一直往上每次乘以2,那么到10.24總共可以試12次λ。
這12個λ會得到12個model的 cost function,每個對應(yīng)有J(θ)和 Jcv(θ).
和模型選擇的方法相同,首先選出每個cost function下令J(θ)最小的θ,然后取出令Jcv(θ)最小的一組定為最終的λ。
來來,看看你做的對不:
圖畫出來就是這個樣子滴:
λ太小導(dǎo)致overfit,產(chǎn)生variance,J(train)<<J(cv)
λ太大導(dǎo)致underfit,產(chǎn)生bias,J(train) ≈ J(cv)
能明白我的意思么?
===============================
Learning Curve:什么時候增加訓(xùn)練數(shù)據(jù)training set才是有效的?
這一小節(jié)想要講講訓(xùn)練數(shù)據(jù)個數(shù)m和error之間的關(guān)系。從上面這幅圖中我們可知(不知的話用極限思維想想),訓(xùn)練數(shù)據(jù)越少(如果只有一個),J(train)越小,J(cv)越大;m越大,J(train)越大(因為越難perfectly擬合),J(cv)越小(因為越精確),懂我的意思吧?
那么我們分別就High Bias 和 High Variance來看看增加training set個數(shù),即m,是否有意義?!
Underfit 的 High bias: 增加m無濟于事!
Overfit的 High Variance: 增加m使得J(train)和J(cv)之間gap減小,有助于performance提高!
來來,做道題:
由圖中可見,增加訓(xùn)練數(shù)據(jù)的個數(shù)對于過擬合是有用的,對于underfit是徒勞!
下面總結(jié)一下,重溫最初的解決方案列表:
針對underfit和overfit,分別是什么情況呢?見下圖:
這章非常有用,講了選擇最佳擬合model的問題,是machine learning的常見問題,希望能對大家選擇ml 模型有所幫助。