機器學習之模型評估

2022-04-22 10:28:44 字數 4671 閱讀 2619

準確率是指分類正確的樣本佔總樣個數的比例:$$accuracy = \frac}}$$

\(n_\)為被正確分類的樣本個數,\(n_\)為總樣本的個數

準確率的侷限性:準確率是分類問題中最簡單也是最直觀的評價指標,但存在明顯的缺陷,當不同總類的樣本比例非常不均衡時,佔比大的類別往往成為影響準確率的最主要因素。比如:當負樣本佔99%,分類器把所有樣本都**為負樣本也可以得到99%的準確率,換句話說總體準確率高,並不代表類別比例小的準確率高

精確率是指正確分類的正樣本個數佔分類器判定為正樣本的樣本個數的比例

召回率是指正確分類的正樣本個數佔真正的正樣本數的比例

precison值和recall值是既矛盾又統一的兩個指標,為了提高precison值,分類器需要盡量在『更有把握』時才把樣本**為正樣本,但此時往往會因為過於保守而漏掉很多『沒有把握』的正樣本,導致recall值降低

在排序問題中,通常沒有乙個確定的閾值把得到的結果直接判定為正樣本或負樣本,而是採用topn返回結果的precision值和recall值來衡量排序模型的效能,即認為模型返回的topn的結果就是模型判定的正樣本,然後計算n個位置上的precision和前n個位置上的recall

f1分數是精度和召回率的諧波平均值,正常的平均值平等對待所有的值,而諧波平均值回給予較低的值更高的權重,因此,只有當召回率和精度都很高時,分類器才能得到較高的f1分數

\[f_1 = \frac+\frac}

\]f1分數對那些具有相近的精度和召回率的分類器更為有利。但這並不一定能符合你的期望,在某些情況下,你更關心的是精度,而另一些情況下,你可能真正關心的是召回率。精確率與召回率的權衡將是很值得思考的問題。

均方誤差:$$mse =\frac\sum_^n(y_ - y_i)^2$$

根均方誤差:$$rmes = \sqrt$$

均方誤差和根均方誤差都會受到異常值的影響,而影響最終的模型評估

平均絕對百分比誤差:$$mape = \sum_^n|\frac-y_i)}|*\frac$$

平均絕對百分比誤差提高了異常值的魯棒性,相當於把每個點的誤差進行了歸一化處理,降低了個別離群帶來的絕對誤差的影響

二值分類器是機器學習領域中最常見也是應用最廣泛的分類器。評價二值分類器的指標很多,比如precision,recall,f1 score,p-r曲線等,但發現這些指標或多或少只能反映模型在某一方面的效能,相比而言,roc曲線則有很多優點,經常作為評估二值分類器最重要的指標之一

roc曲線是receiver operating characteristic curve的簡稱,中文名為'受試者工作特徵曲線'

roc曲線的橫座標為假陽性率(fpr),縱座標為真陽性率(tpr),fpr和tpr的計算方法分別為:$$fpr = \frac$$ $$tpr = \frac$$

p是真實的正樣本數量,n是真實的負樣本數量,tp是p個正樣本中被分類器**為正樣本的個數,fp為n個負樣本中被**為正樣本的個數

建立資料集

import pandas as pd

column_name = ['真實標籤','模型輸出概率']

datasets = [['p',0.9],['p',0.8],['n',0.7],['p',0.6],

['p',0.55],['p',0.54],['n',0.53],['n',0.52],

['p',0.51],['n',0.505],['p',0.4],['p',0.39],

['p',0.38],['n',0.37],['n',0.36],['n',0.35],

['p',0.34],['n',0.33],['p',0.30],['n',0.1]]

data = pd.dataframe(datasets,index = [i for i in range(1,21,1)],columns=column_name)

print(data)

真實標籤  模型輸出概率

1 p 0.900

2 p 0.800

3 n 0.700

4 p 0.600

5 p 0.550

6 p 0.540

7 n 0.530

8 n 0.520

9 p 0.510

10 n 0.505

11 p 0.400

12 p 0.390

13 p 0.380

14 n 0.370

15 n 0.360

16 n 0.350

17 p 0.340

18 n 0.330

19 p 0.300

20 n 0.100

繪製roc曲線

# 計算各種概率情況下對應的(假陽率,真陽率)

auc指roc曲線下的面積大小,該值能夠量化地反映基於roc曲線衡量出的模型效能,auc越大說明分類器越可能把真正的正樣本排在前面,分類效能越好

roc曲線相比p-r曲線,當正負樣本的分布發生變化時,roc曲線的形狀能夠儲存基本不變,而p-r曲線的形狀一般會發生激烈的變化,這個特點讓roc曲線能夠盡量降低不同測試集帶來的干擾,更加客觀地衡量模型本身的效能

holdout檢驗是最簡單也是最直接的驗證方法,它將原始的樣本隨機劃分為訓練集和驗證集兩部分。sklearn.model_selction.train_test_split函式就是使用該方法。比方說,將樣本按照70%-30%的比例分成兩部分,70%的樣本用於模型訓練,30%的樣本用於模型驗證

holdout檢驗的缺點很明顯,即在驗證集上計算出來的評估指標與原始分組有很大關係,為了消除隨機性,研究者們引入了'交叉驗證'的思想

k-flod交叉驗證:首先將全部樣本劃分成k個大小相等的樣本子集,依次遍歷這k個子集,每次把當前子集作為驗證集,其餘的子集作為訓練集。最後把k次評估指標的平均值作為最終的評估指標,在實際實驗中,k經常取10

留一驗證:每次留下乙個樣本作為驗證集,其餘所有樣本作為測試集,樣本總數為n,依次對n個樣本進行遍歷,進行n次驗證,再將評估指標求平均值得到最終的評估指標,在樣本總數較多的情況下,留一驗證法的時間開銷極大

不管是holdout檢驗還是交叉驗證,都是基於劃分訓練集和測試集的方法進行模型評估的,然而,當樣本規模較小時,將樣本集進行劃分會讓訓練集進一步減少,這可能會影響模型訓練效果,自助法是可以維持訓練集樣本規模的驗證方法

自助法是基於自助取樣法的檢驗方法,對於總數為n的樣本集合,進行n次有放回的隨機抽樣,得到大小為n的訓練集,n次取樣過程中,有的樣本會被重複取樣,有的樣本沒有被抽到過,將這些沒有被抽到過的樣本作為訓練集,進行模型驗證

為了進行超引數調優,一般會採用網格搜尋、隨機搜尋、貝葉斯優化等演算法。超引數搜尋演算法一般包括以下幾個要素:

網格搜尋可能是最簡單、應用最廣泛的超引數搜尋演算法,它通過查詢搜尋範圍內的所有的點來確定最優值。如果採用較大的搜尋範圍以及較小的步長,網格搜尋有很大概率找到全域性最優解,然而這種搜尋方案十分消耗計算資源和時間,特別是需要調優的超引數比較的時候,因此,在實際應用過程中,網格搜尋法一般會先使用較大的搜尋範圍和較大的步長,來尋找全域性最優解可能的位置,然後會逐漸縮小搜尋範圍和步長,來尋找更精確的最優值,這種操作方案可以降低所需的時間和計算量,但由於目標函式一般是非凸的,所有很可能會錯過全域性最優解,sklearn提供了gridsearchcv類實現網格搜尋

隨機搜尋的思想與網格搜尋的思想比較相似,只是不再測試上界和下界之間的所有值,而是在搜尋範圍中隨機選取樣本點。它的理論依據是,如果樣本點足夠大,那麼通過隨機取樣也能大概率地找到全域性最優解或近似解,隨機搜尋一般會比網格搜尋要快一些,但是和網格搜尋的快速版一樣,它的結果也是沒法保證的,sklearn提供了randomizedsearchcv類實現隨機搜尋

貝葉斯優化演算法在尋找最優超引數時,採用了與網格搜尋,隨機搜尋完全不同的方法,網格搜尋和隨機搜尋在測試乙個新點時,會忽略前乙個點的資訊,而貝葉斯優化演算法則充分利用了之前的資訊,貝葉斯優化演算法通過對目標函式形狀進行學習,找到使目標函式向全域性最優值提公升的引數。具體來說,它學習目標函式形狀的方法是,首先根據先驗分布,假設乙個搜尋函式,然後,每一次使用新的取樣點來測試目標函式時,利用這個資訊來更新目標函式的先驗分布,最後,演算法測試由後驗分布給出的全域性最值最可能出現的位置的點。

對於貝葉斯優化演算法,有乙個需要注意的地方,一旦找到了乙個區域性最優值,它會在該區域不斷取樣,所以很容易陷入區域性最優值,為了彌補這個缺陷,貝葉斯優化演算法會在探索和利用之間找到乙個平衡點,'探索'就是在還未取樣的區域獲取取樣點,而'利用'則是根據後驗分布在最可能出現全域性最優值的區域進行取樣

機器學習之模型評估與選擇

分為五部分 1 經驗誤差及過擬合 2 評估方法 3 效能度量 4 比較檢驗 5 偏差與方差。錯誤率 error rate 分類錯誤的樣本數佔總樣本數。精度 accuracy 1 錯誤率。誤差 error 學習器的實際 輸出和樣本的真實輸出的差異。在訓練集上的是訓練誤差,在新樣本上的是泛化誤差。過擬合...

機器學習之模型評估與選擇

1.誤差及擬合 訓練誤差 通過訓練集訓練出的模型,在訓練集上的 輸出與實際值之間的誤差 泛化誤差 模型在測試集上的誤差 訓練集用來訓練模型,測試集用來驗證模型的準確性 一般會把樣本7 3區分成訓練集和測試集,普遍情況下,判斷乙個模型是否優秀,不是看在訓練集上的表現,更多的是看模型在測試集上的表現,即...

機器學習之模型評估指標學習筆記

前段時間工作中發現自己對模型評估指標中的auc有點忘了,因此打算重新看一下然後寫個部落格記錄一下。首先簡單介紹一下混淆矩陣,查全率 也叫做召回率,recall 和查準率 也叫做精確率,precesion 在進行模型評估的時候,單單使用準確率accuracy 正確樣本數 總樣本數 有時候並不能很好的對...