###基礎概念
在建模過程中,由於偏差過大導致的模型欠擬合以及方差過大導致的過擬合的存在,為了解決這兩個問題,我們需要一整套方法及評價指標。其中評估方法用於評估模型的泛化能力,而性能指標則用於評價單個模型性能的高低。
####泛化性能
模型的泛化性能是由學習算法的能力,數據的充分性及學習任務本身的難度所決定的,良好的泛化性能代表了較小的偏差,即算法的期望預測結果與真實結果的偏離程度,同時還要有較小的方差,即隨訓練樣本的變化算法本身的學習能力變化不大。
###模型評估方法
在模型評估中,我們經常要對數據集進行訓練集和測試集的划分,數據集划分通常要保證兩個條件:
- 訓練集和測試集的分布要與樣本真實分布一致,即訓練集和測試集都要保證是從樣本真實分布中獨立同分布采樣而得;
- 訓練集和測試集要互斥,即兩個子集之間沒有交集。
基於划分方式的不同,評估方法可以分為:留出法,交叉驗證法及自助法。
####留出法
留出法是直接將數據集划分為兩個互斥的集合,其中一個集合作為訓練集,另一個作為測試集。另外需要注意的是在划分的時候要盡可能保證數據分布的一致性,避免因數據划分過程引入額外的偏差而對最終結果產生影響。 而當數據明顯的分為有限類時,可以采用分層抽樣方式選擇測試數據,保證數據分布比例的平衡。
具體方法如下:
假設我們有數據集N,其中n個正樣本,N-n個負樣本,從正負樣本中分別抽取比例為p的樣本作為訓練集的正負樣本,其中訓練集的正樣本為np,負樣本為(N-n)p,最后把剩下的樣本n(1-p)作為測試集的正樣本,(N-n)(1-p)作為測試集的負樣本。同時,在數據集的划分比例差異不能太過懸殊,p太大會導致其訓練結果和用整個數據集N訓練的模型相近,p太小會導致模型的結果不穩定,即於整體樣本N的訓練結果差異過大。
樣本的不同划分方式會導致模型評估的相應結果也會有差別,例如如果我們把正樣本進行了排序,那么在排序后的樣本中采樣與未排序的樣本采樣得到的結果會有一些不同,因此通常我們都會進行多次隨機划分、重復進行實驗評估后取平均值作為留出法的評估結果。
####交叉驗證法
交叉驗證法(Cross Validation)的基礎思路和留出法大致相同,都是講數據集划分成訓練集和測試集,而在划分細節上差異會比較大,而且交叉驗證法還有諸多不同的分類形式。
#####Hold-Out Method
這個方法是將數據集隨機分為兩組,一組做為訓練集,一組做為驗證集,利用訓練集訓練模型,然后利用驗證集驗證模型,記錄最后的分類准確率為此Hold-OutMethod下分類器的性能指標.此種方法的好處的處理簡單,只需隨機把原始數據分為兩組即可,比留出法還要簡單直接。
嚴格意義上來說,Hold-Out檢驗並不算是交叉檢驗,因為該方法沒有達到交叉檢驗的思想,而且最后驗證准確性的高低和原始數組的分類有很大的關系。
#####徹底的交叉驗證
徹底的交叉驗證(Exhaustive Cross Validation)是遍歷全集N的所有子集n,把n作為訓練集,N-n作為測試集,然后選擇結果最好的那個,這種方法的時間復雜度太高,特別是數據集N很大的情況下,這種方法幾乎是不可能完成的任務。
#####留P驗證
留P驗證(Leave-p-out Cross Validation)是把全集N中的p個樣本作為測試集(p個樣本遍歷N中的所有可能組合),剩下的N-p個樣本作為訓練集,最終會得到N個模 型,用這N個模型最終的驗證集的分類准確率的平均數作為此分類器的性能指標。這種方法從復雜度上看是比徹底交叉驗證法簡單了一些,但他的計算了依然非常大,因為p個元素的選擇方法有n!/((n-p)!p!)個。當p=1的時候,叫留1驗證(Leave-one-out Cross Validation),它的復雜度恰好是n。
#####k-折交叉驗證
k-折交叉驗證(K-fold Cross Validation)是把全集N分成K個相同大小的子集,遍歷這k個集合,把當前被抽出的這個集合作為測試集,剩下的k-1個集合作為訓練集,最終會得到k個模型,根據模型的結果統計,可以得到集合中測試錯誤的結果數量m。如果全集N的元素個數是n的話,可以得到該模型的錯誤率是E=(m1+m2+.....+mk)/n.
為了提高模型的精確度,可以將k-fold交叉驗證的上述步驟重復t次,每一次都是隨機划分全集N。在t次測試中,會得到t個模型的錯誤率E1,...,Et,最終的錯誤率為e=(E1+E2+...+Et)/t。
另外:當k=2時,稱為2折交叉驗證,k=n時,稱為n着折交叉驗證。
####自助法
自助法(BootstrapMethod)在統計學上是一種有放回的抽樣方法,不同於留出法和交叉驗證法無放回的抽樣方式。在做數據集分類時,如果我們對整體樣本n進行n次有放回抽樣得到n個樣本,然后把抽到的n個樣本作為訓練集,其中會出現部分樣本重復,同時有一部分樣本一次也沒被抽到,這部分作為測試集。
在有放回的n次抽樣中,每次每個樣本被抽中的概率為1/n,反過來,未被抽中的概率為1-1/n,進行n次抽樣后,這個樣本不被抽中的概率為1-1/n的n次方,當n的取值趨近於無窮大時,樣本未被抽中的概率為e的負一次方,約等於0.368,因此可以認為測試集的樣本大概會是整體樣本的36.8%。
####綜述
根據以上不同方法的特點,在樣本量較多的情況下一般選擇留出法或交叉驗證法來對數據進行分類,在樣本較少的情況下采用自助法。
###模型性能指標
####混淆矩陣
混淆矩陣也稱誤差矩陣,是表示精度評價的一種標准格式,用n行n列的矩陣形式來表示。在機器學習的模型評價中用到的很多指標都來源於對混淆矩陣結果的運算。
下圖是常見的二分類問題的混淆矩陣:
其中列表示模型預測值,行表示數據真實值。
根據圖中的交叉結果會出現以下4種狀況:
- 真實值為0,預測值也為0,用字母TP(True Positive)表示真正類數據。
- 真實值為0,預測值為1,用字母FN(False Negative)表示假反類數據。
- 真實值為1,預測值也為1,用字母TN(True Negative)表示真反類數據。
- 真實值為1,預測值為0,用字母FP(False Positive)表示假正類數據。
其中,True、False表示預測結果正確與否,Positive、Negative表示預測傾向為正類或者反類。
####准確率、F1-Score、ROC曲線
整體分類結果的准確率accuracy=(TP+TN)/(TP+FN+TN+FP)
預測為正類的准確率,即在被預測為正類中真正是正類樣本比例,又稱精確率或查准率precision=TP/(TP+FP)
真實為正類的准確率,即在所有正類樣本中被正確識別的比例,又稱召回率或查全率TPR/recall=TP/(TP+FN)
F1-score是綜合precision和recall兩個指標的判斷指標,
F1-Score=2/(1/precision+1/recall)=2precisionrecall/(precision+recall),
F1-Score的值在0到1之間,越大越好。
真實FP為負類預測錯誤率,即負類被預測為正類占所有真實負類的比例FPR=FP/(FP+TN)
ROC曲線是根據一系列不同的二分類方式(分界值或決定閾),以TPR為縱坐標,FPR為橫坐標繪制的曲線。實際上ROC曲線是對一系列的TPR和FPR的值所構成點的連線繪制,而其中每一個點的都代表一個概率分界值,即把大於分界值得部分分為正類,小於分界值的分為負類。對於模型而言,我們計算出每個樣本屬於正類的概率,然后對概率值按順序排序,計算每個概率作為分界點的TPR和FPR,然后繪制曲線,就構成了模型的ROC曲線。
在樣本有限的情況下,ROC曲線通常不是一條平滑的曲線,而是鋸齒形的,數據較多的情況下,曲線會接近平滑。同時我們也可以通過計算 AUC(Area Under roc Cure)來做為評價指標。
參考資料:
《機器學習》——周志華