模型評估方法


1. 前言

模型的評估方法主要是針對有監督學習的。

2. 數據集划分方法

我們在拿到數據的時候,數據的表現形式會呈現多種多樣性,我們首先需要做的是把數據格式化,把數據處理成計算機可以認識的結構。處理數據的過程叫做特征工程,特征工程是一個在機器學習的過程中,非常重要的一個過程,特征工程做的好壞,會直接影響到最后的模型准確度的一個上限。特征工程我后面會詳細介紹,今天介紹的是在特征工程處理完后的,數據集的划分和性能的度量方式。

2.1 留出法

留出法就是把數據集切分成訓練集和測試集,留出法最重要的一點是要保證訓練集和測試集的數據分布要相同,避免因為數據划分不均勻而引入的額外的偏差。從樣本采樣的角度來看待數據集的划分過程,則保留類別比例的采樣方式叫做“分層采樣”。為了讓留出法能夠有比較好的效果一般會重復多次進行平均。

2.2 交叉驗證

交叉驗證一般是在訓練集的基礎上進行的。因為測試集是最后用來評價模型的好壞的,不能讓模型提前看到測試集。

交叉驗證有一個超參數K。K代表的意思是從訓練集D中,分層采樣的方式得到K個互斥的\(D_i\)(K折交叉驗證)。然后通過K-1個子數據集的並集進行訓練,用剩下的一個子數據集進行驗證。就可以得到K個模型,最后返回K個模型的平均值。
過程如下圖所示:
image

交叉驗證中有一個特殊的方法交“留一法”,它的意思是如果訓練集中有m個數據,那我就進行“m折交叉驗證”,每次用一個數據進行驗證,這樣最大的好處是避免了隨機樣本划分來帶的影響。留一法的結果往往認為是准確的。但是留一法也是計算開銷最大的一種方式,一般只會在學術論文中為了追求最好的效果才可能去嘗試的辦法。

2.3 自助法

我們希望評估的是用整個訓練集D訓練出來的模型,但是無論是留一法還是交叉驗證法,都會切分一部分數據為測試數據,這必然會引入一定的誤差。

自助法直接以自助采樣(bootstrap sample)為基礎。自助采樣是每次在數據集D中隨機采樣產生子數據集D1,然后放回,這個過程重復進行m次采樣,獲得m個子數據集D1,再對m個子數據集進行訓練,獲得一個平均的模型。

自助法會有一部分數據一直沒有被訓練到。這部分數據稱為“包外估計”簡稱OOB,這部分數據量約為36.8%。自助法現在一般運用在隨機森林(Random Forest)里面比較多。

3. 性能度量

性能度量是用來衡量模型泛化能力的評價標准。

性能度量可以用來在對同一個問題,評價不同模型的泛化能力的好壞,也可以針對同一個模型的泛化能力是否有所提升。

假定在預測任務中,給定的樣本集\(D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\}\),其中\(y_i\)\(x_i\)的標記,\(f(x)\)是模型對x的預測值。

3.1 回歸任務

回歸任務中,常用的是均方誤差

\[E(f,D)=\frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2 \]

更一般的情況,對於數據分布D和概率密度P,均方誤差可以改寫為

\[E(f,D)=\int_{x\in{D}}(f(x)-y)^2*p(x)dx \]

3.2 分類任務

3.2.1 准確度

在分類任務中,如果類別的個數是平衡,那么最普遍的一個度量性能的方法是准確度,准確度代表的意思是,預測類別和真實類別進行比較,統計分對的類別的比例。

\[Acc(f,D)=\frac{1}{m}\sum_{i=1}^mI(f(x_i)= y_i)=1-E(f,D) \]

更一般的情況,對於數據分布D和概率密度P,准確度可以改寫為

\[Acc(f,D)=\int_{x\in{D}}I(f(x)= y)*p(x)dx=1-E(f,D) \]

3.2.2 精准率、召回率、F1

在分類任務中,有一類比較常見的問題,就是數據不平衡的問題。比如癌症預測,針對癌症預測這個問題,本身癌症的發病數相對身體正常的數要低很多。

假設我們的數據是10000個樣本,里面有9990個正常值,10個是癌症患者(0代表正常,1代表癌症患者)。如果我們什么都不做的情況下,預測所有人都是0,那正確率是99.9%,感覺是不是准確度已經很高啦,模型已經很不錯了?但是這個模型真的有用嗎,其實真正的情況是,我們一個癌症患者都沒預測出來。所以在這種情況下,用准確度來度量模型的好壞是不對的。我們需要用另外的一種性能度量方式,精准率,召回率和F1值。精准率又叫做查准率,召回率又叫做查全率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM