機器學習總結之第二章模型評估與選擇

【第2章 模型評估與選擇】

 

〖1、知識點概括〗

 

1、經驗偏差與過擬合

【分類】:對是離散值的結果進行預測。react

【迴歸】:對是連續值的結果進行預測。算法

分類和迴歸屬於監督學習。app

 

【錯誤率】:分類錯誤的樣本數佔樣本總數的比例。機器學習

eg:m個樣本中有a個樣本分類錯誤,則錯誤率 E=a/m函數

【精度】:分類正確的樣本數佔樣本總數的比例。即:精度=1-錯誤率。工具

eg:m個樣本中有m-a個樣本分類正確,則精度 A=1-Epost

 

【偏差】:學習器的實際預測輸出與樣本的真實輸出之間的差別。性能

eg:1000個西瓜中,好瓜有400個,但學習器預測有500個,這之間的差別就是偏差。學習

【訓練偏差、經驗偏差】:學習器在訓練集上的偏差。測試

值得一提的事,學習器就是在訓練集上訓練出來的,但實際上在回到訓練集上對樣本進行結果預測時,仍有偏差。(即結果值和標記值不一樣)

Training error is the error that you get when you run the trained model back on the training data. Remember that this data has already been used to train the model and this necessarily doesn't mean that the model once trained will accurately perform when applied back on the training data itself.

eg:100000個用來得出學習器的西瓜在學習器中進行分類測試,發現有10000個西瓜分類錯誤。則分類錯誤率爲10%,分類精度爲90%

【泛化偏差】:學習器在新樣本上的偏差。

eg:100個新西瓜,使用學習器分類,分類錯誤的有20個。則分類錯誤率爲20%,精度爲80%。

 

但願:獲得泛化偏差最小的學習器。

實際能作的:努力使經驗偏差最小化。

注意:努力使經驗偏差最小化≠讓經驗偏差達到最小值即訓練集的分類錯誤率爲0%。

由於在訓練集上表現很好的學習器,泛化能力卻並不強。

【過擬合】:學習能力過於強大。學習器把訓練樣本學得太好,致使將訓練樣本中自身含有的特色當成全部潛在樣本都會具備的通常性質,從而訓練後使得泛化性能降低。

eg:100000個用來得出學習器的西瓜都是球形瓜,訓練出的決策樹判斷只有瓜是球形纔多是好瓜,但實際上市場上培養的方形瓜也是好瓜,這就讓訓練出的決策樹在面對方形瓜時的泛化能力變得不好。

【欠擬合】:學習能力底下。對訓練樣本的通常性質還沒有學好。

eg:色澤是判斷瓜是不是好瓜的重要標準,但通過訓練獲得的決策樹卻沒有對色澤進行判斷的步驟。

因此實際能作的:努力使經驗偏差最小化,是指在「過擬合」與「欠擬合」之間尋找一種平衡,並儘量的使學習器在不太過擬合的狀況下使得訓練集的分類更準確。

 

任何學習算法都有針對過擬合的措施,但過擬合是沒法徹底避免的。

【多項式時間(Polynomial time)】:在計算複雜度理論中,指的是一個問題的計算時間m(n)不大於問題大小n的多項式倍數。任何抽象機器都擁有一複雜度類,此類包括可於此機器以多項式時間求解的問題。

【P問題】:指的是可以在多項式的時間裏獲得解決的問題。

【NP問題】:指的是可以在多項式的時間裏驗證一個解是否正確的問題。

【證實過擬合沒法避免】:

1.機器學習面臨的是一個NP或更難的問題,即∃NP;

2.有效的算法需在多項式時間內運行完成,即∃P;

3.當可完全避免過擬合時,經過最小化經驗偏差就可得到最優解,即P=NP;

4.但實際上P≠NP;

5.過擬合沒法避免。

 

2、評估方法

理想:經過評估學習器的泛化偏差,選出泛化偏差最小的學習器。

實際:泛化偏差只能經過測試求得的測試偏差來表現。

【測試偏差】:學習器在測試集上的實際預測輸出與測試樣本的真實輸出之間的差別。

【數據集】:一組記錄的集合。D={x1,x2,x3...xm}

爲了實現測試、表現出學習器的泛化偏差從而進行評估,須要在數據集D中產生出訓練集S與測試集T,其中測試集應儘量與訓練集互斥。

經過對數據集不一樣的處理方法,能夠分出不一樣的訓練集與測試集,常見的作法有以下三種。

1.留出法

【留出法】:直接將數據集D劃分爲兩個互斥的集合,其中一個集合做爲訓練集S,另外一個做爲測試集T,即D=STST=∅。

如上圖,不是西瓜,是兩個同心圓。其中內圓紅色部分爲訓練集,外環綠色部分爲測試集,兩部分是兩個互斥的集合。

除此以外,留出法還要儘量的保持數據分佈的一致性,要保持樣本類別比例類似,從採樣的角度看待數據採集的劃分過程,保留類別比例的採樣方式一般稱爲「分層採樣」。就比如它真是一個西瓜,按甜度將其分爲七塊,採樣時每一塊都要按照相同的所佔比例去採。這七類數據集的測試集與訓練集的比值應是相等的。

 

 

單次使用留出法獲得的結果每每不穩定可靠,通常採用若干次隨機劃分,重複進行實驗評估後取平均值做爲留出法的評估結果。

例如測試集分別取此圖中三組同心圓中綠色的部分,得出的結果再取平均值,就是留出法的評估結果。

 

總結:

留出法的特色:1.直接劃分訓練集與測試集、2.訓練集和測試集均分層採樣、3.隨機劃分若干次,重複試驗取均值

p.s.上面五幅圖,用圓心角來體現數據分佈的一致性,不管是訓練集仍是測試集,均在360度範圍內分佈。

 

2.交叉驗證法

【交叉驗證法】:先將數據集D分爲k個大小類似的互斥子集,即D=D1D2...DkDi∩Dj=∅(i≠j),以下圖。

每一個子集Di都儘量保持數據分佈的一致性,即每一個子集仍然要進行分層採樣。每次用k-1個子集做爲訓練集,餘下的那個子集作測試集。這樣能夠得到k組「訓練/測試集」,最終返回的是k個結果的均值。

如上圖,每一個綠色的部分都爲測試集,其他紅色部分爲訓練集。

與留出法類似,交叉驗證法也須要進行屢次試驗,用不一樣的劃分方法重複p次(但每次仍是劃分爲k組),再取均值。

 

總結:

交叉驗證法獲得的結果是均值的均值,即p個「k個結果的均值」的均值,所以交叉驗證法又能夠叫作p次k折交叉驗證。

交叉驗證法的特色:1.每一個子集都會作測試集、二、每一個子集分層採樣、3.單次k折,切換測試集試驗取均值、4.k折劃分p次,重複試驗再取均值

優勢:準確;缺點:開銷大

p.s.上面兩幅圖,用點到圓心的距離來體現數據分佈的一致性,任何子集均有與圓心距離在0到半徑長度範圍內的點。

 

3.自助法

【自助法】:對有m個樣本的數據集D,按以下方式採樣產生數據集D':每次隨機取一個樣本拷貝進D',取m次(有放回取m次)。

按此方法,保證了D'D的規模一致。但D'雖然也有m個樣本,可其中中會出現重複的樣本,而D中會存在D'採樣沒有采到的樣本,這些樣本就留做測試集。

某樣本在m次採樣中均不會被採到的機率是: (1-1/m)^m ,取極限可得

由此可知,理論上有36.8%的樣本沒有出如今在D'之中。

優勢:訓練集與數據集規模一致;數據集小、難以有效劃分訓練集和測試集時效果顯著;能產生多個不一樣的訓練集;

缺點:改變了訓練集的樣本分佈,引入估計誤差。

 

 

理想:經過評估學習器的泛化偏差,選出泛化偏差最小的學習器。

那麼,上一節經過留出法、交叉驗證法和自助法獲得了能夠表現泛化偏差的測試偏差後,如何選出表現最佳的學習器呢?這就須要對泛化能力有一個評價標準。簡單舉個例子就是:獲得了值,帶入標準之中,選出最終結果。

【性能度量】:衡量泛化能力的評價標準。

但實際上的性能度量,還要反映任務需求。在對比不一樣學習器的能力時,使用不一樣的性能度量每每會致使不一樣的評判結果。什麼樣的學習器是好的,不只取決於算法和數據,還決定於任務需求。

預測任務中,評估學習器f的性能,須要將學習器的預測結果f(x)同真實標記y進行比較。

因此如今主要討論的是監督學習。

如圖是監督學習的性能度量,其中迴歸任務的性能度量通常採用均方偏差,而分類任務的性能度量多種多樣。

 

一、迴歸任務的性能度量——均方偏差:

公式以下:

可知,均方偏差是m個離散樣本的方差的平均數。

但對於數據分佈Ɗ和機率密度p(·),均方偏差的計算公式以下:

可知,此時樣本能夠看作非離散樣本而是連續樣本。

 

性能度量方法:一般,均方偏差大的模型性能差,均方偏差小的模型性能好。

均方偏差反應的是迴歸任務模型判斷正確與否的能力。

 

二、分類任務的性能度量1——錯誤率與精度

錯誤率:分類錯誤的樣本佔樣本總數的比例。

精度:分類正確的樣本佔樣本總數的比例。

錯誤率是m個離散樣本的指數函數和的平均數。

精度與錯誤率相同,也是m個離散樣本的指數函數和的平均數,但二者的指數函數不一樣。

但對於數據分佈Ɗ和機率密度p(·),錯誤率和精度的計算公式以下:

 

可知,此時樣本能夠看作非離散樣本而是連續樣本。

 

性能度量方法:一般,錯誤率低精度高的模型性能好,錯誤率高精度低的模型性能差。

錯誤率與精度反應的是分類任務模型判斷正確與否的能力。

 

三、分類任務的性能度量2——查準率、查全率與F1

當須要反應的不是判斷正確與否的能力,而是正例、反例查出的準確率時,就不能用錯誤率和精度做爲判斷分類任務模型的性能度量了。

判斷得是否正確,在二分類任務中有四種表現形式,還拿西瓜🍉舉例:

好西瓜判斷成好西瓜,判斷正確①;好西瓜判斷成壞西瓜,判斷錯誤②;

壞西瓜判斷成好西瓜,判斷錯誤③;壞西瓜判斷成壞西瓜,判斷正確④;

其中,①和④都是判斷正確,②和③都是判斷錯誤。錯誤率和精度是①和④、②和③的綜合判斷,只有判斷正確與否的概念,沒有正例反例的區別。

因此要引入查準率(P)、查全率(R)的概念。

下表是二分類結果混淆矩陣,將判斷結果分爲四個類別,真正例(TP)、假正例(FP)、假反例(FN)、真反例(TN)。

查準率:【真正例樣本數】與【預測結果是正例的樣本數】的比值。

查全率:【真正例樣本數】與【真實狀況是正例的樣本數】的比值。

查準率是在講,挑出的好瓜裏頭,有多少真的是好瓜。因此當但願選出的好瓜比例儘量高的時候,查準率就要高。(當瓜農面對零售時,會逐個判斷哪個是好瓜,而後對每個顧客說:「保校保甜,不甜不要錢。」若是瓜農的查準率不高,他要賠死了。)

查全率是在講,挑出來真的好瓜,佔總共好瓜個數的多少。因此當但願儘量多的把好瓜選出來的時候,查全率就要高。(當瓜農面對批發時,就不要求每一個都甜了,儘量多的把好瓜都挑出來就好了,否則就浪費了好瓜。)

通常來講,查準率高時,查全率偏低;查全率高時,查準率偏低。一般只在一些簡單任務中,查準率和查全率都偏高。

 

性能度量的方法:一、直接觀察數值;二、創建P-R圖。

直接觀察數值已經介紹過了,如今介紹P-R圖。

P-R圖,即以查全率作橫軸,查準率作縱軸的平面示意圖,經過P-R曲線,來綜合判斷模型的性能。

但值得一提的是,同一個模型,在同一個正例判斷標準下,獲得的查準率和查全率只有一個,也就是說,在圖中,只有一個點,而不是一條曲線。

那麼要獲得一條曲線,就須要不一樣的正例判斷標準。

在判斷西瓜好壞的時候,咱們不是單純的將西瓜分紅好壞兩堆,左邊一堆好瓜,右邊一堆壞瓜。

而是對預測結果進行排序,排在前面的是學習器認爲最多是正例的樣本,排在最後面的是最不可能的樣本。

如今按順序,依次將每個樣本劃分爲正例進行預測,就獲得了多組查準率和查全率的值了。

多組值就是多個點,樣本充足的時候,能夠連成一條平滑的曲線,即爲P-R曲線。

獲得P-R圖後,如何判斷哪一個學習器性能更佳?

當曲線沒有交叉的時候:外側曲線的學習器性能優於內側;

當曲線有交叉的時候:

第一種方法是比較曲線下面積,但值不太容易估算;

第二種方法是比較兩條曲線的平衡點,平衡點是「查準率=查全率」時的取值,在圖中表示爲曲線和對角線的交點。平衡點在外側的曲線的學習器性能優於內側。

第三種方法是F1度量和Fβ度量。F1是基於查準率與查全率的調和平均定義的,Fβ則是加權調和平均。

 

經過比較兩條曲線的F1,來判斷哪一個學習器性能更好。

但在不一樣的應用中,對查準率和查全率的重視程度不一樣,須要根據其重要性,進行加權處理,故而有了Fβ度量。β是查全率對查準率的相對重要性。

β>1時:查全率有更大影響;β=1時:影響相同,退化成F1度量;β<1時:查準率有更大影響。

以上是一個二分類混淆矩陣的查準率和查全率判斷。

但實際狀況中,一個分類學習器每每並不僅有一個二分類混淆矩陣,當屢次訓練/測試或是在多個數據集上進行訓練/測試的時候,就會出現多個二分類混淆矩陣。當須要綜合考慮估計算法的「全局性能」時,有兩種解決辦法。

宏:在n個混淆矩陣中分別計算出查準率查全率,再計算均值,就獲得「宏查準率」、「宏查全率」和「宏F1」。

微:先將n個混淆矩陣的對應元素進行平均,再計算查準率查全率和F1,就獲得「微查準率」、「微查全率」和「微F1」。

 

四、分類任務的性能度量3——ROC與AUC

與P-R圖相同,ROC圖經過對測試樣本設置不一樣的閾值並與預測值比較,劃分出正例和反例。再計算出真正例率和假正例率。P-R圖逐個將樣本做爲正例,ROC圖逐次與閾值進行比較後劃分正例。本質上,都是將測試樣本進行排序。

真正例率(TPR):【真正例樣本數】與【真實狀況是正例的樣本數】的比值。(查全率)

假正例率(FPR):【假正例樣本數】與【真實狀況是反例的樣本數】的比值。

ROC圖全名「受試者工做特徵」,以真正例率爲縱軸,以假正例率爲橫軸。

如圖,理想模型是真正例率爲100%,假正例率爲0%的一點。隨機猜想模型則是真正例率與假正例率持平的直線。由此可知,在隨機猜想模型左上方的曲線和在其右下方的曲線都表明了什麼。(右下方的模型,還不如隨機猜想準。)

性能度量的方法:繪製ROC曲線

當曲線沒有交叉的時候:外側曲線的學習器性能優於內側;

當曲線有交叉的時候:比較ROC面積,即AUC。

 

五、分類任務的性能度量4——代價敏感錯誤率與代價曲線

仍是以前的西瓜🍉例子:

好西瓜判斷成好西瓜,判斷正確①;好西瓜判斷成壞西瓜,判斷錯誤②;

壞西瓜判斷成好西瓜,判斷錯誤③;壞西瓜判斷成壞西瓜,判斷正確④;

②和③都是判斷錯誤,錯誤率是②和③的綜合。雖然從錯誤率的角度看,把好瓜判斷成壞瓜和把壞瓜判斷成好瓜,都是判斷錯了。但實際上,這兩種錯誤的判斷所付出的代價倒是不一樣的。把好瓜判斷成壞瓜,會浪費一個好瓜;而把壞瓜判斷成好瓜,則可能吃壞一個顧客的身子。

換句話說,前面介紹的性能度量,大都隱式地假設了「均等代價」,而爲權衡不一樣類型錯誤所形成的不一樣損失,應爲錯誤賦予:「非均等代價」。

下圖爲二分類代價矩陣,其中 cost_{ij} 表示將第i類樣本預測爲第j類樣本的代價。

而以下公式就是被賦予了非均等代價的錯誤率:

在這樣的非均等代價下,ROC曲線不能直接反映出學習器的指望整體代價,而「代價曲線」則能夠達到目的。

性能度量的方法:繪製代價曲線

代價曲線的橫軸是正例機率代價P(+)cost,縱軸是歸一化代價 cost_{norm}

其中,p是樣例爲正例的機率;FNR是假反例率;FPR是假正例率。

真正例率(TPR):【真正例樣本數】與【真實狀況是正例的樣本數】的比值。(查全率)

假正例率(FPR):【假正例樣本數】與【真實狀況是反例的樣本數】的比值。

假反例率(FNR):【假反例樣本數】與【真實狀況是正例的樣本數】的比值。(1-查全率)

(P.S.這裏容易繞混,真正,正正爲正;假反,負負得正;假正,負正得負;真假,正負爲負)

繪製方法:

ROC曲線上取一個點(FPR,TPR);

取相應的(0,FPR)和(1,FNR),連成線段;

取遍ROC曲線上全部點並重復前步驟;

全部線段的下界就是學習器指望整體代價。

實際上就是經過將樣例爲正例的機率p設爲0和1,來做出曲線的全部切線,最後連成曲線。

 

4、比較檢驗

0.回顧

有了評估方法和性能度量,就能夠對學習器性能進行比較了。

因爲這些名字實在晦澀拗口,咱們再來回顧一下評估方法和性能度量都是什麼。

評估方法:從數據集D中分出訓練集S和測試集T。

常見的評估方法:留出法、交叉驗證法、自助法。

性能度量:對學習器的泛化性能進行評估時衡量模型泛化能力的評價標準。

常見監督學習的性能度量:

綜上,評估方法將數據集分類,其中一部分用於訓練,另外一部分用於測試。而性能度量是一系列數值和圖像,在訓練完畢後,經過比較這些數值和圖像來反映學習器性能的優劣。

那麼問題來了,怎麼比較?

實際上,這個比較很複雜,涉及三個重要因素。

一、但願比較的和實際得到的性能並不相同,二者對比結果也可能不會相同。

二、測試集的性能與測試集自己的選擇有很大關係,也就是說,可能數據好,性能就好,數據很差,性能也跟着很差。

三、不少機器學習算法都具備隨機性,相同的參數、相同的測試機,運行屢次,結果卻不一樣。

 

瞭解了這三個重要因素,才能對如何評估學習器性能優劣有一些思路。

 

一、假設檢驗

比較檢驗的重要方法是統計假設檢驗,它爲咱們進行學習器性能比較提供了重要依據。

可是因爲書中沒有對假設檢驗作一些什麼詳細的介紹,而是默認你們都瞭解了這部分的知識,因此不少人可能看到這就有些吃力了。

因此想學好計算機,數學仍是很重要的。

不瞭解假設檢驗的原理,這部份內容等因而看不下去的。

因此先來了解一下假設檢驗。

假設檢驗(Hypothesis Testing)是數理統計學中根據必定假設條件由樣本推斷整體的一種方法。

浙大第四版書中的假設檢驗定義以下:

在整體的分佈函數徹底未知或已知其形式,但不知其參數的狀況,爲了推斷整體的某些未知特性,提出某些關於整體的假設。咱們要根據樣本對所提出的假設做出是接受仍是拒絕的決策。

介於數學定義老是雲裏霧裏複雜難懂,筆者在此梳理一下。

假設檢驗四步走:

一、條件:知足狀況。(整體的分佈函數徹底未知或已知其形式,但不知其參數)

二、目標:以推斷整體的某些未知特性爲目標。

三、方法:提出某些關於整體的假設。

四、行動:根據樣本對所提出的假設做出是接受仍是拒絕的決策。

 

那麼假設檢驗在機器學習的【比較檢驗】中究竟如何應用呢?以讓咱們以分類任務的【錯誤率】爲例子,從這四步裏分析:

一、條件:

現實中咱們不知道學習器的泛化錯誤率,只能獲知其測試錯誤率。可是兩者的分佈狀況極有可能類似。這就符合了定義中「分佈函數徹底未知或已知其形式但不知其參數」的狀況。

也就是說:泛化錯誤率的分佈未知,但可經過測試錯誤率去推斷。

二、目標:

狀況符合了,可整體有什麼未知特性要咱們來推斷?

「若在測試集上觀察到學習器A比B好,則A的泛化性能是否在統計意義上優於B,以及這個結論的把握有多大。」這即是整體的未知特性。

未知特性也有了,如今要進行假設了。

三、方法:

以書中的例子爲例,「 \epsilon=\epsilon_{0} 」,將泛化錯誤率假設爲某數值 \epsilon_{0}

四、行動:

經過顯著度來判斷作出的假設該被接受仍是該被拒絕。

 

梳理清楚了思路,讓咱們完全回到書中的例子中來。

先說進行一次估計的例子:

首先標註一下各個符號:

測試錯誤率: \tilde{\epsilon}

泛化錯誤率: \epsilon

測試樣本數: m

誤分類樣本數: m’

其中,泛化錯誤率 \epsilon 是一個徹底未知的只能推測的數值,測試錯誤率 \tilde{\epsilon} 則是能夠獲知的未知數值。測試樣本數 m 是給定的,誤分類樣本數 m' 是測試得知的。

在測試得知了 m’ 以後,可推斷出, m’=\tilde{\epsilon}×mm’\tilde{e} 成正比,比例係數爲 m ),從而 \tilde{\epsilon} 可知。未知數就只剩下 \epsilon

在包含了 m 個樣本的測試集上,【泛化錯誤率爲 \epsilon 的學習器】被測得測試錯誤率爲 \tilde{\epsilon} 的機率爲:

 

這個機率數值 P(\tilde{\epsilon};\epsilon) 有什麼用呢?

咱們在解釋完以後回答。

這個機率,表達了【泛化錯誤率爲 \epsilon 的學習器】被測得【測試錯誤率】爲 \tilde{\epsilon} 的可能性。 \tilde{\epsilon} 取0~100%。若以這個【能夠測得的測試錯誤率 \tilde{\epsilon} 】做爲自變量,以機率 P(\tilde{\epsilon};\epsilon) 爲因變量,創建平面座標圖,則對於不一樣的測試錯誤率,有不一樣的可能性。在某點可能性越高,這個未知的【泛化錯誤率 \epsilon 】和這個點表明的測試錯誤率的關係就越密切。

如今要找其可能性最高的點,就要對機率 P(\tilde{\epsilon};\epsilon)\epsilon 的導數,導數爲0時,存在極值。

而對此機率函數求導並解出導函數等於0的式子以後,發現存在一個值 \epsilon_{0} ,使得P(\tilde{\epsilon};\epsilon)\epsilon=\epsilon_{0} 時最大, |\epsilon-\epsilon_{0}| 增大時減少。整個圖像實際上是個山峯形狀,符合二項分佈。

那麼此時也能夠反過來說,若是這個泛化錯誤率 \epsilon 已知爲 \epsilon_{0} ,則理論上,橫座標爲 \epsilon_{0} 的機率值P(\tilde{\epsilon};\epsilon)是最大的。這也和書中圖2.6的例子一致。

即:若泛化錯誤率爲 \epsilon_{0} ,則測試錯誤率也爲 \epsilon_{0} 的機率最大(可能性最高)。

那麼我如今能夠回答上面那個問題了。

這個機率數值的用處,就是讓咱們獲得了一個多是最大的泛化錯誤率數值 \epsilon_{0} ,使得咱們能夠用這個數值來進行假設,假設這個學習器的泛化錯誤率不會超過 \epsilon_{0} .

即假設:「 H_0:\epsilon≤\epsilon_{0} 」。

沒有這個機率 P(\tilde{\epsilon};\epsilon) ,咱們連假設什麼都不知道,只能瞎雞兒假設(攤手)。

那麼有了假設,就能夠進行檢驗了。

到底要不要接受這個假設呢?

咱們來檢驗一下。

這裏就涉及假設檢驗的另一大難點,也是最令我頭疼的一點,顯著度 \alpha (也叫顯著性水平)。

顯著性水平是估計整體參數落在某一區間內,可能犯錯誤的機率,用α表示。顯著性是對差別的程度而言的,程度不一樣說明引發變更的緣由也有不一樣:一類是條件差別,一類是隨機差別。它是在進行假設檢驗時事先肯定一個可容許的做爲判斷界限的小几率標準。

這個顯著度 \alpha ,是事先肯定好的一個很是小的值,好比0.05啦,0.1啦什麼的。(上圖是爲了看清楚而隨便畫的)

有了這個顯著度 \alpha ,咱們就肯定了一個發生【判斷錯誤】的機率上限。(什麼叫【判斷錯誤】呢?就是當 H_0 爲真時拒絕接受 H_0 ,因此「 1-\alpha 」也被稱爲置信度。)

肯定了這個上限以後,就能夠很方便的得出一個檢驗假設的門檻值 \bar{\epsilon} (此門檻值爲泛化錯誤率的最大值),若測試錯誤率 \tilde{\epsilon} 小於這個門檻值 \bar{\epsilon} ,則能夠說,在 \alpha 的顯著度下(或在 1-\alpha 的置信度下),接受這個「 H_0:\epsilon≤\epsilon_{0} 」的假設。反之,若測試錯誤率大於這個門檻值(測試錯誤率比最大的泛化錯誤率還大),則說明,在 \alpha 的顯著度下,應該拒絕這一假設。

 

一次估計的說完了,再簡單說說屢次的。

現實中咱們並不是僅做出一次留出法估計,而是作屢次,因此會獲得不一樣的多個測試錯誤率: \tilde{\epsilon}_{1}、\tilde{\epsilon}_{2}、\tilde{\epsilon}_{3}...

假設測試了 k 次,就會獲得相應的均值 \mu 和方差 \sigma^{2}

考慮到這 k 個測試錯誤率能夠看作泛化錯誤率 \epsilon_{0} 的獨立採樣,則根據公式 T=X/\sqrt{Y/n}T 爲自由度爲 nt 分佈,變量 \tau_{t}=(\sqrt{k}(\mu-\epsilon_{0}))/\sigma 服從自由度爲 k-1t 分佈。( \mu-\epsilon_{0} 服從正態分佈, \sigma^{2} 服從自由度爲 k-1\chi^2 分佈)

由此圖和 t 分佈圖的性質可知,最高點處就是測試錯誤率的最大值\epsilon_0

如今要從新假設了,「 H_1:\mu=\epsilon_{0} 」。

接下來就是繼續肯定顯著度 \alpha ,肯定門檻值(此處用雙邊假設),最後進行在置信度爲 1-\alpha 下的判斷了。

 

第二章寫了這麼久,仍是沒寫完,實在是由於這一章是機器學習問題的一個核心——即如何對學習器進行評估,方法和依據都什麼。私覺得這部分,是機器學習的重中之重。

下次發佈的沒有意外的話會是第二章的最會一個分章,筆者將介紹完比較檢驗的其餘幾種方法以及誤差與方差的關係,並嘗試解答課後習題。

 

二、交叉驗證 t 檢驗

學習最重要的部分就是複習。

先回顧一下 k 折交叉驗證。

交叉驗證法:先將數據集 D 劃分爲 k 個大小相思的互斥子集,即 D=D_1\cup D_2\cup D_3 \cup...\cup D_k,D_i\cap D_j=∅(i≠j) ,每一個子集都儘量的保持數據分佈的一致性,即從D中經過分層採樣獲得。

回顧完了,開始介紹比較檢驗的第二種檢驗方法:交叉驗證 t 檢驗。

仍是用錯誤率的比較進行舉例。

即:評估方法:交叉驗證法。性能度量:錯誤率。比較檢驗:交叉驗證 t 檢驗。

如今有兩個學習器A和B,使用 k 折交叉驗證法獲得測試錯誤率分別爲 \epsilon_{1}^{A},\epsilon_{2}^{A},\epsilon_{3}^{A},...\epsilon_{k}^{A}\epsilon_{1}^{B},\epsilon_{2}^{B},\epsilon_{2}^{B},...\epsilon_{k}^{B} 。其中 \epsilon_{i}^{A}\epsilon_{i}^{B} 是在相同的第 i 折訓練/測試集上獲得的結果。

注意,此時的測試錯誤率和以前的假設檢驗那一節的測試錯誤率採用了不一樣的符號,此時因爲沒有提到泛化錯誤率,測試錯誤率被標記爲 \epsilon ,只不過增長了上下角標,請各位不要將其與上一節的泛化錯誤率混淆。

這種狀況,可用 k 折交叉驗證「成對 t 檢驗」來進行比較檢驗。

若是說前一種的假設檢驗是獲得單個學習器的泛化錯誤率的大體範圍假設,那麼這一種檢驗方法就是在比較A、B兩學習器性能的優劣了(不過偏向於驗證A、B性能是否相同)。

可是啊,交叉驗證 t 檢驗,本質上,仍是一種假設檢驗。

基本思想:若兩個學習器的性能相同,則它們使用的訓練/測試集獲得的測試錯誤率應相同,即 \epsilon_{i}^{A}=\epsilon_{i}^{B}

實際上卻不會像理想狀態同樣,兩個學習器的測試錯誤率並不徹底相同,而是存在必定的微小差值。咱們想要判斷兩個學習器的性能是否有顯著差異,就要利用這個差值進行假設檢驗。

若兩個學習器性能相同,這個差值均值應該爲0。所以可對這k個差值對「學習器A和B性能相同」這個假設作 t 檢驗。

一、先對每一對結果求差, \Delta_i=\epsilon_{i}^{A}-\epsilon_{i}^{B}

二、計算出這k個差值的均值 \mu 和方差 \sigma^2

三、根據 t 檢驗的公式 T=X/\sqrt{Y/n} ,得 \tau_t=|\frac{\sqrt{k}\mu}{\sigma}| ,知足自由度爲 k-1t 分佈,故在顯著度 \alpha ,若其小於臨界值 t_{\alpha/2,k-1} ,則假設不能被拒絕,即認爲兩個學習器性能沒有顯著的差異。反之則認爲平均錯誤率小的性能更優。

這裏 t_{\alpha/2,k-1} 是分佈上尾部累積分佈爲 \alpha/2 的臨界值。

 

可是這樣使用 k 折交叉驗證法,一般狀況下會由於樣本有限,使得不一樣輪次的訓練集產生必定程度的重疊。這樣訓練出來的學習器,會讓得出的這組測試錯誤率沒法作到彼此徹底獨立。

而進行有效的假設檢驗的一個重要的前提就是:測試錯誤率均爲泛化錯誤率的獨立採樣。(例如 t 分佈就須要隨機變量X和Y相互獨立。)

因此爲了緩解這個問題,可採用「5×2交叉驗證」法。

5×2交叉驗證法

所謂「5×2交叉驗證」法,就是作5次2折交叉驗證,而在每次2折交叉驗證以前隨機將數據打亂,使得5次交叉驗證中的數據劃分不重複。

對兩個學習器A和B,第 i 次2折交叉驗證將產生兩對測試錯誤率: {\epsilon_{1}^{A}}_{i}{\epsilon_{1}^{B}}_{i}{\epsilon_{2}^{A}}_{i}{\epsilon_{2}^{B}}_{i} ,對它們分別求差,獲得第1折上的差值 \Delta_{i}^{1} 和第2折上的差值 \Delta_{i}^{2}

爲了緩解測試錯誤率的非獨立性,僅對第一次2折求均值 \mu=0.5(\Delta_{1}^{1}+\Delta_{1}^{2}) ,而後對每次實驗結果都求方差。

(這裏筆者以爲書中公式有問題,這裏的方差應該是樣本方差,故應該是每一個樣本值與全體樣本值平均數之差的平方和的平均數,即 \sigma^{2}=\frac{\sum{x-\mu}^{2}}{N} ,書中未求平均數,故筆者認爲方差: \sigma_i^2=\frac{(\Delta_{i}^{1}-\frac{\Delta_{i}^{1}+\Delta_{i}^{2}}{2})^2+(\Delta_{i}^{2}-\frac{\Delta_{i}^{1}+\Delta_{i}^{2}}{2})^2}{2} )。

但通過思考,筆者認爲書中公式沒有問題, \frac{\Delta_{i}^{1}+\Delta_{i}^{2}}{2} 是差值的均值 \bar{x} 而不是指望 \mu 除非正好\bar{x}=\mu,不然咱們必定有\frac{1}{n}\sum_{i=1}^n(x_i-\bar{x})^2 <\frac{1}{n}\sum_{i=1}^n(x_i-\mu)^2 ,而不等式右邊的纔是的對方差的「正確」估計,換言之方差被估計小了,爲了讓方差的估計是無偏的,應將n-1,即2-1=1。也就不用除以什麼了。

也就說正確的公式爲: \sigma_i^2=\frac{(\Delta_{i}^{1}-\frac{\Delta_{i}^{1}+\Delta_{i}^{2}}{2})^2+(\Delta_{i}^{2}-\frac{\Delta_{i}^{1}+\Delta_{i}^{2}}{2})^2}{2-1=1}

 

 

由此均值方差,能夠獲得一個 t 分佈。

 

三、McNemar檢驗

McNemar檢驗適用於二分類問題,用於某些 2 × 2 表格的配對樣本。經過聯列,能夠得到學習器A和B的分類結果的差異。下表即爲兩分類器分類差異列聯表, e 爲樣本數。

e_{00} 是A、B都被分類爲正確的樣本數; e_{01} 是A被分類爲錯誤,B被分類爲正確的樣本數; e_{10} 是A被分類爲正確,B被分類爲錯誤的樣本數; e_{11} 是A、B都被分類爲錯誤的樣本數。

如今若假設,兩學習器性能相同,則理想狀態應有 e_{01}=e_{10}

可是實際操做中 e_{01}e_{10} 在不一樣的測試集上會有一些差異。

可是| e_{01}-e_{10} |爲何符合正態分佈,,,按理說,實際生活中,凡天然狀態下的總體數據分佈幾乎都符合正態分佈,那麼當假設兩學習器性能相同的時候,若是用大量不一樣的測試集進行測試,這個差值應該就可能符合正態分佈。故 \tau_{\chi^2} 符合 \chi^2 分佈。

但上式中的「-1」並不是由於 |e_{01}-e_{10}| 的均值 \mu 爲1,實際上均值 \mu 應近似爲0,這裏的「-1」,是爲了連續性矯正。有關連續性矯正的問題,維基百科給出了比較簡單的解釋,我也就不重複了。

McNemar's test - Wikipedia

四、Friedman檢驗與Nemenyi後續檢驗

當有多個算法須要進行比較的時候,有兩種思路。

一種作法是在每一個數據集上分別列出兩兩比較的結果,交叉驗證 t 檢驗、McNemar檢驗都屬於這種;另外一種則更爲直接,即爲使用基於算法排序的Friedman檢驗。

Friedman 檢驗的問題是k個樣本的位置參數(用\theta_1\theta_2\theta_3 ,…, \theta_k 表示)是否相等,在機器學習領域被用來判斷各類算法的性能是否都相同。

假設檢驗問題:

H_0\theta_1=\theta_2=\theta_3=……=\theta_k ,即k個樣本無顯著差別。

H_1 :不是全部的位置參數都相等(不是全部的算法性能都相同),即k個樣本有顯著差別。

提出待檢驗的假設後,得到的數據排出一個k行n列的表, 列表明不一樣的受試者或匹配的受試小組(各個算法), 行表明各類條件或處理(數據集)。

因爲區組的影響,Friedman檢驗首先在每個區組中計算各個處理的秩,再把每個處理在各區組中的秩相加。

 

其中 R_{ij} 表示在第 j 個區組中 i 處理的秩, 行和爲 R_i=\sum_{j=1}^{b}{R_{ij}},i=1,2,...,k

若是爲 H_0 真,則每一列中秩的分佈應該是隨機的, 即各個秩出如今全部列中的頻數應幾乎相等。

 

在零假設成立的狀況下,各處理的平均秩 \bar{R_i}=R_i/b 有下述性質:

 

接下來計算處理平方和( SSt )。

 

Friedman檢驗統計量爲 Q’

 

Friedman建議用 (k-1)/kQ' 得校訂式 Q

 

當假設「全部算法的性能相同」被拒絕的時候,需採用後續檢驗來進一步區分各算法,經常使用的是Nemenyi後續檢驗,該算法計算出平均序值差異的臨界值域 CD ,若兩個算法的平均序值之差超過臨界值域,則應以相應的置信度拒絕「兩個算法性能相同」這一假設。

5、誤差與方差

介紹了估計泛化性能的評估方法、性能度量和檢驗方法後,還須要知道泛化性能究竟由什麼組成。

「誤差-方差分解 」是解釋學習算法泛化性能的重要工具。

解釋這個概念前,先明確一下各變量名:

測試樣本:x

測試樣本x在數據集中的標記: y_D

測試樣本x的真實標記: y

訓練集: D

從訓練集 D 上學得的模型 f

模型 f 在測試樣本x上的預測輸出 f (x; D )

除了書中介紹的這些以外,還有一個概念,也不知是因爲書中印刷錯誤仍是由於過於省略,致使公式整個存在理解錯誤:

數據分佈:Ɗ

知道了這些變量後,下面介紹幾個概念:

一、 \bar{f} (x)(預測輸出的指望):學習算法的指望預測。

 

【全部可能的訓練數據集】(數據分佈Ɗ)訓練出的【全部模型預測輸出】的指望值。

 

二、 Variance (方差):使用樣本數相同的不一樣訓練集產生的方差。

 

【在分佈Ɗ上】的【不一樣訓練集訓練出的模型】的【預測輸出】與【預測輸出指望值】的比較。

三、 Bias (誤差):指望輸出與真實標記的差異。

 

用【全部可能的訓練數據集】(數據分佈Ɗ)訓練出的【全部模型預測輸出】的指望值與【真實模型的輸出值】比較得出的差別。

四、 \varepsilon^2 (噪聲):數據集標記和真實標記的方差。

 

噪聲數據主要來源是訓練數據的誤標籤的狀況以及輸入數據某一維不許確的狀況。

爲了便與討論,假定噪聲指望爲0,則對算法的指望泛化偏差進行分解可得:

 

故,

 

也就是說,泛化偏差=誤差+方差+噪聲。

回顧一下誤差、方差、噪聲的含義:

 

誤差爲「精」,方差爲「確」。通常來講,誤差和方差是有衝突的,這稱爲「誤差-方差窘境」,以下圖所示。

〖2、習題探討〗

1.數據集包含1000個樣本,其中500個正例,500個反例,將其劃分爲包含70%樣本的訓練集和30%樣本的測試集用於留出法評估,試估算共有多少種劃分方式。

解:這是一個簡單的組合問題,考察的是留出法「分層採樣」的性質。500正例500反例,按「37開」劃分後,訓練集有350正例350反例,測試集有150正例150反例,正例和反例的劃分策略相互獨立。則共有: C_{500}^{350} \times C_{500}^{350}=(C_{500}^{350})^2 種劃分方式。

 

2.數據集包含100個樣本,其中正反例各一半,假定學習算法所產生的模型是將新樣本預測爲訓練樣本數較多的類別(訓練樣本數相同時進行隨機猜想),試給出用10折交叉驗證法和留一法分別對錯誤率進行評估所得的結果。

解:

留一法是交叉驗證法的一種,其含義是:假設有N個樣本,將每個樣本做爲測試樣本,其它N-1個樣本做爲訓練樣本。這樣獲得N個分類器,N個測試結果。用這N個結果的平均值來衡量模型的性能。

如今有100個樣本,50正例50反例,則10折交叉驗證法中,每一折正反比例相同,因此將結果判斷爲正反例的機率也是同樣的,即進行隨機猜想,則每次錯誤率的指望是50%。因爲有100個樣本,則測試應爲10次10折交叉驗證,最終返回的是這10次測試結果的均值,即50%。

而留一法中,若一次留下的一個測試樣本爲反例,則新樣本將都被預測爲正例;反之,若一次留下的一個測試樣本爲正例,則新樣本將都被預測爲反例。

前者,正例:反例=50:49,預測爲正例,測試樣本是反例,錯誤率100%;

後者,正例:反例=49:50,預測爲反例,測試樣本是正例,錯誤率100%。

因爲進行的是100次留一法驗證,取得也是這100次結果的均值,最終結果是100%。

 

3.若學習器A的F1值比學習器B高,試析A的BEP值是否也比B高。

先介紹相關定義:

查準率 P = TP / (TP + FP)

查全率 R = TP / (TP + FN)

BEP:平衡點,Break-Event Point,是「查準率 = 查全率」時P-R曲線上的的取值。

F_1 度量: F_1 = 2 * P * R / (P + R) = 2 * TP / (樣例總數 + TP - TN) 是基於查準率和查全率的調和平均。

 

探討:

由圖可知,BEP只是P-R曲線上的一個查準率和查全率相等時的平衡點,是曲線上的一點。而 F_1 則是基於查全率和查準率的調和平均,理論上這一條曲線上有n個 F_1 值。

可是P-R圖的來源是逐個把樣本按照「最多是正例」的順序排序後,逐一把樣本做爲正例後求出其查準率和查全率繪製的。但實際上在解決具體問題時,會設置正例和反例的分界線,也就是說只能在曲線上取一個值。

那麼這個值是否是BEP?

F_\beta 是某些學習器對查準率和查全率的重視程度不一樣而獲得的加權調和平均。故 F_1 應該是對查準率和查全率重視程度相同的。可是重視程度相同是否等同於查準率=查全率?

答案應該是否認的。

理論上,若是存在兩個BEP值相同的學習器,他們的F1卻值不同,那麼這道題的結論就是否認的。

那麼只要有兩條曲線在BEP值點相交,卻不在BEP值點取劃分界限,就能夠獲得兩個BEP值相同, F_1 值卻不一樣的點了。

不過 F_1 值既然是對BEP的補充和細化,其相對距離不會很遠,即應在BEP附近某處取值。

因此,若學習器A的F1值比學習器B高,A的BEP值未必比B高。

 

4.試述真正例率(TPR)、假正例率(FPR)與查準率(P)、查全率(R)之間的聯繫。

查準率: P=\frac{TP}{TP+FP} 【真正例樣本數】與【預測結果是正例的樣本數】的比值。

查全率: R=\frac{TP}{TP+FN} 【真正例樣本數】與【真實狀況是正例的樣本數】的比值。

真正例率: TPR=\frac{TP}{TP+FN} 【真正例樣本數】與【真實狀況是正例的樣本數】的比值。

假正例率: FPR=\frac{FP}{TN+FP} 【假正例樣本數】與【真實狀況是反例的樣本數】的比值。

依照公式可知,真正例率和查全率相等。

 

5.試證實(2.22)AUC=1−lrank

排序損失的計算公式(2.21)計算的是:對全部正例,得分比其高的反例數之和,並用m+m−進行歸一化。
對於得分和該正例相同的反例,數量須要除以2。
ROC曲線中,每遇到一個正例向上走一步,每遇到一個反例向右走一步。對於全部的正例,其橫座標所表明的步數就是得分比其高的反例數。咱們修改ROC空間的座標,對橫座標乘以m−,對縱座標乘以m+,在這個空間中每一步的刻度爲1。

好比,上圖中藍色的線表示ROC曲線。根據這個曲線,咱們能夠知道正反例順序:(反,正,[正,正,反],反,正,…)。其中,[]括起來的實例分數相同。對第一個正例,對應的區域1,區域1的面積表示排在其前面的反例數。
第二個正例和第三個正例是特殊狀況,它們和一個反例得分是相同的。咱們把這種狀況通常化,假設有p個正例和q個反例的得分相同,那麼有斜線對應的三角形的面積爲q2∗p,這和公式(2.21)中的相應的狀況吻合。
因此有: l_{rank}m^+m^−=m^+m^−−m^+m^−AUC ,,左右兩邊同時除以m+m−,獲得公式(2.22)。

 

6.試述錯誤率與ROC曲線之間的關係

錯誤率: E(f;D)=\frac{FP+FN}{TP+FN+FP+TN}

ROC圖像的橫縱座標分別是真正例率和假正例率:

真正例率: TPR=\frac{TP}{TP+FN}

假正例率: FPR=\frac{FP}{TN+FP}

ROC圖像上的每一個點,對應一個錯誤率。

因爲樣本中,正反例比例肯定,理想模型在(0,1)點上,故距離該點越近的點,錯誤率越低。

 

7.試證實任意一條ROC曲線都有一條代價曲線與之對應,反之亦然。

代價曲線繪製方法:

ROC曲線上取一個點(FPR,TPR);

取相應的(0,FPR)和(1,FNR),連成線段;

取遍ROC曲線上全部點並重復前步驟;

全部線段的下界就是學習器指望整體代價。

實際上就是經過將樣例爲正例的機率p設爲0和1,來做出曲線的全部切線,最後連成曲線。

根據畫圖的步驟,就可知任意一條ROC曲線都有一條代價曲線與之對應,因爲其數值一一對應,故反之亦然。

 

8.Min-max規範化和z-score規範化是兩種經常使用的規範化方法。令x和x′分別表示變量在規範化先後的取值,相應的,令xmin和xmax表示規範化前的最小值和最大值,x′min和x′max分別表示規範化後的最小值和最大值,x¯和σx分別表示規範化前的均值和標準差,則min-max規範化、z-score規範化分別如式(2.43)和(2.44)所示。試析兩者的優缺點。

min-max對數據進行線性變換,保留了原始數據之間的關係;可是當點落在 [x_{min},x_{max}] 外時,沒法進行規範化。
z-score對數據進行變換,使得均值爲0,而且數據分佈變得更緊密;可是對小的 σ_x 比較敏感。

 

9.試述卡方檢驗過程。

略。

 

10.試述在使用 Friedman 檢驗中使用式(2.34)與(2.35)的區別。

探討:

F分佈主要用於方差分析、協方差分析和迴歸分析等,有兩個自由度,本題中的兩個自由度分別是(k-1)和(k-1)(N-1)。

若是說原始Friedman檢驗有哪裏過於保守,恐怕就是沒有考慮多個數據集對其形成的影響吧。

相關文章
相關標籤/搜索