一個數據集、單個算法
一次留出法----二項檢驗
m個樣本的測試集上,泛化錯誤率爲ϵ的學習器被測得測試錯誤率爲ϵ^的概率是:
P(ϵ^;ϵ)=(mc^×m)ϵe^×m(1−ϵ)m−e^×m
服從二項分佈,可使用“二項檢驗”進行檢驗。
多次重複留出法或交叉驗證法----t檢驗
多次重複留出法或者交叉驗證法進行訓練/測試,會得到多個測試錯誤率,此時可使用“t檢驗”。假定獲得了k個測試錯誤率,ϵ1^、ϵ2^、ϵ3^…ϵ^k,則平均測試錯誤率爲Xˉ和S2。
Xˉ=k1i=1∑kε^i,S2=k−11i=1∑k(ε^i−Xˉ)2
根據中心極限定理可知,
S/n(Xˉ−ε)∼t(n−1)
t分佈示意圖及常用雙邊臨界值表如下所示:
一個數據集、兩個算法----交叉驗證t檢驗
對於一個數據集,兩個算法A和B,使用k折交叉驗證法得到的測試錯誤率分別爲ε^iA、ε^iB(i=1,2,,,k)。可採用k折交叉驗證“成對t檢驗”來進行檢驗。
基本思想是若兩個算法的性能相同,則他們使用相同的訓練集/測試集得到的測試錯誤率應相同,即ε^iA=ε^iB。
對每一組測試錯誤率求差值,Δi=ε^A−ε^B,若兩個算法性能相同,則差值均值爲零。可根據Δ1、Δ2、...Δk、進行t檢驗,計算出差值的均值∣Δ∣和方差S2,則:
S/k∣∣(Δˉ−(εA−εB)⟩∣∣∼t(k−1)
若假設H0:εA=εB,H1:εA=εB,則,滿足S/k∣Δˉ∣≤t∂/2。
由於樣本有限,在使用交叉驗證等方法的時候,會導致不同輪次的訓練集有一定程度的重疊,是的測試錯誤率不獨立,導致過高估計假設成立的概率,爲緩解這一問題,可採用“5次2折交叉驗證”。
一組數據集、多個算法----Friedman檢驗與Nemenyi檢驗
Friedman檢驗
假設有數據集D1、D2、D3、D4,算法A、B、C進行比較。
使用留出法或者交叉驗證得到每個算法在每個數據集上的測試結果,然後在每個數據集上根據測試性能由好到壞排序,並賦予序值1,2,…,若算法測試性能相同,則平分序值。
使用Friedman檢驗來判斷這些算法是否性能相同,若相同,則它們的平均序值應當相同。
若在N個數據集,比較k個算法,令ri表示第i個算法的平均序值,則ri的均值和方差分別爲(k+1)/2,(k+1)(k−1)/12,則有:
τχ2=kk−1⋅k2−112Ni=1∑k(ri−2k+1)2=k(k+1)12N(i=1∑kri2−4k(k+1)2)
在k和N比較大時,服從自由度爲k-1的χ2分佈。
τF=N(k−1)−τχ2(N−1)τχ2
服從自由度爲k-1和(k-1)(N-1)的F分佈。下面是F檢驗常用的臨界值:
Nemenyi檢驗
若原假設被拒絕,則需要進行後續檢驗,來得到具體的算法之間的差異。常用的是Nemenyi檢驗。Nemenyi檢驗計算出平均序值差別的臨界值域,下表是常用的qa值,若兩個算法的平均序值差超出了臨界值域CD,則相應的置信度1−α拒絕“兩個算法性能本相同”的假設。
CD=qα6Nk(k+1)
qa中常用的聯臨界值:
鏈接
https://blog.csdn.net/qqMiSa/article/details/98660515