從零開始機(jī)器學(xué)習(xí)-15 分類

本文由 沈慶陽 所有,轉(zhuǎn)載請與作者取得聯(lián)系!

內(nèi)容

分類閾值
真假、正負(fù)例
準(zhǔn)確率
精確率與召回率
ROC曲線
預(yù)測偏差

分類閾值

邏輯回歸的返回值是概率。其返回既可以按“原樣”返回,也可以轉(zhuǎn)換成二元值返回。以對垃圾郵件的預(yù)測為例,如果邏輯回歸的返回概率為0.9999(十分高),那么可以斷言這一定是一封垃圾郵件。如果返回的概率為0.0001(十分低),那么這個郵件基本上不是垃圾郵件。但是如果邏輯回歸返回值是0.55呢?
為了將邏輯回歸的返回值成功映射到二元類別,我們需要為其指定分類閾值(又稱判定閾值)。如果邏輯回歸的返回值高于該閾值,則表示該郵件可能是垃圾郵件。如果邏輯回歸的返回值低于該閾值,則表示這封郵件不是垃圾郵件。
對于不同的問題,分類閾值的選擇不同。在分類模型的預(yù)測時,不同的閾值對其預(yù)測效果有不同的影響。

真假、正負(fù)例

其實(shí)使用這個副標(biāo)題是不準(zhǔn)確的,其全稱是真正例、假正例、假負(fù)例和真負(fù)例。也就是正類別、負(fù)類別和真假的組合。
還是以垃圾郵件的判別為例,是垃圾郵件是正類別,不是垃圾郵件是負(fù)類別。則在一個2x2的混淆矩陣中可以描述所有可能出現(xiàn)的結(jié)果:


可能結(jié)果的混淆矩陣

在上述四種預(yù)測中,真(True)、假(False)、正(Positive),負(fù)(Negative)構(gòu)成了四種不同的預(yù)測。
真正例(TP):是指分類模型將正類別樣本正確地預(yù)測成正類別。
真負(fù)例(TN):是指分類模型將負(fù)類別樣本正確地預(yù)測成負(fù)類別。
假正例(FP):是指分類模型將正類別樣本錯誤地預(yù)測為正類別。
假負(fù)例(FN):是指分類模型將負(fù)類別樣本錯誤地預(yù)測為負(fù)類別。
對于這4中預(yù)測結(jié)果,我們可以衍生出準(zhǔn)確率來評估分類模型。

準(zhǔn)確率

準(zhǔn)確率(Accuracy)是評估分類模型的一個指標(biāo)。準(zhǔn)確率即預(yù)測的是不是準(zhǔn)確,模型預(yù)測結(jié)果中正確的預(yù)測所占的比重。其定義為:

Accuracy = 正確的預(yù)測數(shù) / 總預(yù)測數(shù)

在二元分類中,可以將正確的預(yù)測數(shù)用正類別(真正例和真負(fù)例相加)來表示,將總預(yù)測數(shù)用正類別和負(fù)類別相加來表示。


二元分類中的準(zhǔn)確率計(jì)算公式

其中:
真正例:TP;真負(fù)例:TN;假正例:FP;假負(fù)例:FN
假設(shè)在一個二元分類中,我們對垃圾郵件的預(yù)測有1個真正例;1個假正例;10個假負(fù)例;88個真負(fù)例。
那么通過帶入上述公式會得到其準(zhǔn)確率為0.89。89%的準(zhǔn)確率看似不錯。但通過對正負(fù)類別的分析就可以進(jìn)一步地了解分類模型的預(yù)測效果。
在100個郵件中,有11封垃圾郵件,89封正常郵件。在89封正常郵件中分類模型將88封郵件標(biāo)記為了正常郵件。但在11封垃圾郵件中該分類模型僅正確地標(biāo)記了1封垃圾郵件。
因此,雖然89%的準(zhǔn)確率看起來很高,但是如果一個垃圾郵件分類器將所有的郵件均標(biāo)記為正確(還是針對這個樣本),那么其同樣可以得到89%的準(zhǔn)確率。所以該分類模型的預(yù)測效果并不是很出色。
所以,在使用正負(fù)類別的總體數(shù)量之間相差太多的分類不平衡的數(shù)據(jù)集的時候,僅僅靠準(zhǔn)確率來反映模型的預(yù)測效果并不理想。
為了更好地評估分類模型,我們還需引入精確率和召回率。

精確率和召回率

精確率

在分類問題中,精確率(Precision)是用來衡量在被識別為正類別的樣本中,的確為正類別的比例是多少。其公式如下:


精確率的定義

當(dāng)FP為0時(即分類模型的預(yù)測結(jié)果中沒有假正例時)則精確率為1.0。
讓我們繼續(xù)使用上一節(jié)中的垃圾郵件預(yù)測的例子。通過精確率的公式計(jì)算可以得到:

精確率=1 / (1 + 1) = 0.5

即該分類模型的精確率為0.5,其含義為該分類模型在預(yù)測垃圾郵件的時候其正確率是50%。

召回率

與精準(zhǔn)率的定義類似,召回率是用來描述所有正類別樣本里被正確識別為正類別的比例。
召回率的定義如下:


召回率的定義

同樣以上述垃圾郵件的分類為例,其真正例為1,假負(fù)例為10,則召回率(Recall)為0.09。也就是該分類模型能正確識別出所有垃圾郵件的百分比為9%。

平衡精確率和召回率

精準(zhǔn)率和召回率往往是此消彼長的。也就是說要提高精確率會降低召回率,提高召回率會降低精確率。因此,要全面地對分類模型做評估,則需要同時考慮到精確率和召回率。


精準(zhǔn)率與召回率

上圖中一共有36個樣本。其中灰色的為TN、紅色的為TP。
當(dāng)分類閾值如上圖所示的時候,其精準(zhǔn)率實(shí)則為被標(biāo)記為垃圾郵件的郵件中被正確分類的郵件所占的百分比,即75%。
召回率實(shí)際上指的是實(shí)際的所有垃圾郵件中被正確分類的郵件所占的百分比,即82%。
如果此時我們相應(yīng)地提高分類閾值:


精準(zhǔn)率與召回率2

通過提高分類閾值,我們會發(fā)現(xiàn)假正例FP的數(shù)量會減少,但同時假負(fù)例FN的數(shù)量會相應(yīng)地增加。結(jié)果就是精確率提高了,但召回率卻降低了。
精準(zhǔn)率與召回率3

通過降低分類閾值,假正例FP的數(shù)量增加了,但假負(fù)例FN的數(shù)量減少了。其結(jié)果是精確率降低,但召回率卻提高。
由此,我們根據(jù)精確率和召回率對評估分類模型的效果制定了相應(yīng)地指標(biāo)。

ROC曲線

ROC曲線的全稱為接收者操作特征曲線。ROC曲線顯示了分類模型在所有的分類閾值下的效果,其繪制了真正例率和假正例率兩個參數(shù)。
真正例率(TPR)與召回率同義,其定義與召回率定義相同。


真正例率

假正例率的定義如下:


假正例率

ROC曲線用來描述分類閾值不同情況下的真正例率與假正例率。
ROC曲線

在上圖ROC曲線中的曲線上的每個點(diǎn)都代表特定判定閾值的情況下真正例率對應(yīng)的假正例率。為了得到ROC曲線上的點(diǎn)的坐標(biāo),需要使用不同的分類閾值多次評估邏輯回歸模型,從而得到相應(yīng)地真正例率與假正例率。但這樣的話為了獲得較為完整且精細(xì)的曲線就意味著需要進(jìn)行多次計(jì)算,效率十分低下。因此,通過ROC曲線下面積這種基于排序的算法更為高效。
ROC曲線下面積(AUC)
ROC曲線下面積

ROC曲線下面積指的是整個ROC曲線(從(0,0)到(0,1)的二維空間內(nèi))下的二維面積。由于ROC曲線下面積針對了所有分類閾值,因此ROC曲線下面積是對所有可能的分類閾值的效果的評價(jià)。
曲線下面積可以看成模型將隨機(jī)正類別樣本排列在隨機(jī)負(fù)類別樣本上的概率。


某個邏輯回歸模型的預(yù)測

在上圖中,曲線下面積表示隨機(jī)正類別(實(shí)際正例)樣本位于隨機(jī)負(fù)類別(實(shí)際負(fù)例)樣本的右側(cè)的概率。
ROC曲線下面積的取值范圍是[0,1]。當(dāng)ROC曲線下面積為0時,則表示預(yù)測結(jié)果全部錯誤。預(yù)測結(jié)果全部正確時ROC曲線下面積則為1。
ROC曲線下面積這個指標(biāo)有著如下兩個特征:
曲線下面積測量的是預(yù)測的排名情況,而非測量預(yù)測的絕對值。因此曲線下面積的尺度不會發(fā)生改變。
曲線下面積測量的是分類模型預(yù)測的質(zhì)量,不考慮選取的分類閾值,因此曲線下面積的分類閾值不變。
以上兩個特性使得ROC曲線下面積比較實(shí)用,但這兩個特性都有各自的局限性。
當(dāng)我們需要尺度發(fā)生改變的時候,如需要被良好校準(zhǔn)的概率輸出的時候,ROC曲線下面積則無法評價(jià)校準(zhǔn)的結(jié)果。
當(dāng)假負(fù)例與假正例的代價(jià)差異較大的時候,需要減少其中一種類型的分類錯誤。通過優(yōu)先選擇減少假正例的時候,ROC曲線下面積這個指標(biāo)則無法發(fā)揮較大的作用。

預(yù)測偏差

我們追求的邏輯回歸的預(yù)測結(jié)果應(yīng)該是沒有偏差的。也就是說預(yù)測平均值應(yīng)該與觀察平均值相等。但這是我們所追求的目標(biāo),也是理想情況下的結(jié)果。實(shí)際上,邏輯回歸的預(yù)測總數(shù)有預(yù)測偏差的存在,預(yù)測偏差便是兩者之間的差。因此,預(yù)測偏差的定義如下:


預(yù)測偏差的定義

如果預(yù)測偏差過大,則表明模型對正類別標(biāo)簽的出現(xiàn)頻率預(yù)測有誤,也就是說模型存在錯誤。
日常生活中,根據(jù)我們的生活常識,在所有的郵件中,基本上只有1%左右的郵件是垃圾郵件。如果我們剛收到一封尚未打開的郵件(不知道關(guān)于這封郵件的任何信息),那么這封郵件是垃圾郵件的概率則是1%左右。同樣,一個垃圾郵件檢測的分類模型在對電子郵件的檢測中是垃圾郵件的次數(shù)占總次數(shù)也應(yīng)該是1%左右。但是,如果一個分類模型的預(yù)測郵件是垃圾郵件的概率達(dá)到了20%或更多,那么這個分類模型則存在預(yù)測偏差。
造成預(yù)測偏差的原因有很多。如數(shù)據(jù)集混亂、模型的實(shí)現(xiàn)過程中存在錯誤、訓(xùn)練樣本存在偏差、特征集不完整或是正則化過度。
對預(yù)測偏差的存在,我們可以對相應(yīng)模型進(jìn)行后期處理來糾正。通過添加校準(zhǔn)層來調(diào)整模型的輸出。如果一個模型存在2%的偏差,則通過添加一個校準(zhǔn)層,將平均預(yù)測偏差降低2%。
添加校準(zhǔn)層可以使目前的模型能夠使用,但是這個方法也是十分暴力的方法。其并非從偏差的源頭入手,而是直接修復(fù)輸出結(jié)果。也就是常說的治標(biāo)不治本。而且添加校準(zhǔn)層則需要后續(xù)不斷地對校準(zhǔn)層進(jìn)行更新維護(hù),如果一個機(jī)器學(xué)習(xí)項(xiàng)目依賴于校準(zhǔn)層來發(fā)揮作用的話,那么后續(xù)的維護(hù)過程將會相當(dāng)?shù)耐纯唷?/p>

分桶偏差與預(yù)測偏差

邏輯回歸的輸出的是0到1之間的概率值,但其輸入是帶有0和1的標(biāo)簽的樣本。在確定預(yù)測偏差的過程中,我們簡單的根據(jù)一個樣本來確定預(yù)測偏差。也就是說,為了確定預(yù)測偏差,我們需要在一個大“桶”中來檢查預(yù)測偏差。只有將足夠的樣本組合在一起來比較預(yù)測值和觀察值,預(yù)測偏差才有足夠的意義。
在確定預(yù)測偏差的時候,我們可以采取如下的策略構(gòu)建桶:
1、以線性方式分解目標(biāo)預(yù)測
2、構(gòu)建分位數(shù)
讓我們以1000個值每桶對樣本進(jìn)行分桶,并對每個桶進(jìn)行預(yù)測,求其平均值。
以x軸表示每桶預(yù)測的平均值,y軸表示每桶實(shí)際的平均值來繪制散點(diǎn)圖。


對數(shù)尺度下的預(yù)測偏差曲線

我們可以發(fā)現(xiàn),上圖中有些地方的預(yù)測值過于離散,也就是說預(yù)測的效果很差。造成這種后果的原因如下:
1、訓(xùn)練集不能充分表示數(shù)據(jù)空間的某些子集
2、訓(xùn)練集的某些子集比其他子集更加混亂
3、該模型正則化過度
對于正則化過度,可以通過減小lambda的值來解決。

覺得寫的不錯的朋友可以點(diǎn)一個 喜歡? ~
謝謝你的支持!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容