機器學習系列-數據拆分和結果評價

1.數據集分類

機器學習中的數據分爲訓練數據集、驗證數據集和測試數據集

通常,在訓練有監督的機器學習模型的時候,會將數據劃分爲訓練集、驗證集合測試集,劃分比例一般爲0.6:0.2:0.2。對原始數據進行三個集合的劃分,是爲了能夠選出效果(可以理解爲準確率)最好的、泛化能力最佳的模型。

訓練集(Training set)

作用是用來擬合模型,通過設置分類器的超參數,訓練分類模型。後續結合驗證集作用時,會選出同一參數的不同取值,擬合出多個分類器。訓練集是一些我們已經知道輸入和輸出的數據集訓練機器去學習,通過擬合去尋找模型的初始參數。例如在神經網絡(Neural Networks)中, 我們用訓練數據集和反向傳播算法(Backpropagation)去每個神經元找到最優的比重(Weights)。

驗證集(Cross Validation set)

作用是當通過訓練集訓練出多個模型後,爲了能找出效果最佳的模型,使用各個模型對驗證集數據進行預測,並記錄模型準確率。選出效果最佳的模型所對應的參數,即用來調整模型參數。如svm中的參數c和核函數等。

驗證集也是一些我們已經知道輸入和輸出的數據集,通過讓機器學習去優化調整模型的參數,在神經網絡中, 我們用驗證數據集去尋找最優的網絡深度(number of hidden layers),或者決定反向傳播算法的停止點;在普通的機器學習中常用的交叉驗證(Cross Validation) 就是把訓練數據集本身再細分成不同的驗證數據集去訓練模型。

測試集(Test set)

通過訓練集和驗證集得出最優模型後,使用測試集進行模型預測。用來衡量該最優模型的性能和分類能力。即把測試集當做從來不存在的數據集,當已經確定模型參數後,使用測試集進行模型性能評價。測試集是用戶測試模型表現的數據集,根據誤差(一般爲預測輸出與實際輸出的不同)來判斷一個模型的好壞。

對原始數據進行三個數據集的劃分,也是爲了防止模型過擬合。當使用了所有的原始數據去訓練模型,得到的結果很可能是該模型最大程度地擬合了原始數據,亦即該模型是爲了擬合所有原始數據而存在。當新的樣本出現,再使用該模型進行預測,效果可能還不如只使用一部分數據訓練的模型。

爲什麼驗證集合測試集都需要:

“驗證數據集” 主要用於描述調整參數和數據預處理時的模型評估,而 “測試數據集” 則主要用於描述最終模型之間的模型能力評估。

只有訓練集和測試集的弊端:

有可能會針對測試數據過擬合,因爲每次都是找到參數訓練模型,然後看看在測試數據集上的表現如何,這就讓我們的模型又被測試數據集左右了,既可以理解爲訓練出的模型對特定的訓練數據集和特定的測試數據集表現都不錯,但是再來一種類似的樣本數據,表現可能又不盡如人意了。

那麼要徹底解決這個問題,就要引入驗證數據集的概念,既將樣本數據分爲三份,訓練數據集、驗證數據集、測試數據集。

訓練數據集和之前的用途一樣,是用來訓練模型的。

驗證數據集的作用和之前的測試數據集一樣,是用來驗證由訓練數據集訓練出的模型的好壞程度的,或者說是調整超參數使用的數據集。

此時的測試數據集和之前的作用就不一樣了,這裏的測試數據集是當訓練出的模型在訓練數據集和驗證數據集上都表現不錯的前提下,最終衡量該模型性能的數據集。測試數據集在整個訓練模型的過程中是不參與的。

交叉驗證:

交叉驗證其實解決的是隨機選取驗證數據集的問題,因爲如果驗證數據集是固定的,那麼萬一驗證數據集過擬合了,那就沒有可用的驗證數據集了,所以交叉驗證提供了隨機的、可持續的、客觀的模型驗證方式。

交叉驗證的思路是將訓練數據分成若干份,假設分爲A、B、C三份,分別將這三份各作爲一次驗證數據集,其他兩份作爲訓練數據集訓練模型,然後將訓練出的三個模型評分取均值,將這個均值作爲衡量算法訓練模型的結果來調整參數,如果平均值不夠好,那麼再調整參數,再訓練出三個模型,以此類推。

2.分類結果評價

精準度:預測結果正確的佔總數的比例。這種評價結果對於極度偏斜的數據不適用。如果癌症產生的概率是0.1%,那其實根本不需要任何機器學習算法,只要系統預測所有人都是健康的,即可達到99.9%的準確率。

混淆矩陣:對於二分類問題來說,所有的問題被分爲0和1兩類,混淆矩陣是2*2的矩陣:

 

 

預測值0

預測值1

真實值0

TN

FP

真實值1

FN

TP

TN:真實值是0,預測值也是0,即我們預測是negative,預測正確了。

FP:真實值是0,預測值是1,即我們預測是positive,但是預測錯誤了。

FN:真實值是1,預測值是0,即我們預測是negative,但預測錯誤了。 

TP:真實值是1,預測值是1,即我們預測是positive,預測正確了。

 精準率:精準率: ,所謂的精準率是:分母爲所有預測爲1的個數,分子是其中預測對了的個數,即預測值爲1,且預測對了的比例爲什麼管它叫精準率呢?在有偏的數據中,我們通常更關注值爲1的特徵,比如“患病”,比如“有風險”。在100次結果爲患病的預測,平均有40次預測是對的。即精準率爲我們關注的那個事件,預測的有多準。

召回率:召回率:。所謂召回率是:所有真實值爲1的數據中,預測對了的個數。每當有10個癌症患者,算法可以成功的預測出8個 。也就是我們關注的那個事件真實的發生情況下,我們成功預測的比例是多少。 

F1 score:具體使用算法時,怎麼通過精準率和召回率判斷算法優劣?

根據具體使用場景而定:

例1:股票預測,未來該股票是升還是降?業務要求更精準的找到能夠上升的股票;此情況下,模型精準率越高越優。

例2:病人診斷,就診人員是否患病?業務要求更全面的找出所有患病的病人,而且儘量不漏掉一個患者;甚至說即使將正常人員判斷爲病人也沒關係,只要不將病人判斷成健康人員就好。此情況,模型召回率越高越優。

描述精準率和召回率的平衡:

  1. F1 是 precision 和 recall 的調和平均值;
  2. 調和平均值:如果 1/a = (1/b + 1/c) / 2,則稱 a 是 b 和 c 的調和平均值;
  3. 調和平均值特點:|b - c| 越大,a 越小;當 b - c = 0 時,a = b = c,a 達到最大值;
  4. 具體到精準率和召回率,只有當二者大小均衡時,F1 指標才高,
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章