1. 程式人生 > >斯坦福大學機器學習——交叉驗證(Cross Validation)

斯坦福大學機器學習——交叉驗證(Cross Validation)

假設我們需要從某些候選模型中選擇最適合某個學習問題的模型,我們該如何選擇?以多元迴歸模型為例:,應該如何確定k的大小,使得該模型對解決相應的分類問題最為有效?如何在偏倚(bias)和方差(variance)之間尋求最佳的平衡點?更進一步,我們同樣需要知道如何在加權迴歸模型中選擇適當的波長引數,或者在基於正規化的SVM模型中選擇適當的引數C?

我們假設模型集合為有限集,我們的目的就是從這d個模型中,選擇最有效的模型。

假設樣本集為S,根據經驗風險最小化原則(ERM),可能會使用這樣的演算法:

1.在S上訓練每個模型,得到相應的假設函式

2.選擇訓練誤差最小的假設函式,即為我們需要的函式。

然而,這樣的演算法實際上並不有效。以多元迴歸模型為例,指數越高,對樣本集S的擬合就越準確,這樣雖然保證了較低的訓練誤差,但是這種方法會使泛化誤差變得很大,因此,這並不是一個好的方法。

簡單交叉驗證

下面介紹一種方法,稱為簡單交叉驗證(simple cross validation)

隨機將S分為(例如70%的樣本)和(剩下30%的樣本),這裡稱作簡單交叉驗證集;

1.在上訓練每個模型,得到相應的假設函式
2.將每個假設函式通過交叉驗證集進行驗證,選擇使得訓練誤差最小的

3.通過簡單交叉驗證,可以得到每個假設函式的真實的泛化誤差,從而可以選擇泛化誤差最小的那個假設函式。

通常,預留1/4-1/3的樣本作為交叉驗證集,而剩下的作為訓練集使用。

步驟3也可以替換成這樣的操作:選擇相應的模型,使得訓練誤差最小,然後在用對整個樣本集S進行訓練。使用這樣的方法原因是有的學習演算法對於初試的條件非常敏感,因此,他也許在
上表現良好,但是在整個樣本集中卻存在很大的誤差,因此需要再次帶入整個樣本集進行驗證。

簡單交叉驗證的不足之處在於:此方法浪費了中的資料,即使我們將模型再次帶入整個樣本集,我們仍然只用了70%的樣本建模。如果樣本的採集非常的容易以致樣本量非常之大,使用交叉驗證方法沒有什麼問題;但如果樣本非常稀缺,採集困難,那麼我們就需要考慮一種能夠充分利用樣本的方法。

k-折交叉驗證

k-折交叉驗證將樣本集隨機劃分為k份,k-1份作為訓練集,1份作為驗證集,依次輪換訓練集和驗證集k次,驗證誤差最小的模型為所求模型。具體方法如下:

1.隨機將樣本集S劃分成k個不相交的子集,每個子集中樣本數量為m/k個,這些子集分別記作

2.對於每個模型,進行如下操作:

for j=1 to k

作為訓練集,訓練模型,得到相應的假設函式

再將作為驗證集,計算泛化誤差

3.計算每個模型的平均泛化誤差,選擇泛化誤差最小的模型

K-折交叉驗證方法,每次留作驗證的為總樣本量的1/k(通常取k=10),因此每次用於訓練的樣本量相應增加了,然而K-折交叉驗證對於每個模型都需要執行k次,他的計算成本還是較高的。
還有一種k-折交叉驗證的極端形式,當k=m時,即把樣本集S劃分為m個子集,其中的m-1個樣本作為訓練集,剩下1個樣本作為驗證集,如此迴圈m次,選取驗證誤差最小的模型。
以上介紹的各種交叉驗證的方法,可用於模型的選擇,但也可以針對單個演算法和模型進行評價。

小結:交叉驗證是一種模型選擇方法,其將樣本的一部分用於訓練,另一部分用於驗證。因此不僅考慮了訓練誤差,同時也考慮了泛化誤差。從這裡可以看出機器學習、資料探勘與傳統統計學的一個重要差別:傳統統計學更注重理論,追求理論的完整性和模型的精確性,在對樣本建立某個特定模型後,用理論去對模型進行各種驗證;而機器學習/資料探勘則注重經驗,如交叉驗證,就是通過不同模型在同一樣本上的誤差表現好壞,來選擇適合這一樣本的模型,而不去糾結理論上是否嚴謹。

相關推薦

斯坦福大學機器學習——交叉驗證Cross Validation

假設我們需要從某些候選模型中選擇最適合某個學習問題的模型,我們該如何選擇?以多元迴歸模型為例:,應該如何確定k的大小,使得該模型對解決相應的分類問題最為有效?如何在偏倚(bias)和方差(variance)之間尋求最佳的平衡點?更進一步,我們同樣需要知道如何在加權迴歸模型中

機器學習交叉驗證cross-validation

1、什麼是交叉驗證  交叉驗證(Cross validation),交叉驗證用於防止模型過於複雜而引起的過擬合。有時亦稱迴圈估計, 是一種統計學上將資料樣本切割成較小子集的實用方法。於是可以先在一個子集上做分析, 而其它子集則用來做後續對此分析的確認及驗證。 一開始的子集被稱

Udacity機器學習入門——交叉驗證cross-validation

測試資料可以讓你評估你的分類器或迴歸在獨立資料集上的效能,還能幫助你避免過度擬合在sklearn中訓練/測試分離載入資料集以適應線性SVM:from sklearn import datasets from sklearn.svm import SVC iris = dat

斯坦福大學機器學習——誤差理論Error Theory

一、偏倚(bias)和方差(variance) 在討論線性迴歸時,我們用一次線性函式對訓練樣本進行擬合(如圖1所示);然而,我們可以通過二次多項式函式對訓練樣本進行擬合(如圖2所示),函式對樣本的擬合程式看上去更“好”;當我們利用五次多項式函式對樣本進行擬合(如圖3所示),

【尋優演算法】交叉驗證Cross Validation引數尋優的python實現:多引數尋優

【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:多引數尋優 一、網格搜尋原理 二、網格搜尋+交叉驗證用於多引數尋優的python實現 1、訓練模型及待尋優引數 2、直接迴圈巢狀實現網格搜尋 + cros

【尋優演算法】交叉驗證Cross Validation引數尋優的python實現:單一引數尋優

【尋優演算法】交叉驗證(Cross Validation)引數尋優的python實現:單一引數尋優 一、交叉驗證的意義 二、常用的交叉驗證方法 1、Hold one method 2、K-flod CV 3、Leave-One-Ou

交叉驗證Cross-validation

AI---訓練集(train set) 驗證集(validation set) 測試集(test set) 在有監督(supervise)的機器學習中,資料集常被分成2~3個即: 訓練集(train set) 驗證集(validation set) 測試集(test set

[轉載] 交叉驗證Cross Validation簡介

一、訓練集 vs. 測試集 在模式識別(pattern recognition)與機器學習(machine learning)的相關研究中,經常會將資料集(dataset)分為訓練集(training set)跟測試集(testing set)這兩個子集,前者用以建立

模型評估和超引數調整——交叉驗證 cross validation

讀《python machine learning》chapt 6 Learning Best Practices for Model Evaluation and Hyperparameter Tuning【主要內容】(1)獲得對模型評估的無偏估計(2)診斷機器學習演算法的

交叉驗證Cross Validation與網格搜尋Grid Search的原理及實證分析

1.交叉驗證背景在機器學習演算法中,當資料量不充分時,需要對資料進行重複使用,就出現了交叉驗證方法(Cross Validation),簡稱CV。交叉驗證顧名思義就是重複使用資料,把資料分為訓練集(Trading Set)、驗證集(Validation Set)、測試集(Te

sklearn中的交叉驗證Cross-Validation

這個repo 用來記錄一些python技巧、書籍、學習連結等,歡迎star sklearn是利用python進行機器學習中一個非常全面和好用的第三方庫,用過的都說好。今天主要記錄一下sklearn中關於交叉驗證的各種用法,主要是對sklearn官方文件

交叉驗證cross validation

        針對不同引數和結構的模型,他們的泛化能力我們為了評估無從可知,為了瞭解模型的泛化能力,我們引入了交叉驗證。所以我們在劃分資料集的時候,通常會將資料集劃分為三個資料集,三個資料集分別是:訓練集(train set),評估集(valid set)和測試集(test

機器學習】k-fold cross validationk-摺疊交叉驗證

交叉驗證的目的:在實際訓練中,模型通常對訓練資料好,但是對訓練資料之外的資料擬合程度差。用於評價模型的泛化能力,從而進行模型選擇。 交叉驗證的基本思想:把在某種意義下將原始資料(dataset)進行分組,一部分做為訓練集(train set),另一部分做為驗證集(valid

斯坦福大學機器學習筆記——異常檢測演算法高斯分佈、多元高斯分佈、異常檢測演算法

異常檢測問題介紹: 異常檢測演算法主要用於無監督學習問題,但從某種角度看它又類似於一種有監督學習的問題,下面我們從一個例子中簡單介紹一下什麼是異常檢測問題。 比如我們有一個飛機引擎製造商,對於一個新造出的飛機引擎我們想判斷這個引擎是不是異常的。 假如我們有

吳恩達斯坦福大學機器學習 CS229 課程學習筆記

說到機器學習總繞不過幾個鼎鼎大名的人物,他們都創造了不少的機器學習資料,斯坦福吳恩達Andrew Ng的公開課CS229;Google李飛飛的CS231、周志華的、李航的《統計學習方法》、林軒田的《機器學習基石》、Peter Harringtond 的《機器學習實戰》、周志華

斯坦福大學機器學習筆記——聚類k-均值聚類演算法、損失函式、初始化、聚類數目的選擇

上面的部落格的演算法都是有監督學習的演算法,即對於每個資料我們都有該資料對應的標籤,資料集的形式如下: 而今天我們學習的演算法是一種無監督學習的演算法——聚類,該演算法中的每個資料沒有標籤,資料集的形式如下: K-均值聚類 k-均值聚類是一種最常見

斯坦福大學機器學習筆記——推薦系統協同過濾、低秩分解、推薦系統

這個部落格讓我們來討論一下推薦系統,首先我們來討論一下為什麼學習推薦系統: 1. 推薦系統是機器學習中的一個重要應用,它已經用於很多企業中,比如淘寶、今日頭條、亞馬遜等。它們會根據你的瀏覽記錄,當你再

Machine LearningStanford| 斯坦福大學機器學習筆記--第一週1.監督學習與無監督學習的介紹

以上例子中,總共有兩個特徵,即病人年齡和腫瘤大小。在別的ML問題中,經常會用到更多特徵,別人在研究這個問題時, 通常使用如下這些特徵:比如腫瘤的厚度,腫瘤細胞大小和形狀的一致性等等。 真正對於一些學習問題,用到的不只是三五個特徵,經常要用到無數多個特徵,非常多的屬性。所以,你的學習演算法要利用很多的屬性或特徵

斯坦福大學機器學習筆記——多變數的線性迴歸以及梯度下降法注意事項內有程式碼

在前面部落格中介紹了單變數線性迴歸的實現過程,本文將介紹多變數線性迴歸演算法。 兩者的對比如下: 1.資料方面的差異: 單變數線性迴歸資料: 多變數線性迴歸資料: 對於單變數線性迴歸來說,只有一個特徵(房子的大小),而對於多變數線性特徵迴歸特徵

斯坦福大學機器學習筆記——單變數的線性迴歸以及損失函式和梯度下降法包含程式碼

迴歸問題: 所謂的迴歸問題就是給定的資料集,且每個資料集中的每個樣例都有其正確的答案,通過給定的資料集進行擬合,找到一條能夠最好代表該資料集的曲線,然後對於給定的一個樣本,能夠預測出該樣本的答案(對於迴歸問題來說,最終的輸出結果是一個連續的數值)。比如