一、經驗誤差與過擬合
- 錯誤率(error rate):\(E={a \over m}\)(m個樣本中有a個樣本分類錯誤)。
- 精度(accuracy):\((1-{a \over m})×100\%\)。(說白了就是正確率)
- 誤差(error):(誤差期望)學習器實際預測輸出與樣本的真實輸出之間的差異。
- 過擬合(overfitting):將訓練樣本不太一般的特性作為了潛在樣本具有的一般性質,導致泛化效能下降。
- 欠擬合(underfitting):對訓練樣本的一般性質尚未學好。
(學習能力是否強大,由 學習演算法和資料內涵共同決定)
-
證明過擬合不可避免:
(1) P(polynominal)類問題:能在多項式時間內解決的問題。(可以稱之為,很短時間內可以將問題答案算出來的問題)
(2) NP(Non-deterministic Polynomially)類問題:能在多項式時間驗證答案正確與否的問題。(可以稱之為,很短時間內驗證答案是不是正確答案的問題)- 多項式時間:問題的時間複雜度在多項式(\(ax^n+bx^{n-1}+...+cx+d\))可以表示的範圍內。
- P類問題一定是NP類問題的子集。能多項式時間內解決的問題,必然能在多項式時間內驗證其解。
(3) NPC(Non-determinism Polynomial Complete)類問題:存在一個NP問題,所有的NP問題都可以約化為它。即只要解決了這個NP問題,其他NP問題都可以解決。(問題A約化為問題B:用問題B的解法可以解決問題A)
(4) NP難(Non-determinism Polynomial Hard)問題:所有NP問題都可以約化為這個問題,但這個問題不一定是NP問題。- NP難問題,其實就是比所有NP問題都難的問題。因為每一次問題的約化,都會使得問題的複雜度提高。即將所有NP問題都約化為NP難問題時,只要解決最難的NP難問題,那麼其他NP問題都可以解決了。
- NPC問題其實就是限定NP難問題只能為NP問題的問題。NP難問題不一定是NP問題,但是NPC問題一定是NP問題。同時,解決了NPC問題,也就解決了所有約化為其的NP問題。
(5) “P=NP?”。只要任意一個NPC問題找到了一個多項式演算法,那麼所有的NP問題都可以在多項式時間內解決,則NP=P。然而,給一個NPC問題找一個多項式演算法這個事情本身就難以置信,一般的NPC問題的時間複雜度都在指數級或者階乘級,想要找到多項式級,絕對是質的飛躍。所以,人們普遍認為“NP≠P”
(6) 若過擬合可以避免,則一定可以通過經驗誤差最小化這種P類問題,實現驗證是否過擬合這種NP類問題,而獲得最優解,即典型的“NP=P”。所以,只要確定“NP≠P”,則過擬合就不可避免。 -
模型選擇問題(model selection):
(1) 選擇學習演算法
(2) 選擇引數配置
二、評估方法
對模型的評估,一般採用 “測試集”(testing set)測試學習器的 “測試誤差”(testing error),用測試誤差來近似泛化誤差,進而來評估模型對新樣本的泛化能力。
而對於固定資料集,如何從資料集中產生訓練集\(S\)和測試集\(T\),就至關重要。書中介紹了3種方法,分別是:留出法、交叉驗證法、自助法。
模型評估方法
1. 留出法(hold-out)
(1)直接將資料集D劃分為兩個互斥集合,一個集合作為訓練集S,另一個為測試集T。
即
\(S ∩ T = \varnothing\)
(2)訓練/測試集的劃分要儘可能保持資料分佈的一致性,避免因資料劃分過程引入額外的偏差而對最終結果產生影響。(正反例在S和T中所佔的比例基本一致)從取樣(sampling)角度來看,保留類別比例的取樣方式稱為“分層取樣”(stratified sampling)。
(3)在給定訓練/測試集樣本比例後,仍然存在多種劃分方式對初始資料集D進行分割。(排列組合問題:從所有n個正例中,任取所佔比例數m,即\(C_n^m\),從所有x個反例中,任取所佔比例數y,即\(C_x^y\),最終共有\(C_n^m × C_x^y\)個劃分方式)
在使用留出法時,單次結果不夠穩定可靠,所以採用若干次隨機劃分、重複進行實驗評估後取平均值作為評估結果。
(4)缺點:對固定資料集D劃分,S和T的比例對評估結果的影響較大。
- S過多T過少,模型≈直接用D訓練得出的模型,評估結果不夠穩定準確(評估結果方差較大)
- S過少T過多,模型與D訓練得出的模型差別較大(評估結果偏差較大),降低了評估結果的保真性(fidelity)
2. 交叉驗證法(cross validation)
(1)將資料集D劃分為k個互斥子集,即
\(D_i∩D_j=\varnothing(i≠j)\)
每個子\(D_i\)都保持資料分佈一致性。
(2)每次利用\(k-1\)個子集的並集作為訓練集,剩下一個作為測試集,共有\(k\)種訓練/測試資料集,可進行\(k\)次訓練和測試,最終將\(k\)個測試結果的均值作為結果。
(3)交叉驗證法的評估結果的穩定性和保真性很大程度上取決於\(k\)的取值。(\(k\)常用取值為10)
(4)留一法(Leave-One-Out)--- 交叉驗證法的特例
若資料集\(D\)含有\(m\)個樣本,則令\(k=m\),只有唯一的劃分方式(劃分為\(m\)個子集,每個子集包含一個樣本)。留一法將\(m-1\)個樣本用於訓練,與直接用\(D\)訓練得出的模型基本一致,所以其評估結果較為準確。其缺點也很明顯,訓練\(m\)個模型計算開銷不可估量。
3. 自助法(bootstrapping)
(1)每次隨機從包含\(m\)個樣本的資料集\(D\)中,抽取一個樣本複製到資料集\(D'\),直到\(D'\)中包含\(m\)個樣本。
(2)\(D\)中的某些樣本會在\(D'\)中重複出現,而可能存在部分樣本始終不出現,其概率為\((1-{1 \over m})^m\),當樣本數量\(m\)取極限時,概率為\(\lim_{m \rightarrow+\infty}(1-{1 \over m})^m={1 \over e}≈0.368\),即\(D\)z中約有36.8%的樣本不會出現在\(D'\)中。附極限的計算:
(3)\(D'\)作為訓練集,而將\(D\)中和\(D'\)中不重複的部分(36.8%)作為測試集。這樣的測試結果稱為“包外估計”(out-of-bag estimate)。
(4)優點:在資料集較小、難以有效劃分訓練/測試集時很有用;訓練樣本規模同初始資料集\(D\)的訓練樣本規模一樣;能從初始資料集中產生多個不同的訓練集,對整合學習等方法有很大的好處。
(5)缺點:自助法產生的資料集改變了初始資料集的分佈,會引入估計偏差。在初始資料量足夠時,留出法和交叉驗證法更常用。
調參(parameter tuning)和最終模型
調參和演算法選擇對模型的效能都有顯著的影響,其本質皆為:不同引數/學習演算法訓練出模型,將最好的模型作為結果。
調參,若對每種引數進行訓練,對每種訓練的模型進行評估,那計算開銷會特別大,甚至不可行。所以,調參要在選適當的範圍和適當的步長,對個別引數進行訓練評估,雖然不一定是最佳值,但是是計算的開銷和效能評估的折中結果,也具有一定的代表性。
模型在評估過程中,一般都只用資料集中的部分資料來訓練模型,在模型選擇完成後,還應將整個資料集重新訓練模型,這才是最終模型。
資料集(data set)
三、效能度量(performance measure)
效能度量主要用於衡量模型泛化能力,其反映了任務需求。
給定樣例集\(D=\{(x_1,y_1),(x_2,y_2)...(x_m,y_m)\}\),其中\(y_i\)是\(x_i\)的真實標記,要評估學習器\(f\)的效能,要把學習器預測結果\(f(x)\)與真實標記\(y\)進行比較。
1. 迴歸任務的效能度量
1.1 均方誤差、均方根誤差
均方誤差(Mean Squared Error):預測值與真實值差值的平方和的平均值。
均方根誤差(Root Mean Squared Error):均方誤差開根號。
取值範圍均為0~1,值越接近於0,表明擬合度越好,泛化效能越好。
1.2 平方絕對誤差
平方絕對誤差(Mean Absolute Error):預測值與真實值差值的絕對值的平均值。
同樣的,取值範圍均為0~1,值越接近於0,表明擬合度越好,泛化效能越好。
1.3 確定係數\(R^2\)
殘差平方和:預測值與真實值差值的平方和。
總離差平方和:真實值與真實值的平均值的差值的平方和。
確定係數\(R^2\)(R-Squared):由殘差平方和(Sum of Squares due to Error)以及總離差平方和(Total Sum Of Squares)共同決定。
由公式可知,\(R^2\)的取值範圍為0~1,值越接近1,表明擬合度越高,泛化效能越好。
2. 分類任務的效能度量
2.1 錯誤率、精度
錯誤率:分類錯誤的樣本數佔樣本總數的比例。
(對於樣例集\(D\))$$E(f;D)={1 \over m}\sum_{i=1}^mⅡ(f(x_i)≠y_i)$$
(對於資料分佈\(D\)和概率密度函式\(p(x)\))$$E(f;D)=\int_{x \sim D}Ⅱ(f(x)≠y)p(x)dx$$
精度:分類正確的樣本數佔樣本總數的比例。
(對於樣例集\(D\))$$acc(f;D)={1 \over m}\sum_{i=1}^mⅡ(f(x_i)=y_i)=1-E(f;D)$$
(對於資料分佈\(D\)和概率密度函式\(p(x)\))$$acc(f;D)=\int_{x \sim D}Ⅱ(f(x)=y)p(x)dx=1-E(f;D)$$
其中\(Ⅱ(f(x_i)≠y_i)\)為指示函式,\(f(x_i)≠y_i\)其值為1,否則為0。
2.2 查準率、查全率、F1
查準率(precision):檢索出的資訊中有多少比例是使用者感興趣的。(準不準)
查全率(recall):檢索出多少使用者感興趣的資訊。(全不全)
對於二分類問題,可將樣例根據其真實類別與學習器預測類別的組合劃分為真正例(TP,true positive) 、假正例 (FP,false positive) 、真反倒(TN,true negative)假反例 (FN,false negative) 四種。
查準率和查全率往往矛盾。查準率高,查全率往往偏低;查全率高,查準率往往偏低。(其實蠻好理解的,想要查的準,條件往往比較苛刻,難免會漏掉一些好的;若想要查的全,條件就相對寬鬆,也會混入一些差的,所以想要魚和熊掌兼得,只可能在一些樣例特徵少的任務中實現。)
如何通過查準率和查全率判斷模型效能?
(1)根據學習器預測結果對樣例進行排序(最有可能的在最前)
(2)逐個將樣本作為正例預測
(3)每次計算當前的查準率、查全率
(4)生成P-R曲線,通過曲線與x、y軸所圍的面積來判斷學習器效能
在P-R圖中,曲線與x、y軸所圍的面積越大,則表示學習器效能更好。但是,如果P-R曲線是平滑曲線,完全可以通過分段函式積分計算其面積來進行比較,但P-R曲線往往是非單調且不平滑的,計算其面積相對複雜,所以想要評判其效能,光靠面積(在這個問題上不太可能被量化)是完全不夠的。“平衡點”就是用來解決這個問題的。
“平衡點”(BEP,Break-Event Point):“查準率=查全率”時的取值。基於BEP進行比較,BEP越大,其效能也就越好。但BEP還是過於簡單。
F1度量:F1是基於查準率和查全率的調和平均定義的。
\(F_β\)度量:\(F_β\)相較於F1更能表達出對查準率/查全率的不同偏好。\(F_β\)是加權調和平均。
其中,
n個二分類混淆矩陣上綜合考察查準率和查全率:
(1)生成n個二分類混淆矩陣
- 多次訓練/測試,每次得到一個混淆矩陣
- 多個資料集上訓練/測試
- 執行多分類任務,兩兩類別的組合對應一個混淆矩陣
(2)計算各混淆矩陣的查準率和查全率,記為(\(P_1\),\(R_1\))...(\(P_n\),\(R_n\))
(3)計算平均值
- 巨集查準率(macro-P):\(macro-P={1\over n}\sum_{i=1}^nP_i\)
- 巨集查全率(macro-R):\(macro-R={1\over n}\sum_{i=1}^nR_i\)
- 巨集F1(macro-F1):\(macro-F1={{2\times macro-P \times macro-R}\over{macro-P + macro-R}}\)
(4)還可先平均,再計算
- 微查準率(micro-P):\(micro-P={{\overline{TP}}\over{\overline{TP}+\overline{FP}}}\)
- 微查全率(micro-R):\(micro-R={{\overline{TP}}\over{\overline{TP}+\overline{FN}}}\)
- 微F1(micro-F1):\(micro-F1={{2\times micro-P \times micro-R}\over{micro-P + micro-R}}\)
2.3 ROC、AUC
分類閾值(threshold):學習器為測試樣本產生一個實值或概率預測,然後將這個預測值與一個“分類閾值”進行比較,大於閾值的、小於閾值的分別劃分為一類。(這個實值或概率預測結果的好壞,直接決定了學習器的泛化能力)
截斷點(cut point):根據實值或概率預測結果將測試樣本排序,分類過程相當於在這個排序中以某個“截斷點”將樣本分為兩部分。(排序本身的質量好壞,體現了“一般情況下”泛化效能的好壞。)
不同的應用任務中,可以根據任務需求採用不同的截斷點,來體現對查準率和查全率的重視程度。
ROC(“受試者工作特徵”,Receiver Operating Characteristic):縱軸為“真正例率”(TPR,True Positive Rate),橫軸為“假正例率”(FPR,False Positive Rate)。
如下圖所示(圖片來自網路,在此借用),對角線對應於“隨機猜測”模型,C'很明顯是分類效能最好的。
ROC曲線橫縱座標並不相關,所以ROC曲線並不應作為函式曲線來進行分析,而應該將其看作無數個點,每個點的橫縱座標表徵其效能。
如何繪製ROC曲線?
(1)給定m個正例和n個反例
(2)根據學習器預測結果對樣例進行排序
(3)將分類閾值從最大到最小,依次設為每個樣例的預測值(依次將每個樣例劃分為正例)
(4)若前一個標記點座標為\((x,y)\),若當前為真例,則座標為\((x,y+{1\over m})\);若為反例,則座標為\((x+{1\over n},y)\)。
(5)將相鄰點用線段連線即得。
(*)我所理解的是,先將正例反例放在一起,按照預測結果進行排序,從\((0,0)\)點出發,依次按照序列向後讀,如果是正例,則按\(y\)軸正方向向上移動\(1\over m\)個單位,若為反例,則按\(x\)軸正方向向左移動\(1\over n\)個單位,知道序列遍歷結束。
舉例:
正例預測結果集合為(0.8, 0.5, 0.4, 0.2, 0.05)
反例預測結果集合為(0.9, 0.7, 0.6, 0.2, 0.01)
將其排序得(0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.2, 0.05, 0.01)(其中紅色標註的為正例,藍色為正反例均有)
遍歷序列。
第一個為0.9,為反例,反例共有5個,則向x軸正方向移動\(1\over 5\)個單位。
第二個為0.8,為正例,正例共5個,則向y軸正方向移動\(1\over 5\)個單位。
依次類推,將完整的畫出。特別注意,當預測值為0.2時,正反例均有,則同時向x軸,y軸移動,則為斜線。
如何通過ROC比較學習器效能?
同P-R曲線一樣,一定範圍內,所包的面積越大,則其效能越好。
AUC(Area Under ROC Curve):ROC曲線下的面積。(其實就是各點之間形成的矩形面積求和)。AUC值越大的分類器,效能越好。
舉例:
ROC曲線上各點座標集為:\(\{(0,0), (0.2,0), (0.2,0.25), (0.4,0.25), (0.6,0.25), (0.6,0.5), (0.6,0.75), (0.8,0.75), (0.8,1), (1,1)\}\)
根據公式來計算:
根據ROC曲線所圍面積計算:
每個小矩形面積為\(0.2\times 0.25=0.05\),
ROC所圍面積總共佔有9個矩形,故\(AUC=9\times 0.05=0.45\)
結果一致。
公式推導:
已知,\(AUC\)的值就是曲線與x軸所圍成的面積。
在上圖中,曲線與x軸所圍成的面就就是紅線與藍線與x軸所圍成的面積。紅線組成矩形,而藍線組成梯形。矩形面積和梯形面積均可以用梯形面積公式,即
其實就是\(1\over 2\)高乘以上底加下底的和。其中,\((x_{i+1}-x_i)\)是高,\((y_i+y_{i+1})\)是上底加下底的和。
最終將所有面積求和即為\(AUC\)。
排序“損失”(loss):ROC曲線之上的面積。
其中,有\(m^+\)個正例,\(m^-\)個反例,\(D^+\)是正例的集合,\(D^-\)是反例的集合。該公式的含義是:若正例的預測值比反例小,則加1,若正例預測值和反例預測值相等則加\(1\over 2\)。
公式推導:
按照\(AUC\)的公式推導方法,\(l_{rank}\)同樣是計算梯形面積,只不過為曲線上半部分面積。對應於圖,則為計算綠線和藍線與\(y\)軸所圍成的面積。
因為每增加一個真正例,沿\(y\)軸增加\(1\over {m^+}\),故可設梯形高為\(1\over {m^+}\)。
計算梯形面積還需要“上底(較短的底)+下底(較長的底)”,而上底和下底均是綠色、藍色線段兩端點到\(y\)軸的距離。因為每增加一個假正例,沿\(x\)軸增加\(1\over {m^-}\),故其“上底”為\(1\over {m^-}\)乘以預測值大於\(f(x^+)\)的假正例的個數,即
其“下底”為\(1\over {m^-}\)乘以預測值大於等於\(f(x^+)\)的假正例的個數,即
則單個梯形面積為:
將所有梯形面積求和,則可得到\(l_{rank}\),即證。
這個不難理解,就是總面積1減去曲線上半部分面積,等於曲線下半部分面積。
2.4 代價敏感錯誤率、代價曲線
非均等代價(unequal cost):為權衡不同型別錯誤所造成的不同損失,將錯誤賦予“非均等代價”。(不同的錯誤所造成的後果不同)
代價矩陣(cost matrix):
其中,\(cost_{ij}\)表示第\(i\)類樣本預測為第\(j\)類樣本的代價;\(cost_{ii}=0\)(因為結果正確,未造成錯誤而產生代價);損失程度相差越大,\(cost_{01}>cost_{10}\)的值的差別越大(更關注於代價間的比值,而非差值)。
若單純將錯誤的代價作為均等代價(所有錯誤所造成的後果一致),則錯誤率可以直接以錯誤次數來進行衡量。但往往,錯誤有輕重,在非均等代價的前提下,僅僅最小化錯誤次數是遠遠不夠的,只有最小化總體代價(total cost),才能使得錯誤造成的後果最小化。(我認為,這是一種對錯誤的賦權方式,也是對不同錯誤的偏好設定)
“代價敏感”錯誤率(cost-sensitive):
同之前均等代價錯誤率(\(E(f;D)={1\over m}\sum_{x_i∈D}Ⅱ(f(x_i)≠y_i)\))相比,將資料集中正反例錯誤進行賦權,計算得出其“代價敏感”錯誤率。
代價曲線(cost curve):\(ROC\)曲線在非均等代價下,不能直接反映出學習器的期望總體代價,而代價曲線可以實現。
- 橫軸:正例概率代價,取值為\([0,1]\),$$P(+)cost={{p\times cost_{01}\over{p\times cost_{01}+(1-p)\times cost_{10}}}}$$(p為樣例為正例的概率)
- 縱軸:歸一化代價,取值為\([0,1]\),$$cost_{normal}={{FNR\times p\times cost_{01}+FPR\times(1-p)\times cost_{10}}\over{p\times cost_{01}+(1-p)\times cost_{10}}}$$(\(FNR={{FN}\over{TP+FN}}\),\(FPR={{FP}\over{TN+FP}}\))
將橫軸的\(P(+)cost\)帶入縱軸\(cost_{normal}\),得到$$cost_{normal}=FNR\times P(+)+FPR\times(1-P(+))$$
可以看作斜率為\(FNR-FPR\),截距為\(FPR\),範圍均在\([0,1]\)上的一條線段。
其實從其定義易知代價曲線的畫法。
連線\((0,FPR)\)與\((1,FNR)\)即可。
如何繪製代價曲線?
(1)\(ROC\)曲線上每一點對應了代價平面上的一條線段
(1.1)設\(ROC\)曲線上點的座標為\((FPR,TPR)\)
(1.2)\(FNR=1-TPR\)
(1.3)繪製從\((0,FPR)\)到\((1,FNR)\)的線段,線段下的面積表示該條件下的期望的總體代價
(1.4)如此將\(ROC\)每個點都轉化為代價平面上的一條線段
(1.5)取所有線段的下界,其所圍成的面積就是所有條件下學習器的期望總體代價
3. 聚類任務的效能度量(第9章)
聚類的效能度量又稱為聚類“有效性指標”(validity index)。
聚類結果好的標準:
- “簇內相似度”(intra-cluster similarity)高
- “簇間相似度”(inter-cluster similarity)低
3.1 外部指標(external index)
外部指標:將聚類結果與某個“參考模型”(reference model)進行比較。
對於資料集\(D=\{x_1,...,x_m\}\),聚類劃分簇為\(C=\{C_1,...,C_k\}\),參考模型劃分的簇為\(C^*=\{C_1^*,...,C_s^*\}\),\(\lambda,\lambda^*\)分別表示\(C,C^*\)對應的簇標記向量。
其中,集合\(SS\)表示樣本對既在\(C\)中屬於相同簇,又在\(C^*\)中屬於相同簇;
集合\(SD\)表示樣本對在\(C\)中屬於相同簇,而在\(C^*\)中屬於不同簇;
集合\(DS\)表示樣本對在\(C\)中屬於不同簇,在\(C^*\)中屬於相同簇;
集合\(DD\)表示樣本對既在\(C\)中屬於不同簇,又在\(C^*\)中屬於不同簇。
(很好理解,就是\(S\)表示樣本對在一個簇中,\(D\)表示樣本對不在同一個簇中,\(a、b、c、d\)則分別表示四個集合中樣本對的個數。很明顯,\(a\)和\(d\)所表示聚類結果和參考模型結果一致,而\(b\)和\(c\)則表示聚類結果和參考模型不一致,所以\(a\)和\(d\)越大的聚類演算法,其效能也就越好。)
因為每個樣本對\((x_i,x_j)(i<j)\)僅能出現於\(SS、SD、DS、DD\)其中之一,因此,\(a+b+c+d={{m(m-1)}\over2}\)。
(這裡的原因是,因為\(SS、SD、DS、DD\)四個集合互斥,所以\(a+b+c+d\)則為樣本對的總數,而樣本對的總數就是資料集\(D=\{x_1,...,x_m\}\)中,\(m\)個數兩兩無序組合的個數,即為\(C_m^2={{m(m-1)}\over2}\),這裡無序的原因是因為已經規定了\(i<j\),所以不存在\((x_j,x_i)\)的樣本對,即為無序。)
3.1.1 Jaccard係數(JC,Jaccard Coefficient)
定義:Jaccard係數用來描述兩個集合的相似程度。
Jaccard延申定義:
其中,\(M_{11}\)表示元素同時出現在\(A、B\)兩個集合的元素個數;
\(M_{10}\)表示元素出現在\(A\),但不出現在\(B\)的元素個數;
\(M_{01}\)表示元素出現在\(B\),但不出現在\(A\)的元素個數;
\(M_{00}\)表示元素既不出現在\(A\)又不出現在\(B\)的元素個數。
顯然,\(|A∩B|=M_{11} \quad |A-A∩B|=M_{10} \quad |B-A∩B|=M_{01}\)
所以,\(JC={{|A∩B|}\over{|A∪B|}}={{|SS|}\over{|SS∪SD∪DS|}}={{a}\over{a+b+c}}\)
3.1.2 FM指數(FMI,Fowlkes and Mallows Index)
其中,\(a+b\)表示樣本對在聚類結果中屬於同一類的數量,\(a+c\)表示樣本對在參考模型中屬於同一類的數量。
\({a}\over{a+b}\)與\({a}\over{a+c}\)代表樣本對在聚類結果和參考模型中屬於同一類的概率。這兩個概率值往往不相等,故為不對稱指標,通過對兩個不對稱指標求幾何平均數轉化為對稱指標。
3.1.3 Rand指數(RI,Rand Index)
\(a、d\)表示聚類結果和參考模型一致,顯然\(RI\)可以表示聚類結果與參考模型的一致性。
上述三個效能度量取值範圍均在\([0,1]\),其值越大,說明聚類演算法效能越好。
3.2 內部指標(internal index)
內部指標:直接考察聚類結果而不利用任何參考模型。
對於聚類結果的簇劃分\(C=\{C_1,...,C_k\}\)
定義:
不難看出,\(\sum_{1≤i<j≤|C|}dist(x_i,x_j)\)表示樣本對\((x_i,x_j)\)的距離之和,\({|C|(|C|-1)}\over{2}\)表示樣本對總數,即\(avg(C)\)表示樣本對間的平均距離。一個簇的平均距離可以很好反映這個簇的分散程度。
\(diam(C)\)則表示簇內樣本間最遠距離。
\(d_{min}(C_i,C_j)\)表示兩簇\(C_i,C_j\)最近樣本間的距離。
\(d_{cen}(C_i,C_j)\)表示兩簇\(C_i,C_j\)中心點間的距離,\(\mu_i,\mu_j\)為兩簇的中心點。兩簇中心點的距離很好的表現了各個簇類之間的分離程度。
3.2.1 DB指數(DBI,Davies-Bouldin Index)
\(DBI\)主要表示簇之間的最大“相似度”的均值。很顯然,\(DBI\)值越小,兩簇相似度越低,則聚類效果越好。
3.2.2 Dunn指數(DI,Dunn Index)
\(DI\)值越大,簇與簇之間距離也就越遠,“簇間相似度”就越低,聚類效能越好。
四、比較檢驗
效能比較涉及的因素:
- 泛化效能和測試集的效能未必相同
- 不同測試集其結果、效能不一定相同
- 學習演算法具有隨機性,每次結果不一定相同
1. 假設檢驗
先對假設檢驗的概念進行理解:(具體參考浙江大學《概率論與數理統計(第四版)》第八章假設檢驗)
我所理解的假設檢驗就是利用“小概率事件基本不會發生”的原理,對事件正反兩個假設其中之一進行檢驗,若檢驗的假設成立的概率小於\(α\)(檢驗的顯著性水平),假設不成立,則另一個假設一定成立。檢驗步驟:
- 提出假設\(H_0,H_1\),設定檢驗水準\(α\)的值(通常取\(0.1、0.05\))。
- 選定統計檢驗方法(二項檢驗、t檢驗等),由樣本觀察值按公式計算出統計量的大小。
- 確定檢驗假設成立的可能性\(P\)的大小,並與\(α\)比較判斷結果。若\(P>α\),則假設成立,否則不成立。
假設檢驗最終結果是該假設是否成立
根據測試錯誤率\(\hat{\epsilon}\)估推出泛化錯誤率\(\epsilon\)的分佈。
(泛化錯誤率\(\epsilon\):學習器在一個樣本上犯錯的概率;測試錯誤率\(\hat{\epsilon}\):\(m\)個測試樣本有\(\hat{\epsilon}\times m\)個被錯誤分類)
泛化錯誤率\(\epsilon\)的學習器,將\(m\)個樣本中的\(m'\)個樣本分類錯誤,將\(m-m'\)個樣本分類正確的概率為:
測試錯誤率\(\hat{\epsilon}\),將\(m\)個樣本中\(\hat{\epsilon}\times m\)個錯誤分類,\(m-\hat{\epsilon}\times m\)正確分類的概率為:
很明顯這是屬於二項分佈,對其求偏導易知在\(\epsilon=\hat\epsilon\),\(P(\hat\epsilon,\epsilon)\)取最大值。
二項分佈的定義:
二項式定理:
“二項檢驗”(binomial test):已知一個分佈服從二項分佈,但未知這個分佈的引數(這個引數在書中是 泛化錯誤率\(\epsilon\)),想要通過一批服從這個分佈的一些樣本(即 測試錯誤率\(\hat\epsilon\)),來對這個引數的取值範圍的假設進行判斷,若這個假設定信度超過了設定的置信度閾值,則假設成立。(這個解釋些許有些牽強,仍需探討並改進)
對西瓜書中“二項檢驗”的理解:
- 該“二項檢驗”要檢驗的假設:
要證明這個猜想是否成立,其實只需要知道泛化錯誤率\(\epsilon\)的值即可,但是泛化錯誤率往往不能預先得知,這也是此次“二項檢驗”的目的:在一定準確度上,對\(\epsilon\)的值進行猜測,其中\(\epsilon_0\)即是對\(\epsilon\)的猜測值。
預先可以得到的是測試錯誤率\(\hat\epsilon\),測試錯誤率可以在一定程度上反映出泛化錯誤率,書中給出兩者的聯合概率函式$$P({\hat{\epsilon}};{\epsilon})=(_{\hat{\epsilon}\times m}^m) {\epsilon}^{\hat{\epsilon}\times m}(1- \epsilon)^{m-\hat{\epsilon}\times m}$$
易知,\(\epsilon=\hat\epsilon\)的概率最大,這裡解釋基本合理,但是這裡引用一下\(\hat\epsilon\)是\(\epsilon\)的無偏估計使其更為可靠。(無偏估計的意義是:在多次重複下,它們的平均數接近所估計的引數真值。)
- 若想使得\(\epsilon≤\epsilon_0\)假設成立,則要使得測試錯誤率\(\hat\epsilon<\)臨界值\(\overline\epsilon\)(即泛化錯誤率\(\epsilon\)的最小值),使得\(\hat\epsilon<\overline\epsilon≤\epsilon≤\epsilon_0\)。
即\(\hat\epsilon<\overline\epsilon\)成立的概率\(≥1-α\)或\(\hat\epsilon≥\overline\epsilon\)成立的概率\(<α\)(反命題成立表示正命題不成立),則認為\(\epsilon≤\epsilon_0\)成立。
即,\(P\{\hat\epsilon≥\overline\epsilon |\epsilon≤\epsilon_0\}<α\)時,則假設\(\epsilon≤\epsilon_0\)成立。 - 在已知\(\hat\epsilon\)的前提下,只需要計算\(\overline\epsilon\)及\(α\)的值即可對假設做出檢驗。
如何計算假設的置信度\(1-α\)?
假設定信度就是假設在泛化錯誤率的取值範圍的約束下,分佈曲線下的面積和(對應於圖2.6中的非陰影部分的面積和)。其中,\(α\)就是從\(\epsilon\times m+1\)個誤分類樣本數開始,一直到\(m\)個誤分類樣本數中,柱形面積之和(對應於圖2.6中的陰影部分的面積和)。
而\(\overline\epsilon\)值便是滿足陰影部分面積最大值小於\(α\)條件下,最小的\(\epsilon\)取值,即公式(這裡公式已經更正為正確版本):
- 綜上所述,若測試錯誤率\(\hat\epsilon\)小於臨界值\(\overline\epsilon\),則表示\(\epsilon≤\epsilon_0\)假設成立。(希望各位對此公式的個人見解進行交流和指正)
t檢驗(t-test):
引用浙江大學概率論與數理統計(第四版)第八章第二節正態總體均值的假設檢驗中,關於t檢驗概念說明部分。
- 對於已知\(k\)個測試錯誤率\(\hat{\epsilon}_{1}, \hat{\epsilon}_{2}, \ldots, \hat{\epsilon}_{k}\)的學習器,猜測其泛化錯誤率\(\epsilon_0\),做出假設
- 計算平均錯誤率\(\mu\),方差\(\sigma^{2}\)
則檢驗統計量\(t\)為
若\(t\)位於\([t_{{-α}\over{2}},t_{{α}\over{2}}]\)內,則假設\(H_0:\mu=\epsilon_0\)平均測試錯誤率等於泛化錯誤率成立。
2. 交叉驗證\(t\)檢驗
其實就是對\(k\)折交叉驗證法驗證兩個學習器\(A\)和\(B\),得到的測試錯誤率進行檢驗,猜測兩個學習器泛化錯誤率是否相同。這裡的比較檢驗方法是成對t檢驗(paired t-tests)。
基本思想就是兩學習器效能相同,則兩測試錯誤率也相同。
- 做出假設
- 計算兩學習器測試錯誤率的差值,得到\(\Delta_1,\Delta_2,...,\Delta_k\)。
- 計算差值的均值\(\mu\)及方差\(\sigma^2\)。
- 計算t。
- 若\(t<t_{\frac{\alpha}{2},k-1}\),則表示假設\(H_0\)成立,兩學習器效能相同,否則效能有差別,平均錯誤率較小的效能較優。
5×2交叉驗證法:
目的是為了解決測試錯誤率不獨立的問題,而提出的方法。測試錯誤率不獨立的原因是:原資料固定,交叉驗證時,不同輪的訓練集可能會重疊。
該方法內容:
- 隨機將原資料打亂,將原資料分為2個互斥子集\(D_1∩D_2=\empty\),\(D_1,D_2\)均作為測試集,進行測試,得到一對測試錯誤率\((\hat\epsilon_1^1,\hat\epsilon_1^2)\)。
- 將上述步驟重複5次,得到五對測試錯誤率\((\hat\epsilon_1^1,\hat\epsilon_1^2),...,(\hat\epsilon_5^1,\hat\epsilon_5^2)\)。對於兩個學習器\(A,B\),分別得到其五對測試錯誤率\((\hat\epsilon_{A1}^1,\hat\epsilon_{A1}^2),...,(\hat\epsilon_{A5}^1,\hat\epsilon_{A5}^2)\),\((\hat\epsilon_{B1}^1,\hat\epsilon_{B1}^2),...,(\hat\epsilon_{B5}^1,\hat\epsilon_{B5}^2)\).
- 分別求1折和2折上的差值。
- 為了緩解測試錯誤率的非獨立性,僅計算第一次交叉驗證的均值\(\mu\),但方差依舊計算總體方差。
- 計算檢驗統計量\(t\),將\(t\)與臨界值\(t_{\frac{\alpha}{2}}\)進行比較,確定假設是否成立。
因為這裡共有5對測試錯誤率,故自由度為5(這裡自由度是指取值不受限制的變數個數),查t檢驗臨界值表可知,當\(\alpha=0.05\)時,\(t_{\frac{\alpha}{2}}=2.571\),當\(\alpha=0.1\)時,\(t_{\frac{\alpha}{2}}=2.015\)。
3. McNemar檢驗
McNemar檢驗,實現對於二分類多個學習器之間效能的檢驗。
列聯表(contingency table):展示兩個學習器分類結果的關係數量。(這裡很容易聯想到二分類代價矩陣)
若兩學習器效能相同,則應有\(e_{01}=e_{10}\),則\(|e_{01}-e_{10}|\)服從正態分佈。
(這裡可以類比\(P-R\)曲線中的平衡點概念,平衡點在混淆矩陣中\(P=R\),也即\(\frac{TP}{TP+FP}=\frac{TP}{TP+FN}\),化簡可知\(FP=FN\),即這裡的列聯表反對角線相等來評估兩學習器效能相同。)
則定義檢驗統計量
通過連續性校正(因為這裡是對二項分佈進行正態分佈的近似,故需要連續性校正),頻率小的加0.5,頻率大的減0.5,變形後即
服從自由度為1的\(\chi^2\)分佈,當\(\tau_{\chi^{2}}<\chi_\alpha^2(臨界值)\)時,則不能拒絕假設:“兩學習器效能基本一致”,否則拒絕假設。
關於\(\chi^2\)檢驗(卡方檢驗)的檢驗過程,在習題2.9中已經給出。
4. Friedman檢驗與Nemenyi後續檢驗
一組資料集上多個演算法比較的方法:
- 兩兩比較後排序,兩兩比較可使用t檢驗和McNemar檢驗
- 基於演算法排序的Friedman檢驗
Friedman檢驗方法:
- 在每個資料集上對每個學習器/學習演算法進行測試,得到其測試效能。
- 按照測試效能進行排序(升序1~n),若兩學習器效能一樣,則其排序序號為\(當前序值+\frac{1}{效能相同學習器的個數}\)(即平分序值),並計算每個演算法的平均序值(若學習器效能相同,則其平均序值應該相同),得到演算法比較序值表。
- 在N個資料集上比較k個演算法,令\(r_i\)表示第\(i\)個演算法的平均序值。
- \(r_i\)的均值$$\frac{k+1}{2}$$
推導過程:
- \(r_i\)的方差$$\frac{k^2-1}{12N}$$
推導過程:(方差的推導推到最後推不出來了,望各位指點)
定義檢驗統計量\(\tau_{\chi^2}\)為
當\(k\)和\(N\)較大時,服從自由度為\(k-1\)的\(\chi^2\)分佈,這裡顯然對\(k\)和\(N\)的值有要求,較小時無顯著區別,所以該檢驗方法過於保守,為了解決小數值\(k\)和\(N\)的檢驗問題,則使用\(\tau_F\)來進行檢驗。
這裡\(\tau_F\)服從自由度為\(k-1\)和\((k-1)(N-1)\)的\(F\)分佈。
這裡僅給出了常用值,全部可用值在浙江大學概率論與數理統計(第四版)387頁F分佈表中給出。
Nemenyi後續檢驗(Nemenyi post-hoc test):
“Friedman”檢驗僅用於說明演算法間效能是否相同,若要區分各演算法,則需進行後續檢驗。
- 計算臨界值域
- 若兩演算法\(平均序值之差>臨界值域CD\),則兩演算法效能不相同。
Friedman檢驗用來判斷所有演算法是否存在顯著差異,若存在,則利用Nemenyi後續檢驗對演算法進行兩兩比較,區分出哪幾組演算法效能存在差異。
就可從圖中觀察,若兩個演算法的橫線段有交疊,則說明這兩個演算法沒有顯著差別,否則即說明有顯著差別。有差別的兩演算法,平均序值越小,演算法效能越優。
TODO:這裡遺留一個問題“這幾種檢驗方式的使用場景以及適用條件?”
2.5 偏差與方差
主要解決“學習演算法為什麼具有這樣的泛化效能?”。
“偏差-方差分解”(bias-variance decomposition):對學習演算法的期望泛化錯誤率進行拆解。(為了探究泛化錯誤率由哪幾部分構成)
- 幾個變數:
測試樣本:\(x\)
\(x\)在資料集中的所有標記:\(y_D\)
\(x\)在資料集中的真實標記:\(y\)(常量)
(在有噪聲的情況下,\(y_D\)≠\(y\),包含噪聲的標記為\(y_D-y\))
訓練集\(D\)上學得的模型\(f\)在\(x\)上的預測輸出:\(f(x;D)\) - 公式推導:
學習演算法的期望預測(均值):
使用樣本數相同的不同訓練集產生的方差:
噪聲:(對噪聲標記平方的期望)
期望輸出與真實標記的差別稱為偏差(bias), 即
為便於討論, 假定噪聲期望為零, 即 \(\mathbb{E}_{D}\left[y_{D}-y\right]=0\). 通過簡單的多項式展開合 並, 可對演算法的期望泛化誤差進行分解:
對此公式的解析,在南瓜書中極為詳細,這裡引用其解析公式2.41的解析
於是,
泛化錯誤率/泛化誤差 = 偏差(學習演算法能力) + 方差(資料的充分性) + 噪聲(問題本身難度)
偏差:度量了學習演算法期望預測與真實結果的偏離程度,刻畫了學習演算法本身的擬合能力(偏差越大,擬合能力越差);
方差:度量了同樣大小的訓練集的變動所導致的學習效能的變化,即刻畫了資料擾動所造成的影響(方差越大,資料的變動影響越大);
噪聲:表達了在當前任務上任何學習演算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度(噪聲越大,問題越難)。
偏差-方差窘境(bias-variance):偏差與方差間的關係並非正相關,而是呈現一種近似負相關的關係,即兩者存在衝突。在學習演算法擬合不足時,資料的波動對學習器的影響很小;學習演算法過擬合時,資料的波動又會產生過多的干擾。
第二章更新時隔了多日,主要還是對基礎概率論和統計學知識的欠缺,重溫了浙大概率論感覺好很多了,對第二章一些公式的推導相較於第一章明顯欠缺了太多了,在之後的學習過程再補齊吧。