數據在人工智能技術裏是很是重要的!本篇文章將詳細給你們介紹3種數據集:訓練集、驗證集、測試集。同時還會介紹如何更合理的講數據劃分爲3種數據集。最後給你們介紹一種充分利用有限數據的方式:交叉驗證法。segmentfault
先用一個不恰當的比喻來講明3種數據集之間的關係:機器學習
訓練集(Training Dataset)是用來訓練模型使用的。學習
在《一文看懂機器學習》裏咱們介紹了機器學習的7個步驟,訓練集(Training Dataset)主要在訓練階段使用。測試
當咱們的模型訓練好以後,咱們並不知道他的表現如何。這個時候就可使用驗證集(Validation Dataset)來看看模型在新數據(驗證集和測試集是不一樣的數據)上的表現如何。同時經過調整超參數,讓模型處於最好的狀態。人工智能
驗證集有2個主要的做用:spa
說明:3d
當咱們調好超參數後,就要開始「最終考試」了。咱們經過測試集(Test Dataset)來作最終的評估。blog
經過測試集的評估,咱們會獲得一些最終的評估指標,例如:準確率、精確率、召回率、F1等。ci
擴展閱讀:《分類模型評估指標——準確率、精準率、召回率、F一、ROC曲線、AUC曲線》get
下面的數據集劃分方式主要針對「留出法」的驗證方式,除此以外還有其餘的交叉驗證法,詳情見下文——交叉驗證法。
數據劃分的方法並無明確的規定,不過能夠參考3個原則:
假如咱們教小朋友學加法:1個蘋果+1個蘋果=2個蘋果
當咱們再測試的時候,會問:1個香蕉+1個香蕉=幾個香蕉?
若是小朋友知道「2個香蕉」,而且換成其餘東西也沒有問題,那麼咱們認爲小朋友學習會了「1+1=2」這個知識點。
若是小朋友只知道「1個蘋果+1個蘋果=2個蘋果」,可是換成其餘東西就不會了,那麼咱們就不能說小朋友學會了「1+1=2」這個知識點。
評估模型是否學會了「某項技能」時,也須要用新的數據來評估,而不是用訓練集裏的數據來評估。這種「訓練集」和「測試集」徹底不一樣的驗證方法就是交叉驗證法。
留出法(Holdout cross validation)
上文提到的,按照固定比例將數據集靜態的劃分爲訓練集、驗證集、測試集。的方式就是留出法。
留一法(Leave one out cross validation)
每次的測試集都只有一個樣本,要進行 m 次訓練和預測。
這個方法用於訓練的數據只比總體數據集少了一個樣本,所以最接近原始樣本的分佈。可是訓練複雜度增長了,由於模型的數量與原始數據樣本數量相同。
通常在數據缺少時使用。
k 折交叉驗證(k-fold cross validation)
靜態的「留出法」對數據的劃分方式比較敏感,有可能不一樣的劃分方式獲得了不一樣的模型。「k 折交叉驗證」是一種動態驗證的方式,這種方式能夠下降數據劃分帶來的影響。具體步驟以下:
k 通常取 10
數據量小的時候,k 能夠設大一點,這樣訓練集佔總體比例就比較大,不過同時訓練的模型個數也增多。
數據量大的時候,k 能夠設小一點。
本文首發自 產品經理的 AI 學習庫 easyai.tech