關于模型的評估
文章目錄
- 關于模型的評估
- 經驗誤差
- 錯誤率
- 經驗誤差
- 過擬合和欠擬合
- 模型評估方法
- 留出法
- 交叉驗證法
- 交叉驗證的特例——留一法
- 自助法
- 性能度量
- 精度和錯誤率
- 查全率和查準率
- 受試者作業特征——ROC曲線
- 代價敏感錯誤率和代價曲線
- 期望總體代價和代價曲線
經驗誤差
錯誤率
m個樣本,a個分類錯誤,錯誤率: E = a / m E=a/m E=a/m;
經驗誤差
學習器在訓練集上的誤差叫做經驗誤差或者訓練誤差;
新樣本上的誤差叫做泛化誤差;
并不是正確率越高,學習器就越好;
過擬合和欠擬合
過擬合:學習器將訓練樣本學習的太好了,導致很多訓練樣本自身的特點當作了所有潛在樣本的一般性質(訓練誤差小泛化誤差大);
欠擬合:訓練樣本的一般性質都沒有學號,訓練誤差大;
下圖直觀說明(圖源:機器學習西瓜書):

欠擬合一般可以避免,但是過擬合基本是無法避免的,只能說是減少它帶來的影響;
模型評估方法
測驗集盡量要跟訓練集互斥;
留出法
將資料集劃分為兩個互斥集合,一個作為訓練集,一個作為測驗集;通常將2/3~4/5的樣本用于訓練,剩余用作測驗;
要注意:需要通過分層采樣的方法保證資料的分布一致性;
為了保持訓練正確率和普適性,我們可以進行n次劃分評估,最后求出n次結果的均值;
交叉驗證法
將資料集劃分為很多(n)個大小相似的互斥子集,然后進行n次回圈(如下圖所示):
- 每次選取第i個集合作為測驗集,剩余子集的并集作為訓練集( i ∈ [ 1 , n ] i \in [1,n] i∈[1,n]);
- 回圈k次,每次選取不同的集合作為測驗集,最后回傳k次測驗的均值;
- 評估結果的穩定性取決于k的數量,一般k取值為10;

交叉驗證的特例——留一法
-
資料集中有n個樣本,進行k次劃分,當k=n時,n個樣本的劃分方式是唯一的,每個劃分出來的子集只有一個元素;
-
之所以叫留一法,因為這種方法是在每次測驗中只留一個樣本作為測驗集;
-
由于留一法的訓練集跟初始資料集只差一個樣本,因此留一法的評估結果往往比較準確;
-
缺點是計算開銷有可能很大,因為資料量龐大起來,劃分的次數也會跟著變大;
自助法
- 給定一個包含n個樣本的資料集D,和一個采樣集T,T初始為空;
- 每次從D中選擇一個樣本,復制進T中,也許會出現某一個已經被采集的樣本再次被采集;
- 重復第二步n次,得到最終的采樣集T,將T作為訓練集,D\T作為測驗集;
每個樣本從始至終不被采集的概率為 lim ? m → ∞ ( 1 ? 1 m ) m = 1 e \lim_{m \to \infty}{(1- \frac{1}{m})^m} = \frac{1}{e} limm→∞?(1?m1?)m=e1?;
也就是說,每個樣本都有大約 1 3 \frac{1}{3} 31?的概率不被采集到并作為測驗集;從概率宏觀的角度來說,也就是我們把約 1 3 \frac{1}{3} 31?的樣本當作了測驗集;
自助法適用于資料集規模較小或者在劃分訓練\測驗集的時候比較有用,也可以從初始資料集中產生多個不同的資料集;但是這種方法會改變初始資料集的分布(因為每次抽取具有隨機性,無法確保分層取樣等),因此會有估計誤差;所以在資料量足夠的時候用前面兩種方法會更好,
性能度量
精度和錯誤率
這兩個指標既適用于二分類任務,也適用于多分類任務,
假設給定一個樣例集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) D={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)} D=(x1?,y1?),(x2?,y2?),...,(xn?,yn?),其中 y i y_i yi?為 x i x_i xi?的真實分類結果, f ( x i ) f(x_i) f(xi?)為學習器預測的結果;
錯誤率指的就是分類錯誤的樣本數占總樣本數的比例,定義如下:
E ( f ; D ) = 1 m ∑ i = 1 m ∥ ( f ( x i ) ≠ y i ) E(f;D)= \frac{1}{m} \sum_{i=1}^{m} \parallel(f(x_i) \neq y_i) E(f;D)=m1?i=1∑m?∥(f(xi?)?=yi?)在回歸方法中,錯誤率常用均方誤差來表示:
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) ? y i ) 2 E(f;D)= \frac{1}{m} \sum_{i=1}^{m} (f(x_i) - y_i)^2 E(f;D)=m1?i=1∑m?(f(xi?)?yi?)2精確度的定義即為: 1 ? E ( f ; D ) 1-E(f;D) 1?E(f;D);
查全率和查準率
錯誤率并不能滿足所有的任務需求,因此我們引入查全率和查準率兩個概念;
例如對搜索引擎好壞的判定,假設用戶某一個查詢的正確資訊(我們可以理解為可以滿足用戶查詢需求的資訊集合)的總集合為D,該搜索引擎為我們回傳的資訊的集合為S,我們需要關心的主要有兩個問題:
- S中有多少資訊在D中?
- D中有多少資訊在S中?
第一個問題,就是我們需要判定搜索引擎回傳的正確資訊所占的回傳總資訊數(|S|)的比例,這就是查準率;
如果回傳的結果很少,那光有上面這一個指標是不行的,因此我們還要考慮第二個問題,即這個搜索引擎總共能回傳多少個正確的資訊,這就是查全率;
通過上面的例子,我們可以理解到,這兩個指標,一般用于二分類問題中,接下來再看一個例子:
| 真實情況 | 檢索出的結果 | 被搜索引擎拋棄的結果 |
|---|---|---|
| 正確資訊 | TP(真正例) | FN(假反例) |
| 錯誤資訊 | FP(假正例) | TN(真反例) |
一個搜索引擎檢索出的結果可能有真正正確的(TP),實際上不正確的(FP),那么根據查準率的定義,查準率P的計算公式為:
P
=
T
P
T
P
+
F
P
P=\frac{TP}{TP+FP}
P=TP+FPTP?
真正正確的資訊中,有被搜索引擎檢索出來的(TP),也有被拋棄的(FN),因此查全率的公式為:
R
=
T
P
T
P
+
F
N
R=\frac{TP}{TP+FN}
R=TP+FNTP?
查全率和查準率是兩個矛盾的指標,因為如果為了查全率而把查詢數量加大,那么查準率會下降,因此,我們引入PR曲線來直觀表述這兩個指標,進而對學習器性能進行一個描述(圖源西瓜書);
A曲線和B曲線完全把C曲線“包住”了,因此我們可以判定A和B學習器要優于C;但是A和B之間,有一個交叉點,在查全率高的時候B要強一些,反之A強一些,很難斷言誰更強,
因此我們引入平衡點的概念:當P=R的時候,誰的PR值更高誰就相對強一些:A的平衡點PR值更高,因此可以認為A相對于B要好一些,
但是這個評價還是不夠客觀,因為我們已經默認查全率和查準率的重要性是一樣的,實際應用中,根據不同需求,查全率和查準率的重要性往往不一樣,比如淘寶推薦中,查準率會更加重要,因此我們需要設定一個加權評判標準:
F
β
=
(
1
+
β
2
)
×
P
×
R
β
2
×
P
+
R
F_{\beta}=\frac{(1+\beta^2)×P×R}{\beta^2×P+R}
Fβ?=β2×P+R(1+β2)×P×R?
當
β
\beta
β小于1的時候,對查準率有更大的影響;反之對查全率有比較大的影響;
當
β
\beta
β等于1的時候,這個公式等價為標準
F
1
F1
F1度量方法:
F
1
=
2
×
P
×
R
P
+
R
=
2
×
T
P
N
+
T
P
?
T
N
F_1=\frac{2×P×R}{P+R}=\frac{2×TP}{N+TP-TN}
F1?=P+R2×P×R?=N+TP?TN2×TP?
其中
N
N
N為樣例總數;
受試者作業特征——ROC曲線
這是查全率和查準率的一個延申,思路就是用于個分類閾值來進行二分類,主要用于神經網路的計算結果進行分類;
神經網路一般預測值都在0-1之間,設定一個在0-1之間的閾值a,大于a則判定為正類,反之為反類;
拿查重率和查準率來說,如果我們希望查準率更加重要,,參照之前講過的PR曲線,那么我們可以把這個閾值設定的更加小一些;同理,如果我們希望查全率更加重要,那么我們就把閾值設定的更大;
ROC曲線,就是用來判斷這種“學習器的期望泛化性能的好壞”的一個工具,概念理解起來有點困難,先看下面的步驟就可以懂了;
首先把上面的表格搬下來:
真實情況 檢索出的結果 被搜索引擎拋棄的結果 正確資訊 TP(真正例) FN(假反例) 錯誤資訊 FP(假正例) TN(真反例) 定義兩個概念:
- 命中率: T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP?;
- 虛驚率: F P R = F P T N + F P FPR=\frac{FP}{TN+FP} FPR=TN+FPFP?(找到的反例中占所有反例的比例);
針對訓練結果,我們按照預測值排序;
接下來,以FPR為橫坐標,TPR為縱坐標繪制一個折線圖,類似下圖:
![]()
繪圖程序大致如下:
- 給定m個正例和n個反例,按斬訓器學習的結果排序,得到序列 s 1 , s 2 , . . . , s m + n {s_1,s_2,...,s_{m+n}} s1?,s2?,...,sm+n?;
- 先把分類閾值設為最大,即所有的樣例都設為反例,這個時候TP=0,因此命中率和虛驚率都是0,再坐標原點處畫一個點;
- 此后將閾值設定為每個樣例的預測值,計算各自的命中率和虛驚率,得到對應的坐標點 ( x i , y i ) (x_i,y_i) (xi?,yi?),在圖上畫出;
- 最后點連成線,如果曲線包絡的面積越大,說明這個學習器分類分的越好,質量就越高;
所以,從上面的程序我們可以看出,這其實是一個查全率和查準率的一個延申應用,為了提高查全率,我們肯定需要增加樣本數量,那么如果我的學習器在提升樣本數量的同時(虛驚率也會因此而提升),我的命中率如果越來越高,說明我這個學習器就越好,
如果要利用ROC曲線來定量的表示兩個學習器的性能,有如下兩種方法:
-
尋找最優零界點:尋找 m a x ( T P R ? F P R ) max(TPR-FPR) max(TPR?FPR)所對應的閾值,這個點越在圖的左上方就說明ROC曲線越優;
-
面積法(AUC):比較兩個曲線和x軸、圖的右半邊豎線圍成的面積大小,可利用如下公式計算:
A U C = 1 2 ∑ i = 1 m ? 1 ( x i + 1 ? x i ) ? ( y i + y i + 1 ) AUC=\frac{1}{2} \sum_{i=1}^{m-1}(x_{i+1}-x_i)*(y_i+y_{i+1}) AUC=21?i=1∑m?1?(xi+1??xi?)?(yi?+yi+1?)
AUC的值越大,就說明學習器越優;
代價敏感錯誤率和代價曲線
以二分類問題為例,分類錯誤主要有兩種情況:
- 把一部分假的資訊當作真資訊回傳(假正例);
- 把一部分真的資訊當作家的資訊舍棄(假反例);
在實際應用中,我們對于兩種錯誤的付出的代價是完全不一樣的,比如一個門禁系統,把可通行用戶攔在門外和把不可通行用戶放進去造成的潛在后果是不一樣的,而前面的演算法中,我們都是假設了均等錯誤代價,把錯誤率直接計算成錯誤次數,沒有考慮不同錯誤造成的后果,因此,我們需要針對兩種錯誤類別,再做一次加權,
假設一個樣例集合D中,正例子集為T,反例子集為F;假正例導致的代價為 c o s t 10 cost_{10} cost10?,假反例導致的代價為 c o s t 01 cost_{01} cost01?;
對錯誤率公式進行加權得到代價敏感錯誤率:
E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ T ∥ ( f ( x i ) ≠ y i + ∑ x i ∈ F ∥ ( f ( x i ) ≠ y i ) E(f;D;cost)=\frac{1}{m}(\sum_{x_i \in T}\parallel(f(x_i) \neq y_i+\sum_{x_i \in F}\parallel(f(x_i) \neq y_i) E(f;D;cost)=m1?(xi?∈T∑?∥(f(xi?)?=yi?+xi?∈F∑?∥(f(xi?)?=yi?)
當公式中i和j取值不限于0和1的時候,該公式可以改寫為多分類問題的代價敏感錯誤率公式;
同樣的,ROC曲線也沒有考慮代價的問題,而代價曲線就考慮了,程序如下:
首先引入第一概念叫做加權正例概率,應該還是比較好理解的:
P c o s t = p × c o s t 01 p × c o s t 01 + ( 1 ? p ) × c o s t 10 P_{cost}=\frac{p×cost_{01}}{p×cost_{01}+(1-p)×cost_{10}} Pcost?=p×cost01?+(1?p)×cost10?p×cost01??
其中p表示查準率,即樣例為正例的概率;
第二個概念叫做歸一化代價,先上公式:
c o s t t o r m = ( 1 ? T P R ) × p × c o s t 01 + F P R × ( 1 ? p ) × c o s t 10 p × c o s t 01 + ( 1 ? p ) × c o s t 10 cost_{torm}=\frac{(1-TPR)×p×cost_{01}+FPR×(1-p)×cost_{10}}{p×cost_{01}+(1-p)×cost_{10}} costtorm?=p×cost01?+(1?p)×cost10?(1?TPR)×p×cost01?+FPR×(1?p)×cost10??
公式中的TPR和FPR就是ROC中的命中率和虛驚率,那么 ( 1 ? T P R ) (1-TPR) (1?TPR)就是沒有被選中的真資訊的比率,也就是假反例占總正例的比率;整個計算式,就是對 ( 1 ? T P R ) (1-TPR) (1?TPR)和 F P R FPR FPR兩者進行了一個加權運算,獲得的結果我們可以理解為兩類錯誤的平均加權代價,
把加權正例概率作為橫坐標,歸一化代價作為縱坐標,即可得出代價曲線;
期望總體代價和代價曲線
將ROC中每個點的兩個量 ( 1 ? T P R ) (1-TPR) (1?TPR)和 F P R FPR FPR計算出來,然后在代價平面上繪制一條從 ( 0 , F P R ) (0,FPR) (0,FPR)到 ( 1 , 1 ? T P R ) (1,1-TPR) (1,1?TPR)的線段,如此遍歷所有的ROC點,可以得到一幅類似下圖的影像(圖源西瓜書):
陰影部分即為期望總體代價,圍成這一部分的折線即為代價曲線,跟上面一小節一對比,我們可以發現,當橫坐標為0的時候(即p=0), c o s t t o r m cost_{torm} costtorm?可以視為 F P R FPR FPR,而當橫坐標為1的時候(p=1), c o s t t o r m cost_{torm} costtorm?可以視為 1 ? T P R 1-TPR 1?TPR,即圖中的 F N R FNR FNR,
在面對考慮代價的學習模型的時候可以參考使用這兩種方法,這兩種方法其實從本質上看是同一種思路的不同執行方法而已,選擇哪種視具體情況而定,
下一節:機器學習筆記2——比較檢驗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/416154.html
標籤:AI
下一篇:基于AI深度學習的缺陷檢測系統
