Stanford機器學習---第六講. 怎樣選擇機器學習方法、系統

原文:http://blog.csdn.net/abcjennifer/article/details/7797502算法

本欄目(Machine learning)包括單參數的線性迴歸、多參數的線性迴歸、Octave Tutorial、Logistic Regression、Regularization、神經網絡、機器學習系統設計、SVM(Support Vector Machines 支持向量機)、聚類、降維、異常檢測、大規模機器學習等章節。全部內容均來自Standford公開課machine learning中Andrew老師的講解。(https://class.coursera.org/ml/class/index網絡

 

 

第六講. 怎樣選擇機器學習方法——Advice for applying machine learningapp

===============================機器學習

候選機器學習方法函數

評價方法假設性能

☆模型選擇和訓練、驗證明驗數據
學習

☆區別診斷偏離bias和誤差variance
測試

☆規則化 和 bias/variance
flex

Learning Curve:何時增長訓練數據training set纔是有效的?ui

 

===============================

候選機器學習方法——Deciding what to try next

 

還用房價的prediction舉例,假設咱們已經實現了用規則化的線性迴歸方法預測房價:

但發現該預測應用於一個新的訓練數據上時有很大偏差(error),這時應採起一些解決方案:

 

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呢?診斷就是可以判斷一種學習算法能不能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.

 

 

 

 

===============================

評價方法假設——Evaluating a hypothesis

首先呢,咱們將全部數據分爲兩個集合,一個Trainning set和一個Testing set,用Training set獲得參數向量,用Testing set進行測試(好比分類)。

這時,將test set的error分爲線性迴歸linear regression和邏輯迴歸logistic regression兩類:

-線性迴歸的error:

-邏輯迴歸的error:

 

 

 

===============================

模型選擇和訓練、驗證明驗數據

 

面對模型選擇問題,如何才能獲得一個just fit的模型而不會致使underfit 或者overfit呢?咱們引入一類數據集,叫作cross validation set,即交叉驗證數據集。將全部數據按<6,2,2>分爲training set , cross validation set , testing set三類,以下圖所示:

其error計算公式以下,其實三類計算方法大同小異,相同的公式只是換了數據及而已:

 

進行模型選擇的方法其實很簡單,對應下圖你們來看:

-首先,創建d個model 假設(圖中有10個,d表示其id),分別在training set 上求使其training error最小的θ向量,那麼獲得d個θ

-而後,對這d個model假設,帶入θ,在cross validation set上計算J(cv),即cv set error最小的一個model 做爲 hypothesis,以下圖中J(cv)在第4組中最小,便取d=4的假設。

PS: 其實d表示dimension,也就是維度,表示該hypothesis的最大polynomial項是d維的。

PS': 通常地,J(cv)是大於等於J(train)的

 

 

===============================

區別診斷偏離bias和誤差variance

前面的課程中咱們曾講過相同數據不一樣迴歸狀況:

 

 

這一節中,咱們給你們區分兩個概念:bias vs. variance。

以下圖所示爲error隨不一樣dimension的model變化圖,能夠想見,隨d上升是一個由underfit到overfit的過程,這個過程當中,training set的error逐漸降低,而cv set的error先降後升。

 

 

這裏就產生了bias和variance的概念:

bias:J(train)大,J(cv)大,J(train)≈J(cv),bias產生於d小,underfit階段;

variance:J(train)小,J(cv)大,J(train)<<J(cv),variance產生於d大,overfit階段;

以下圖所示:

 

來來,作道題:

 

 

-------------------------------------------------------------

 

好,有了初步概念,如今咱們來看bias和variance的由來及具體定義:

給定數據及D(好比一個點集吧),對於這些數據集上的點咱們能夠計算每一個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

 

 

 

總結一下:

variance:估計自己的方差。

bias:估計的指望和樣本數據樣本但願獲得的迴歸函數之間的差異。

 

具體來說,我有一個統計量D(好比統計某大學研一學生身高在[0.5-1],[1,1.1],[1.1,1.2]……[1.9,2]之間的人數),這樣能夠造成一些離散點。而後呢,本校研一有20個班,每一個班就均可以擬合成一條估計曲線f(x),這20條曲線呢,有一個平均值,也就是估計指望(均值)曲線E(f(x,D))。

 

variance是指,這20條估計曲線與最後估計指望(均值)之間的距離,也就是估計曲線自己的方差,是不可能爲0的。

bias是指,20條估計曲線的均值與實際最佳擬合狀況之間的距離。

 

這樣一來呢,對於regularization項中的λ,

 

λ小 , d大 -> overfit(flexible) -> 

對於不一樣的訓練數據集(不一樣班級的數據)的擬合結果抖動很大 -> variance大 

bias是估計均值與實際值指望的誤差 -> bias小

下圖中,左圖爲擬合的20條曲線;右圖紅線爲20條曲線的指望,綠色爲實際數據指望所得的擬合曲線。

 

 

 

λ大 , d小 -> underfit(stable) -> 

對於不一樣的訓練數據集(不一樣班級的數據)的擬合結果抖動較小 -> variance小

bias是估計均值與實際值指望的誤差 ,不能很好地進行迴歸-> bias大

下圖中,左圖爲擬合的20條曲線;右圖紅線爲20條曲線的指望,綠色爲實際數據指望所得的擬合曲線。

 

 

下圖所示爲λ與bias, variance, error之間的關係:

 

 

咱們但願的數據的variance和bias都不要大:

 

那麼着就是一個variance和bias之間的tradeoff 了~

 

 

 

 

 

 

 

===============================

規則化 和 bias/variance

 

上面一節中講了bias和variance的誕生,那麼這一節中偶們就將他們應用於regularization中。

你們還記的什麼是regularization麼?regularization就是爲了防止overfit而在cost function中引入的一個份量。

還不清楚?看下圖吧,regularization項就是cost function J(θ)中的最後一項,其中λ太大致使underfit,λ過小致使overfit……

 

 

將λ從0,0.01,一直往上每次乘以2,那麼到10.24總共能夠試12次λ。

這12個λ會獲得12個model的 cost function,每一個對應有J(θ)和 Jcv(θ).

和模型選擇的方法相同,首先選出每一個cost function下令J(θ)最小的θ,而後取出令Jcv(θ)最小的一組定爲最終的λ。

 

 

來來,看看你作的對不:

 

圖畫出來就是這個樣子滴:

 

λ過小致使overfit,產生variance,J(train)<<J(cv)

λ太大致使underfit,產生bias,J(train) ≈ J(cv)

能明白個人意思麼?

 

 

 

===============================

Learning Curve:何時增長訓練數據training set纔是有效的?

 

這一小節想要講講訓練數據個數m和error之間的關係。從上面這幅圖中咱們可知(不知的話用極限思惟想一想),訓練數據越少(若是隻有一個),J(train)越小,J(cv)越大;m越大,J(train)越大(由於越難perfectly擬合),J(cv)越小(由於越精確),懂個人意思吧?

 

那麼咱們分別就High Bias 和 High Variance來看看增長training set個數,即m,是否有意義?!

 

Underfit 的 High bias: 增長m無濟於事!

 

Overfit的 High Variance: 增長m使得J(train)和J(cv)之間gap減少,有助於performance提升!

 

來來,作道題:

 

由圖中可見,增長訓練數據的個數對於過擬合是有用的,對於underfit是徒勞!

下面總結一下,重溫最初的解決方案列表:

 

 

針對underfit和overfit,分別是什麼狀況呢?見下圖:

 

 

這章很是有用,講了選擇最佳擬合model的問題,是machine learning的常見問題,但願能對你們選擇ml 模型有所幫助。

相關文章
相關標籤/搜索