1. 程式人生 > >資料的劃分——訓練集,驗證集,測試集

資料的劃分——訓練集,驗證集,測試集

1.為什麼要對資料進行劃分,越多的資料訓練的模型不是越好嗎?

      的確,模型的效能和訓練資料的多少有很大關係,我們先看看這三個集合的用處

訓練集(training set)

      訓練集的作用就是訓練模型,形成模型的內部結構和引數估計,比如古典的線性迴歸模型,每個變數前邊的引數都是由訓練集估計出來的,這裡我們要區分一個概念,引數和超引數:

       引數(parameter)是依賴於訓練集的,對於同一份資料的同一個模型,引數是唯一的。

       超引數(hyperparameter)是不依賴與訓練集合的,他是我們人為指定的,可以取任意合理值的,比如K近鄰的聚類中心,隨機森林的決策樹數量。除此之外,模型確定引數的標準,都是預測誤差的最小化或者AUC值的最大化(只要你不改程式),但是超引數的選擇就可以根據自己需要的情況選取,沒有絕對的標準,換句話說,含有超引數的模型應用要更加靈活一些。

驗證集(validation)

      驗證集的存在就是為了對超引數的選擇,因為我的訓練集已經決定了引數了,再由訓練集得出超引數,很容易造成過擬合,所以我們需要一個獨立於訓練集的資料,是我們的模型不至於鑽進訓練集的牛角尖,這裡可能不是很好理解,我舉個例子:

      要讓一個神經網路模型學習識別貓,我隨機給了機器300張貓的圖片,它學習到了很多特徵,眼睛、嘴巴、牙齒、四肢等等,但是我再依據這些圖片來調超引數,他就可能學習到訓練集特有的特徵,比如訓練集內黑貓比較多,白貓比較少,模型就會認為,大部分的貓都是黑色的,但這只是因為隨機性產生的訓練集特有的特徵,對其他集合和樣本並不適用。

測試集(test set)

       測試集的情況就比較特殊了,因為從模型訓練的角度,測試集不參與模型的訓練,也不參與模型的選擇,他能做的就是像其他人展示模型的效能,換句話說,測試集不為你的模型提供任何資訊,就像向領導彙報工作的ppt一樣,在做ppt之前,所有工作都做完了,只是藉助ppt向領導展示,也正因為如此,測試集的資料,要儘可能貼近實際中總體的分佈,一定要從總體中隨機抽取,與總體分佈不符的測試集,沒有模擬實際工作的作用,它的準確率也不能夠代表實際工作的情況,下面以二分類問題的預測結果為例,證明準確率是類別比例的函式。

預測結果預測結果
NegativePositive
實際類別NegativeTrue Negative(TN)False Positive(FP)
實際類別PositiveFalse Negative(FN)True Positive(TP)

       測試集的準確率=(TN+TP)/(TN+TP+FN+FP)

       模型對Negative的識別能力F1=TN/(TN+FP),表示對實際N類能正確識別的比例 

       模型對Positive的識別能力F2=TP/(FN+TP),表示對實際P類能正確識別的比例

假設實際中N出現的概率為α,P出現的概率為1-α,根據全概率公式:

      實際工作中模型的準確率accuracy=αF1+(1-α)F2,當F1和F2確定的時候,accuracy是由α決定的函式,α越大,accuracy越接近F1;α越小,accuracy越接近F2,一個能被我們操縱的準確率並沒有什麼用,但是當測試集是來自總體的隨機樣本,accuracy是模型對總體估計的無偏估計,才能代表模型實際工作的效果。

(細心的大家一定發現了,如果F1=F2,accuracy就不收α的影響,但是實際中這種情況並不多見)

      關於模型的評價,準確率只是最基本的評價指標,可以看到,準確率僅僅反應了混淆矩陣主對角線上的部分資訊,遺漏了很多其他的問題,後面會專門介紹一下模型預測結果的評價指標。

2.怎麼劃分訓練集,驗證集和測試集?

        使用沒有超引數的模型,如古典的線性迴歸模型,就不需要驗證集,可以採取7:3的比例隨機劃分訓練集和測試集。

        需要驗證集的模型,如隨機森林模型,可以採取6:2:2的比例,

     注意!!!一定要隨機劃分!!!

以上是我個人淺薄的理解,希望各位高手幫忙指正,有什麼意見儘管提,我一定虛心改正,因為我不是學計算機的,這些資料分析步驟的程式語言我會隨著學習逐步補全。

希望每個人都能對未知的領域保持最起碼的敬畏和尊重

相關推薦

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

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

【無私分享:從入門到精通ASP.NET MVC】從0開始一起搭框架、做專案(7.1) 模組管理驗證許可權展示模組列表

索引 簡述 今天我們來做模組管理的 展示 模組列表 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。

Jmeter 對於從A登入頁輸入使用者名稱密碼驗證登入後跳轉到C頁面中間經過一個B頁面該如何測試

1,右擊測試計劃,點新增---Threads---執行緒組 2,右擊執行緒組,新增---配置元件---http請求預設值(新增http請求預設值是為了方便每次新增http請求不用在輸入協議、伺服器名稱或IP、埠號) 具體配置如下 3,右擊執行緒組,新增---

第三章 XML解析器驗證轉換器編輯器等

xml有這麼多的規則,寫出來的xml文字檔案到底符不符合要求呢? 用人工檢驗的方式效率太低,也容易出錯,所以開發出了程式來驗證。 xml驗證器: XML DTD和XML Schema,後者用來替代前者。 如果 XML 文件存在錯誤,那麼程式就不應當繼

Springboot之登入模組探索(含Token驗證網路安全等知識)

簡介 登入模組很簡單,前端傳送賬號密碼的表單,後端接收驗證後即可~ 淦!可是我想多了,於是有了以下幾個問題(裡面還包含網路安全問題): 1.登入時的驗證碼 2.自動登入的實現 3.怎麼維護前後端登入狀態 在這和大家分享下我實現此功能的過程,包括一些技術和心得 1.登入時的驗證碼 為什麼要驗證碼,原因很簡單,防

機器學習中資料訓練測試劃分與交叉驗證的聯絡與區別(含程式)

因為一個模型僅僅重複了剛剛訓練過的樣本的標籤,這種情況下得分會很高,但是遇到沒有訓練過的樣本就無法預測了。這種情況叫做過擬合。為了避免過擬合,一個常見的做法就是在進行一個(有監督的)機器學習實驗時,保留

資料劃分——訓練驗證測試

1.為什麼要對資料進行劃分,越多的資料訓練的模型不是越好嗎?      的確,模型的效能和訓練資料的多少有很大關係,我們先看看這三個集合的用處訓練集(training set)      訓練集的作用就是訓練模型,形成模型的內部結構和引數估計,比如古典的線性迴歸模型,每個變數

訓練測試驗證劃分的意義

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

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

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

訓練中的基礎技巧(數據處理驗證設置參數處理)

ref 比較 可能 隨機 style 參加 避免 不知道 區域 訓練中的基礎技巧(數據處理,驗證集設置,參數處理) 首先,對於數據 我們需要統一其量綱。通用的做法是數據標準化。 就是讓一個樣本內的均值為0,不同樣本類內方差盡量一致 然後就是為標簽做one-hot e

機器學習:訓練驗證測試

來源:http://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?type=detail&id=2001702114&cid=2001693028 作用 訓練集:用於訓練模型的

訓練驗證測試

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

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

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

訓練驗證測試介紹和交叉驗證法介紹

訓練集、驗證集和測試集這三個名詞在機器學習領域極其常見,但很多人並不是特別清楚,尤其是後兩個經常被人混用。 在有監督(supervise)的機器學習中,資料集常被分成2~3個,即:訓練集(train set),驗證集(validation set),測試集(test set)。 Rip

訓練(trainning set)測試機(testing set)驗證(validation set)

1.交叉驗證 交叉驗證是一種評估統計分析、機器學習演算法對獨立於訓練資料的資料集的泛化能力(generalize)。 2.訓練集,驗證集(注意區別交叉驗證資料集),測試集 一般做預測分析時,會將資料分為兩大部分。一部分是訓練資料,用於構建模型,一部分是測試資料,用於檢驗模型

機器學習 資料探勘 資料劃分 訓練 驗證 測試

機器學習資料探勘之資料集劃分: 訓練集 驗證集 測試集 Q:將資料集劃分為測試資料集和訓練資料集的常用套路是什麼呢? A:three ways shown as follow:1.像sklearn

機器學習 資料劃分 訓練 驗證 測試

機器學習資料探勘之資料集劃分: 訓練集 驗證集 測試集 Q:將資料集劃分為測試資料集和訓練資料集的常用套路是什麼呢? A:three ways shown as follow:1.像sklearn一樣,提供一個將資料集切分成訓練集和測試集的函式: 預設是把資料集的7

如果使用交叉驗證是否還需要單獨分出測試

驗證 spa 還需 情況下 單獨 預測 ever log style 比方說,用100k條數據,有兩個思路 1. 用這100k條數據做k-fold交叉驗證,來調模型參數 2. 先隨機劃分出70k條數據做訓練集用來根據交叉驗證調參數,調好之後再用剩下的30k條數據做測試集

訓練驗證測試劃分

前言 在使用資料集訓練模型之前,我們需要先將整個資料集分為訓練集、驗證集、測試集。訓練集是用來訓練模型的,通過嘗試不同的方法和思路使用訓練集來訓練不同的模型,再通過驗證集使用交叉驗證來挑選最優的模型,通過不斷的迭代來改善模型在驗證集上的效能,最後再通過測試集來評估模型的效能。如果資料

神經網路中訓練資料驗證資料測試資料的區別

whats the difference between train, validation and test set, in neural networks? Answer: The training and validation sets are used during t