二、機器學習模型評估
2.1 模型評估:基本概念
-
錯誤率(Error Rate)
- 預測錯誤的樣本數a占樣本總數的比例m
-
准確率(Accuracy)
准確率=1-錯誤率准確率=1−錯誤率
-
誤差(Error)
- 學習器的實際預測輸出與樣本的真實輸出之間的差異
-
訓練誤差(Training Error)或經驗誤差(Empirical Error)
- 學習器在訓練集上的誤差
-
泛化誤差(Generalization Error)
- 學習器在新樣本上的誤差
-
解釋與泛化
- 當模型在訓練集上表現很好而在新樣本上誤差很大時,稱為過擬合;反之模型在訓練集上誤差就很大時,稱為 欠擬合。
-
過擬合和欠擬合
2.2 判別方法
判別方法:誤差
引起誤差的原因主要是因為偏差和方差。
- 偏差(Bias)
- 描述的是預測值(估計值)的期望與真實值之間的偏離程度。偏差越大,越偏離真實數據。
- 方差(Variance)
- 描述的是預測值的變化范圍,離散程度,也就是離其期望值的距離。方差越大,數據的分布越分散。
- 偏差和方差對誤差Error的影響可以表示為
- 偏差(bias)造成的誤差 - 准確率和欠擬合
如果模型具有足夠的數據,但因不夠復雜而無法捕捉基本關系,即如果模型不適當,則會出現偏差。這樣一來,模型一直會系統地錯誤表示數據,從而導致預測准確率降低出現欠擬合。 - 方差(variance)造成的誤差 - 精確率和過擬合
方差就是指模型過於貼近訓練數據,以至於沒辦法把它的結果泛化。而泛化正是機器學習要解決的問題,如果一個模型只能對一組特定的數據有效,換了數據就無效了,我們就說這個模型過擬合。
判別方法:學習曲線
2.3 解決方法
- 欠擬合通常容易解決
- 如 增加數據、增大訓練次數、增大學習率 或 使用更復雜的模型 等。
- 過擬合則很難解決
- 常用的方法包括 簡化模型,減少特征,更多的數據,交叉驗證,正則化,Dropout 和 Shuffling 等。
當心陷阱:維度災難(Curse of Dimensionality)
當維數提高時,模型空間的體積提高太快,因而可用數據變得很稀疏。
在高維空間中,所有的數據都很稀疏,從很多角度看都不相似,因而平常使用的數據組織策略變得極其低效。
為了獲得在統計學上正確並且有可靠的結果,用來支撐這一結果所需要的數據量通常隨着維數的提高而呈指數級增長。
如何避免維度災難
實際上並沒有一種固定的方法避免維度災難,解決方法需要結合數據集和所選的模型。訓練數據集越小,則用到的特征應當越少。
另外,對於諸如神經網絡、kNN、決策樹等泛化不好容易過擬合的分類器,維度應當適當的減少。而對於朴素貝葉斯和線性分類器等不太復雜的分類器,特征可以適當的增大。
2.4 數據集拆分
為了得到泛化誤差小的模型,並避免過擬合,在構建機器模型時,通常將數據集拆分為相互獨立的訓練數據集、驗證數據集和測試數據集
- 訓練數據集(Train Dataset)用來構建機器學習模型
- 驗證數據集(Validation Dataset)輔助構建模型,用於在構建過程中評估模型,為模型提供無偏估計,進而調整模型超參數
- 測試數據集(Test Dataset)用來評估訓練好的最終模型的性能
為了划分這幾種數據集,可以選擇采用留出法、K-折交叉驗證法或者自助法等多種方法。這些方法都對數據集有一些基本的假設,包括:
- 數據集是隨機抽取且獨立同分布的
- 分布是平穩的,不會隨時間發生變化
- 始終從同一個分布中抽取樣本
陷阱:請勿對測試數據集進行訓練。
自助法的性能評估變化小,在數據集小、難以有效划分數據集時很有用。另外,自助法也可以從初始數據中產生多個不同的訓練集,對集成學習等方法有好處。
然而,自助法產生的數據集改變了初始數據的分布,會引入估計偏差。因而,數據量足夠時,建議使用留出法和交叉驗證法。
數據集拆分:留出法
留出法(hold-out)直接將數據集划分為互斥的集合,如通常選擇 80% 數據作為訓練集,20% 作為測試集。
需要注意的是保持划分后集合數據分布的一致性,避免划分過程中引入額外的偏差而對最終結果產生影響。
通常來說,單次使用留出法得到的結果往往不夠穩定可靠,一般采用若干次隨機划分、重復進行實驗評估后取平均值作為留出法的評估結果。
數據集拆分:K-折交叉檢驗法
機器學習中,算法模型性能比較是比較復雜的。
- 我們希望比較的是泛化性能,而實際中只能得到測試集上的性能,兩者的結果未必相同
- 測試集上的性能跟測試集本身的選擇有很大關系
- 很多機器學習算法本身有一定的隨機性,即便用相同參數運行在同一個測試集上,多次的運行的結果也有可能不同
數據集拆分:K-折交叉檢驗法
初始采樣分割成K個子樣本,一個單獨的子樣本被保留作為驗證模型的數據,其他K-1個樣本用來訓練。交叉驗證重復K次,每個子樣本驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測。這個方法的優勢在於,同時重復運用隨機產生的子樣本進行訓練和驗證,每次的結果驗證一次。方差Variance隨着k的增大而減小。
K常常取10,所以又稱為十折交叉檢驗。
參數調節
- 參數調節
- 簡稱調參(parameter tuning),在進行模型評估與選擇時,除了要對適用學習算法進行選擇,還需對算法參數進行設定的過程稱參數調節;
- 常用方法
- 對每個參數選定一個范圍和變化步長,例如在[0,0.2][0,0.2]范圍內以0.05為步長,則實際要評估的候選參數值有5個,最終是從這5個候選值中產生選定值。
網格搜索
網格搜索法是指定參數值的一種窮舉搜索方法,通過將估計函數的參數通過交叉驗證的方法進行優化來得到最優的學習算法。
即將各個參數可能的取值進行排列組合,列出所有可能的組合結果生成參數網格。
然后將各組合用於訓練,並使用交叉驗證對表現進行評估。
在擬合函數嘗試了所有的參數組合后,返回一個合適的分類器,自動調整至最佳參數組合,可以獲得參數值
對SVM的C參數和gamma的網格搜索可視化結果如上圖所示,可知{C=1.0,gamma = 0.1}時效果最好。
2.5 模型評價
- 分類模型
- 回歸模型
- 聚類模型
模型評價:分類模型評價
- 分類模型是通過訓練數據建立預測模型,並利用模型將需要預測的數據樣本划分到已知的幾個類別中的過程。
- 機器學習中常見分類算法:邏輯回歸、決策樹、朴素貝葉斯等
分類模型評價:混淆矩陣
- 標簽
- 在分類問題中,每一個樣本都存在兩種角度的標簽: 一個是樣本真實的標簽,一個是模型預測的標簽。
- 混淆矩陣
- 根據每一個樣本的兩種角度的標簽,可以得到一個混淆矩陣(Confusion Matrix)。混淆矩陣中的每一列代表預測類別 ,每一列的總數表示預測為該類別的樣本的數目。每一行代表了樣本的真實歸屬類別 ,每一行的數據總數表示該類別的樣本的數目。
分類模型的評價指標主要基於混淆矩陣。對於二分類問題,每一個樣本都可以划分到以下四種類型中:
- 真正(True Positive , TP):樣本真實類別是正向的,模型預測的類別也是正向的
- 真負(True Negative , TN):樣本真實類別是負向的,模型預測的類別也是負向的
- 假正(False Positive , FP):樣本真實類別是負向的,模型預測的類別是正向的(取偽)
- 假負(False Negative , FN):樣本真實類別是正向的,模型預測的類別是負向的(去真)
分類模型評價:多分類混淆矩陣
分類模型評價:評價指標
- 准確率(Accuracy)
- 精確率(Precision)
- 召回率(Recall)
- F1值(F1 score)
- ROC和AUC
- 分類模型評價指標:准確率
在分類問題中最常見的指標是准確率(accuracy),它表示模型預測正確的樣本比例,即將正的判定為正,負的判定為負。
准確率的定義如下:
在不均衡數據中,准確率無法很好地度量模型的好壞。
例如在文本情感分類數據集中,正面的樣本占比為80%,負面的內容占比只有20%。
如果一個分類模型將所有的樣本都預測為正面,這個模型顯然是一個無用的模型,但是它的准確率卻可以達到80%。
對於不均衡數據,精確率和召回率是比准確率更好的性能評價指標。
總樣本量:100
- 分類模型評價指標:精確率
精確率(precision)又稱查准率,是指正確預測的正樣本占所有預測為正樣本的比例。
- 分類模型評價指標:召回率
召回率(recall)又稱查全率、靈敏度和命中率,是指樣本中被正確預測的樣本比例。
- 分類模型評價指標:$$F_{\beta}$$值
單獨考慮精確率和召回率是片面的,而F值則是一個綜合考慮精確率和召回率的指標。
其中β為正數,其作用是調整精確率和召回率的權重。β越大,召回率的權重更大;β越小,則精確率的權重更大。當1β=1時,精確率和召回率的權重一樣,此時稱為F_1F1值,它是精確率和召回率的調和平均數。
- 分類模型評價指標:假正率
假正率(False Positive Rate)為被預測為正的負樣本結果數除以負樣本實際數的比值。
假正率的定義為
- 分類模型評價指標:ROC曲線
ROC曲線通過召回率(TPR)和假正率(FPR)兩個指標進行繪制圖形,是一個畫在ROC空間的曲線,橫坐標為FPR, 縱坐標為TPR。
- (TPR=0,FPR=0)
- 把每個實例都預測為負類的模型
- (TPR=1,FPR=1)
- 把每個實例都預測為正類的模型
- (TPR=1,FPR=0)
- 理想模型
一個好的分類模型應該盡可能靠近圖形的左上角,而一個隨機猜測模型應位於連接點(TPR=0,FPR=0)和(TPR=1,FPR=1)的主對角線上。
- 分類模型評價指標:AUC
AUC就是處於ROC曲線下方的那部分面積的大小。通常AUC介於0.5到1.0之間,較大的AUC代表了較好的模型性能。
- 如果模型是完美的,那么它的 AUC=1AUC=1
- 如果模型是個簡單的隨機猜測模型,那么它的 AUG=0.5AUG=0.5
- 如果一個模型好於另一個,則它的曲線下方面積相對較大。
- 一般來說,AUC大於0.75可以認為是一個比較理想的模型。
分類模型評價指標:應用場景
- 如果需要你使用機器學習進行地震預報,您會選擇哪個指標作為算法模型的評價指標?
- 如果需要你使用機器學習認定犯罪嫌疑人,您會選擇哪個指標作為算法模型的評價指標?
回歸模型評價指標
回歸模型的預測值一般都是連續的。評價模型的指標沒有統一的標准。下面介紹三個常用的方法:
- 平均絕對誤差
- 均方誤差
- 決定系數R^2R2
回歸模型評價指標:平均絕對誤差
平均絕對誤差(Mean Absolute Error,MAE)是所有單個觀測值與算術平均值的偏差的絕對值的平均。
回歸模型評價指標:均方誤差
均方誤差(Mean Squared Error,MSE)是衡量"平均誤差"的一種較方便的方法,可以評價數據的變化程度。
均方根誤差(Root Mean Square Error,RMSE)是均方誤差的算術平方根,有時也用RMSE對回歸模型進行評價。
回歸模型評價指標:決定系數
在統計學中,通常使用決定系數對回歸模型進行評價。假設樣本真實值的平均值為:
- 殘差平方和為
- 總平方和為
R^2R2的計算公式為
- 通常R^2R2取值范圍為[0,1][0,1]
- R^2R2越趨近於1,說明回歸效果越好。
- R^2R2越趨近於0,說明回歸效果越差。
在一些回歸效果非常差的情況下,殘差平方和可能大於總平方和,此時可能小於0。
決定系數計算例子(重慶2017鏈家房價預測)
聚類模型評價指標
聚類模型的性能指標主要分為內部指標(Internal Index)和外部指標(External Index)兩類。
- 內部指標適用於無標注數據,根據聚類結果中簇內相似度和簇間分離度進行聚類質量評估;
- 外部指標適用於有標注數據,將聚類結果與已知類標簽進行比較。
- 內部指標
- DB 指數
- 輪廓系數
- 外部指標
- Rand指數
- 調整Rand指數
聚類模型評價:DB指數
聚類模型的目標是使得簇內數據盡量相似,不同簇之間的數據盡量不相似。
DB指數正是基於這個思想所構建的指標,它表示簇內距離與簇內距離與簇間距離之比,DB的值越小說明聚類效果越好。
其中,K是聚類數目,W_i表示類C_i中的所有樣本到其聚類中心的平均距離,W_j表示類C_i中的所有樣本到類C_j中心的平均距離,Cij表示類C_i和C_j中心之間的距離。
DB越小表示類與類之間的相似度越低,從而對應越佳的聚類結果。
聚類模型評價:輪廓系數
輪廓系數結合了內聚度和**分離度兩種因素,可以用來在相同原始數據的基礎上用來評價不同算法、或者算法不同運行方式對聚類結果所產生的影響。對於樣本ii的輪廓系數其計算公式:
- a(i)=average(樣本i到所有它屬於的簇中其它點的距離)a(i)=average(樣本i到所有它屬於的簇中其它點的距離),表示ii向量到同一簇內其他點不相似程度的平均值;
- b(i)=min(樣本i到所有非本身所在簇的點的平均距離)b(i)=min(樣本i到所有非本身所在簇的點的平均距離),表示樣本ii到其他簇的平均不相似程度的最小值。
- s(i)s(i)接近1,則說明樣本ii聚類合理
- s(i)s(i)接近-1,則說明樣本ii更應該分類到其他類
- s(i)s(i)接近0,則說明樣本ii在兩個類的邊界上
聚類模型評價:Rand指數
Rand指數(Rand Index,RI)類似於分類模型中的准確度指標,其具體定義如下:
- 設數據集XX的一個聚類結構為
C ={C_1,C_2,\dots, C_m}C=C1,C2,…,C**m
- 數據集已知的划分為
P ={ P_1,P_2,\dots,P_s }P=P1,P2,…,P**s ,
- 可通過比較CC和PP的混淆矩陣來評價聚類的質量。
純度(Purity)方法是極為簡單的一種聚類評價方法,只需計算正確聚類的文檔數占總文檔數的比例
互信息(Mutual Information)是純度的另一種表述,作用與純度(Purity)一致。建立在熵的概念基礎上,又稱信息增益。
查看sklearn的幫助文檔
- 我們可以通過help()函數來查看sklearn的幫助文檔
- 導入sklearn庫:
import sklearn
- 查看sklearn幫助:
help(sklearn)
- 導入sklearn庫: