1. 程式人生 > >訓練集,測試集,檢驗集的區別與交叉檢驗

訓練集,測試集,檢驗集的區別與交叉檢驗

前言

在機器學習中,不可避免要接觸到訓練集,測試集以及檢驗集,這些資料集各有各的作用,為機器學習演算法的泛化保駕護航,這裡結合《Deep Learning》中的關於訓練集,測試集和檢驗集的討論,淺談所見所學。
如有謬誤,請聯絡指正。轉載請註明出處。
聯絡方式:
e-mail: [email protected]
QQ: 973926198
github: https://github.com/FesianXu

訓練集和測試集

  機器學習模型需要訓練去更新模型中的各個引數,因此需要提供訓練集(Training Set)作為訓練樣本,假設此訓練集由資料生成分佈Pdata

生成。同時為了描述這個模型的泛化能力,需要一個同樣由Pdata生成的測試集(Test Set)進行測試,得出其泛化誤差。可以得知,訓練集和測試集是獨立同分布的,在訓練階段,模型觀測不到測試集

檢驗集

超引數

  在討論檢驗集之前,有必要先提到超引數(hyperparameter)這個概念。超引數不能或者難以通過機器學習演算法學習得出,一般由專家經過經驗或者實驗選定,如廣義線性迴歸中的多項式次數,控制權值衰減的λ等。容易想象到,不同的超引數選定控制了模型的容量和泛化能力,決定了模型的效能,事實上,超引數的除錯(Tuning of the hyperparameter)是機器學習中很關鍵的一部分。
  這裡我們假想一個場景:

我們有多個待選的權值衰減因子λ,分別是λ1,,λn,這些λ的不同選擇代表了一個模型的不同超引數狀態,其中有一個可能效能比較優的超引數,為了得到這個較為優的超引數,我們需要在多個[訓練集,測試集]元組上訓練測試,尋找最小的泛化誤差,直到找到合適的超引數為止。

  由於監督資料的獲取困難,一般來說沒有那麼多資料用來劃分這個元組,因此一般的做法是:

將資料集按一定比例劃分為訓練集(大類)和測試集(Test set),其中測試集只在最後的測試泛化誤差的時候才能被模型觀察到,而在訓練集(大類)中又將其按一定比例劃分為訓練集(Training Set)和檢驗集(validation set),其中訓練集用於模型訓練,檢驗集用於尋找最佳的超引數。一般模型會在訓練集上訓練多次,在檢驗集上檢驗多次,直到得到滿意的檢驗誤差,然後才能交給測試集得出泛化誤差。

這裡寫圖片描述

交叉檢驗(Cross Validation)

  在實際應用中,因為資料集的數量限制,常常採用交叉檢驗作為檢驗手段1,其中k折交叉檢驗(k-folds cross validation)最為常用,其中k=10最為常見。其方法十分簡單,就是將訓練集(大類)均分為K份,然後分別取出其中的第i個作為檢驗集,其餘的i1作為訓練集訓練,然後再檢驗集上檢驗。進行了K次該操作之後,採用平均值作為最終的交叉驗證誤差(CV Error),用於選擇模型。

CVError=1Ki=1KLi
其中Li是第i檢驗集的平均誤差
Li=1mj=1m(yj^yj)2,mi
這裡寫圖片描述

總結

  在這篇文章裡,主要介紹了訓練集,檢驗集,測試集之間的關係,以及引進檢驗集的目的:就是為了多次比較,得出較好的超引數,進行模型選擇。

  1. 當給定資料集D對於簡單的訓練/測試或訓練/驗證分割而言太小難以產生泛化誤差的準確估計時(因為在小的測試集上,L可能具有過高的方差),常常採用交叉驗證。

相關推薦

訓練測試檢驗區別交叉檢驗

前言 在機器學習中,不可避免要接觸到訓練集,測試集以及檢驗集,這些資料集各有各的作用,為機器學習演算法的泛化保駕護航,這裡結合《Deep Learning》中的關於訓練集,測試集和檢驗集的討論,淺談所見所學。 如有謬誤,請聯絡指正。轉載請註明出處。 聯絡方

用python3 SVM訓練測試預測文字摘要(中文)(分句分詞詞典詞袋測試建模預測)

使用SVM 訓練和預測,需要正確的資料: X:儲存特徵。可以是二維矩陣,如:[ [c1 ,c2, c3…] ,[…],…];也可以是這樣的形式[{a1:c1,a2:c2,a3:c3…},{…} …],c1,c2…表示特徵值a1,a2,a3…表示詞位置(詞在le

添加自定義監控項目配置郵件告警測試告警不發送郵件的問題處理

添加自定義監控項目 配置郵件告警 測試告警 zabbix 不發送郵件的問題處理 筆記內容:19.12添加自定義監控項目19.13/19.14配置郵件告警19.15測試告警19.16不發送郵件的問題處理筆記日期:2017-11-2019.12添加自定義監控項目自定義的監控項目是用於實現一些特

【spring mvc】後臺的API測試總提示接口實體的某一個字段不能為null但是明明給值了還提示不能為空

ont TP 報錯 分享 ima 技術 技術分享 圖片 request 實體是這三個字段 接口的實現類Controller 前臺測試給值 依舊報錯 解決方法: 需要添加@RequestBody註解 【spring mvc】後臺的API,

添加自定義監控項目配置郵件告警測試告警不發郵件的問題處理

lis led ply zabbix 監控 gin 時間 ado 客戶 Coding 添加自定義監控項目 需求:監控某臺web的80端口連接數,並出圖 兩步:1)zabbix監控中心創建監控項目;2)針對該監控項目以圖形展現 對於第一步,需要到客戶端定義腳本,並賦予755

Angular6 配置專案開發環境測試環境生產環境

搜過很多文章說的都是關於Angular4的配置,後面自己又找了許多資料,最後總結了Angular6 如何配置開發環境,測試環境,生產環境: 1、在environments資料夾裡新建三個檔案: //生產環境 environment.prod.ts: export const enviro

關於測試策略測試方針測試計劃測試方案的理解

技術 就會 什麽 ali 是否有效 軟件 是否 width 計劃 一.什麽是測試策略  簡單來說就是,測什麽,怎麽測。 一般可以歸納為6個問題   1)測試的對象和範圍是什麽?   2)測試的目標是什麽?   3)測試的深度到哪裏,廣度又到哪裏?   4)測試的重點

webstorm啟用碼永久有效測試可用更新時間2018.10.20

2RRJMBXW33-eyJsaWNlbnNlSWQiOiIyUlJKTUJYVzMzIiwibGljZW5zZWVOYW1lIjoi5b285bK4IHNvZnR3YXJlMiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiI

Loadrunner11的使用圖解測試併發效能等的具體步驟

每次開啟電腦都需要破解一次Lr,漢化版的有問題,建議使用英文版的。我測試的環境是Windows7+IE8+LR11。(在Windows10上試過,谷歌和IE11都不能正常執行),以下我會具體來操作,最終獲得併發的集合點圖,和事務響應圖。 首先建立指令碼,如下圖 編輯錄制

tomcat監控指令碼(監控程序測試介面告警動作為傳送郵件)

伺服器環境:centos7.2 64位 tomcat8.5.6 tomcat 監控功能共需要兩個指令碼,如下: initMonitor.sh #!/bin/sh #初始化監控指令碼相關變數 export tomcat_name=apac

阿里雲部署Fabric網路測試e2e_cli出錯處理

部署Fabric,跑e2e_cli的時候,執行network_setup.sh up,出現錯誤 配置錯誤彙總 錯誤:sign

內存寄存器和cache的區別聯系

拷貝 技巧 line 一段時間 arc 但是 nbsp 貴的 硬盤 1. 寄存器是中央處理器內的組成部份。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及

去噪效果評價演算法分析SNR,PSNR,SSIM等的區別優劣對比

(1)SNR與PSNR: SNR計算影象自身的信噪比,評價一個影象中訊號的強度或者噪聲的強度,其輸入是一幅影象資料。SNR並不能客觀評價影象的去噪效果或者壓縮影象的相似度。 PSNR計算兩幅影象之間的相似度,評價的是一幅estimated的影象相對於原影象的噪聲強度,這個概

Java中String、StringBuffer、StringBuilder區別使用

一、簡介 在 Java 語言中,共有 8 個基本的資料型別,分別為:byte、short、int、long、float、double、boolean 和 char,其中 char 型別用於表示單個字元,例如 a、b、c 、A、B、C、& 這些大小寫

電腦科學採用訓練資料驗證資料測試資料 的方法 為什麼不採用統計學中常用的假設檢驗呢? (引數檢驗 和 非引數檢驗

如題所說, 這個問題作為一個本科讀管理,碩士讀計算機卻旁修經濟學,博士在讀計算機的我來說感覺比較迷惑的。在管理學,經濟學,計算機這三門學科在解決優化問題的時候採用的方法大致相同,其核心都是統計學,管理學,電腦科學中採用的基礎方法,如線性迴歸,多元線性迴歸,廣義線性迴歸,決策樹,SVM,ID3,KNN等分類方法

卷積神經網路入門一種全卷積神經網路(LeNet)從左至右依次為卷積→子取樣→卷積→子取樣→全連線→全連線→高斯連線測試 最後為了檢驗 CNN 能否工作我們準備不同的另一組圖片標記(不能在訓練

轉載來自:http://blog.csdn.net/maweifei/article/details/52443995 第一層——數學部分 CNN 的第一層通常是卷積層(Convolutional Layer)。輸入內容為一個 32 x 32 x 3 的畫素值陣列。現在

sklearn之Cross-validation、GridSearchCV以及訓練(train)、測試(test)、驗證(validate)的辨析

1.訓練集(train)、測試集(test)、驗證集(validate) 對於初學者而言,訓練集、測試集、驗證集這三個詞可能會讓你很迷糊,特別是後兩者。這裡我儘量用簡單的話說一下我自己的理解,希望可以講明白:         對於機器學習模型訓練而言,

訓練測試和驗證劃分的意義

訓練集、驗證集和測試集的意義 有了模型後,訓練集就是用來訓練引數的,說準確點,一般是用來梯度下降的。而驗證集基本是在每個epoch完成後,用來測試一下當前模型的準確率。因為驗證集跟訓練集沒有交集,因此這個準確率是可靠的。那麼為啥還需要一個測試集呢? 這就需要區分一下模型的各種引數了

訓練驗證測試

要明確train/validation/test三個集合需要先了解什麼是hyperparameter。機器學習中模型的引數有的可以通過訓練獲得最優的值,而有些無法通過訓練獲得,只能通過人工設定,這部分需要人工設定的引數就是hyperparameters,比如KN

【123】TensorFlow 多個特徵值線性迴歸並且使用訓練、驗證測試的例子

我們的目標是構建數學模型來預測房價。通常情況下,會有多個因素影響房價,因此使用多個特徵值做線性迴歸。數學上,每個特徵值視為一個自變數,相當與構建一個包含多個自變數的函式。 我寫了兩個 python 檔案,一個是用來訓練模型,並使用驗證集驗證模型。另