機(jī)器學(xué)習(xí)-淺談模型評(píng)估的方法和指標(biāo)

以處理流程為骨架來(lái)學(xué)習(xí)方便依照框架的充實(shí)細(xì)節(jié)又不失概要(參考下圖機(jī)器學(xué)習(xí)處理流程的一個(gè)實(shí)例<<Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)>>),今天就充實(shí)一下模型評(píng)估(模型評(píng)價(jià))的部分吧.

圖-1-機(jī)器學(xué)習(xí)處理流程實(shí)例

本"故事"以<<Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)>>中預(yù)測(cè)用戶是否竊漏電的例子來(lái)展開,自問(wèn)自答,為什么要評(píng)估和怎么評(píng)估,具體的概念在下文有列出.

  • 分析目標(biāo)是基于用戶每天的用電量為基本數(shù)據(jù)來(lái)預(yù)測(cè)用戶是否竊漏電.
  • 首先,通過(guò)數(shù)據(jù)分析總結(jié)得到三個(gè)指標(biāo),
  • 然后,分別選用神經(jīng)網(wǎng)絡(luò)決策樹來(lái)訓(xùn)練得出預(yù)測(cè)模型。
  • 之后,對(duì)訓(xùn)練數(shù)據(jù)的預(yù)測(cè)結(jié)果進(jìn)行混淆矩陣(Confusion Matrix)運(yùn)算
  • 最后,對(duì)測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè)并進(jìn)行ROC(Receiver Operating Characteristic)評(píng)估,看哪個(gè)更優(yōu).
    三個(gè)指標(biāo)和數(shù)據(jù)樣例如下:
    圖-2-數(shù)據(jù)-model.xls樣例數(shù)據(jù)

電量趨勢(shì)下降指標(biāo): 如果電量趨勢(shì)不斷下降,則有竊電可能
線損指標(biāo):供電線路損失的比例,考慮前后幾天的增長(zhǎng)率如果大于1%則有竊電可能
告警指標(biāo):電表終端報(bào)警,如電壓缺相,電壓斷相等的次數(shù)

順便再次告誡自己:紙上得來(lái)淺,代碼同行。以下代碼用到了Python 的pandas(數(shù)據(jù)分析和處理), keras(神經(jīng)網(wǎng)絡(luò)), matplotlib(可視化),sklearn(機(jī)器學(xué)習(xí))包,對(duì)<<Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)>>中代碼稍有修改。思路如下:
1 導(dǎo)入數(shù)據(jù)
2 用訓(xùn)練數(shù)據(jù)建立決策樹模型
3 對(duì)訓(xùn)練數(shù)據(jù)用混淆矩陣評(píng)估決策樹模型的預(yù)測(cè)結(jié)果
4 用訓(xùn)練數(shù)據(jù)建立神經(jīng)網(wǎng)絡(luò)模型
5 對(duì)訓(xùn)練數(shù)據(jù)用混淆矩陣評(píng)估神經(jīng)網(wǎng)絡(luò)模型的預(yù)測(cè)結(jié)果
6 用學(xué)習(xí)得到的決策樹模型和神經(jīng)網(wǎng)絡(luò)模型跑測(cè)試數(shù)據(jù)來(lái)預(yù)測(cè)
7 用ROC曲線評(píng)估,選出更優(yōu)的一個(gè)模型

代碼包括cm_plot.pymodel.py如下,代碼環(huán)境主要包括( Ubuntu 14.04.2 LTS, python2.7, keras 2.0.4, tensorflow 1.0.0),測(cè)試代碼時(shí)在引入keras時(shí)報(bào)錯(cuò),后升級(jí)tensorflow,并指定其為keras的backend后跳出了坑:

# cm_plot.py 文件,包括了混淆矩陣可視化函數(shù),
# 放置在python的site-packages 目錄,供調(diào)用
# 例如:~/anaconda2/lib/python2.7/site-packages
#-*- coding: utf-8 -*-
def cm_plot(y, yp):
  from sklearn.metrics import confusion_matrix #導(dǎo)入混淆矩陣函數(shù)
  cm = confusion_matrix(y, yp) #混淆矩陣
  import matplotlib.pyplot as plt #導(dǎo)入作圖庫(kù)
  plt.matshow(cm, cmap=plt.cm.Greens) #畫混淆矩陣圖,配色風(fēng)格使用cm.Greens,更多風(fēng)格請(qǐng)參考官網(wǎng)。
  plt.colorbar() #顏色標(biāo)簽
  for x in range(len(cm)): #數(shù)據(jù)標(biāo)簽
    for y in range(len(cm)):
      plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
  plt.ylabel('True label') #坐標(biāo)軸標(biāo)簽
  plt.xlabel('Predicted label') #坐標(biāo)軸標(biāo)簽
  return plt
#-*- coding: utf-8 -*-
# model.py構(gòu)建并評(píng)估CART決策樹和LM神經(jīng)網(wǎng)絡(luò)算法
import pandas as pd #導(dǎo)入數(shù)據(jù)分析庫(kù)
from random import shuffle #導(dǎo)入隨機(jī)函數(shù)shuffle,用來(lái)打散數(shù)據(jù)
datafile = 'model.xls' #數(shù)據(jù)(如圖-2所示)
data = pd.read_excel(datafile) #讀取數(shù)據(jù),數(shù)據(jù)的前三列是特征,第四列是標(biāo)簽,'1'表示竊漏電,'0'表示沒有竊漏電
data = data.as_matrix() #將表格轉(zhuǎn)換為矩陣
shuffle(data) #隨機(jī)打亂數(shù)據(jù)

# 把數(shù)據(jù)的80%用來(lái)訓(xùn)練模型,20%做模型測(cè)試和評(píng)估,此處用到訓(xùn)練集-驗(yàn)證集二劃分
p = 0.8 #設(shè)置訓(xùn)練數(shù)據(jù)比例,
train = data[:int(len(data)*p),:] #前80%為訓(xùn)練集
test = data[int(len(data)*p):,:] #后20%為測(cè)試集

#構(gòu)建CART決策樹模型
from sklearn.tree import DecisionTreeClassifier #導(dǎo)入決策樹模型
treefile = 'tree.pkl' #模型輸出名字
tree = DecisionTreeClassifier() #建立決策樹模型
tree.fit(train[:,:3], train[:,3]) #訓(xùn)練得出決策樹模型

#保存模型
from sklearn.externals import joblib
joblib.dump(tree, treefile)

#用混淆矩陣可視化函數(shù)畫圖
from cm_plot import * #導(dǎo)入混淆矩陣可視化函數(shù)
cm_plot(train[:,:3], tree.predict(train[:,:3])).show() #顯示混淆矩陣可視化結(jié)果如下
圖-3-決策樹分類預(yù)測(cè)混淆矩陣
#構(gòu)建LM神經(jīng)網(wǎng)絡(luò)模型
import os
os.environ['KERAS_BACKEND']='tensorflow'#先設(shè)置keras 采用tensorflow 作為Backend
from keras.models import Sequential #導(dǎo)入神經(jīng)網(wǎng)絡(luò)初始化函數(shù)
from keras.layers.core import Dense, Activation #導(dǎo)入神經(jīng)網(wǎng)絡(luò)層函數(shù)、激活函數(shù)
netfile = 'net.model' #構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型存儲(chǔ)路徑
net = Sequential() #建立神經(jīng)網(wǎng)絡(luò)
net.add(Dense(input_dim = 3, output_dim = 10)) #添加輸入層(3節(jié)點(diǎn))到隱藏層(10節(jié)點(diǎn))的連接
net.add(Activation('relu')) #隱藏層使用relu激活函數(shù)
net.add(Dense(input_dim = 10, output_dim = 1)) #添加隱藏層(10節(jié)點(diǎn))到輸出層(1節(jié)點(diǎn))的連接
net.add(Activation('sigmoid')) #輸出層使用sigmoid激活函數(shù)
net.compile(loss = 'binary_crossentropy', optimizer = 'adam', class_mode = "binary") #編譯模型,使用adam方法求解
net.fit(train[:,:3], train[:,3], epochs=1000, batch_size=1) #訓(xùn)練模型,循環(huán)1000次

#保存模型
net.save_weights(netfile) 
predict_result = net.predict_classes(train[:,:3]).reshape(len(train)) #預(yù)測(cè)結(jié)果變形這里要提醒的是,keras用predict給出預(yù)測(cè)概率

#用混淆矩陣可視化函數(shù)畫圖
cm_plot(train[:,3], predict_result).show() #顯示混淆矩陣可視化結(jié)果
圖-4-神經(jīng)網(wǎng)絡(luò)分類預(yù)測(cè)混淆矩陣
# 用ROC曲線選取較優(yōu)模型,曲線越貼近左上,模型越優(yōu).
from sklearn.metrics import roc_curve #導(dǎo)入ROC曲線函數(shù)
import matplotlib.pyplot as plt #導(dǎo)入可視化包
# 上面的圖是決策樹模型下用測(cè)試數(shù)據(jù)跑出的ROC曲線
plt.subplot(211)
fpr1, tpr1, thresholds1 = roc_curve(test[:,3], tree.predict_proba(test[:,:3])[:,1], pos_label=1)
plt.plot(fpr1, tpr1, linewidth=2, label = 'ROC of CART', color = 'green') #作出ROC曲線
plt.xlabel('False Positive Rate') #坐標(biāo)軸標(biāo)簽
plt.ylabel('True Positive Rate') #坐標(biāo)軸標(biāo)簽
plt.ylim(0,1.05) #邊界范圍
plt.xlim(0,1.05) #邊界范圍
plt.legend(loc=4) #圖例

# 下面的圖是神經(jīng)網(wǎng)絡(luò)模型下用測(cè)試數(shù)據(jù)跑出的ROC曲線
predict_result = net.predict(test[:,:3]).reshape(len(test))
plt.subplot(212)
fpr2, tpr2, thresholds2 = roc_curve(test[:,3], predict_result, pos_label=1)
plt.plot(fpr2, tpr2, linewidth=2, label = 'ROC of LM',color='red') #作出ROC曲線
plt.xlabel('False Positive Rate') #坐標(biāo)軸標(biāo)簽
plt.ylabel('True Positive Rate') #坐標(biāo)軸標(biāo)簽
plt.ylim(0,1.05) #邊界范圍
plt.xlim(0,1.05) #邊界范圍
plt.legend(loc=4) #圖例
plt.show() #顯示作圖結(jié)果
圖5-ROC曲線比較

從圖中比較LM神經(jīng)網(wǎng)絡(luò)較優(yōu),是騾子是馬,還是拉出來(lái)溜溜,當(dāng)然還要看在實(shí)際數(shù)據(jù)中的表現(xiàn)嘍:-)通過(guò)例子咱們也總結(jié)一下,把相關(guān)的知識(shí)整理整理.

為什么要評(píng)估模型?

一句話,想找到最有效的模型.模型的應(yīng)用是循環(huán)迭代的過(guò)程,只有通過(guò)持續(xù)調(diào)整和調(diào)優(yōu)才能適應(yīng)在線數(shù)據(jù)和業(yè)務(wù)目標(biāo).這跟我們買鞋子有一比,鞋子是模型,左挑右選,好嗎,選了個(gè)合適的,可是這腳,它不斷有變化,怎么辦,持續(xù)調(diào)唄.
選用模型開始都是假設(shè)數(shù)據(jù)的分布是一定的,然而數(shù)據(jù)的分布會(huì)隨著時(shí)間的移動(dòng)而改變,這種現(xiàn)象稱為分布漂移(Distribution Drift)。驗(yàn)證指標(biāo)可以對(duì)模型在不斷新生的數(shù)據(jù)集上進(jìn)行性能跟蹤。當(dāng)性能開始下降時(shí),說(shuō)明該模型已經(jīng)無(wú)法擬合當(dāng)前的數(shù)據(jù)了,因此需要對(duì)模型進(jìn)行重新訓(xùn)練了。 模型能夠擬合新的數(shù)據(jù)稱為模型的泛化能力。就像我們上面的例子,訓(xùn)練模型時(shí)用的是歷史數(shù)據(jù),可是數(shù)據(jù)是不停的產(chǎn)生跟新的,機(jī)器學(xué)習(xí)怎么學(xué),請(qǐng)看下一個(gè)問(wèn)題.

怎么檢驗(yàn)和評(píng)估模型?

機(jī)器學(xué)習(xí)過(guò)程分為原型設(shè)計(jì)階段(Prototyping)與應(yīng)用階段(Deployed), 其中有原型設(shè)計(jì)階段(Prototyping)離線評(píng)估應(yīng)用階段(Deployed)在線評(píng)估(online evaluation).
Prototyping階段是使用歷史數(shù)據(jù)訓(xùn)練一個(gè)適合解決目標(biāo)任務(wù)的一個(gè)或多個(gè)機(jī)器學(xué)習(xí)模型,并對(duì)模型進(jìn)行驗(yàn)證(Validation)與離線評(píng)估(Offline evaluation),然后通過(guò)評(píng)估指標(biāo)選擇一個(gè)較好的模型。我們上面的例子就是Prototyping.
Deployed階段是當(dāng)模型達(dá)到設(shè)定的指標(biāo)值時(shí)便將模型上線,投入生產(chǎn),使用新生成的在線數(shù)據(jù)來(lái)對(duì)該模型進(jìn)行在線評(píng)估(Online evaluation),在線測(cè)試不同于離線測(cè)試,有著不同的測(cè)試方法以及評(píng)價(jià)指標(biāo)。最常見的便是A/B testing,它是一種統(tǒng)計(jì)假設(shè)檢驗(yàn)方法。
離線評(píng)估在線評(píng)估采用不同的評(píng)估指標(biāo),在對(duì)模型進(jìn)行離線評(píng)估時(shí)是采用偏經(jīng)驗(yàn)誤差的方法,在在線評(píng)估時(shí)會(huì)采用業(yè)務(wù)指標(biāo),如設(shè)備使用效率(OEE), 用戶點(diǎn)擊率等.
通過(guò)檢驗(yàn)和評(píng)估可能選擇單一模型,也能使用多個(gè)模型混合.那到底怎么選呢?

評(píng)估過(guò)程中如何調(diào)優(yōu)?

找到合適的鞋子是一個(gè)復(fù)雜的過(guò)程,還好,現(xiàn)在很多算法都很好的打包成包依照不同的開發(fā)語(yǔ)言發(fā)布出來(lái),我們上面的例子就是一個(gè)很好的說(shuō)明,也有各類軟件(SAS, SPSS, Rapidminer, Knime等),其實(shí)以上代碼完全可以用詞類工具實(shí)現(xiàn).機(jī)器學(xué)習(xí)模型建立過(guò)程是一個(gè)參數(shù)學(xué)習(xí)與調(diào)優(yōu)的過(guò)程。對(duì)模型進(jìn)行訓(xùn)練,便是模型參數(shù)的學(xué)習(xí)更新過(guò)程,除了模型參數(shù)還有超參數(shù)(hyperparameters)。例如logistic回歸中的特征系數(shù)為模型參數(shù),需要使用多少個(gè)特征進(jìn)行表征,特征的數(shù)目這個(gè)參數(shù)便是該模型的超參數(shù)??梢杂?strong>格搜索(grid search)、隨機(jī)搜索(random search)以及啟發(fā)式搜索(smart search)等進(jìn)行Hyperparameter tuning, 從超參數(shù)空間中尋找最優(yōu)的值。

格搜索(grid search)
格搜索便是將超參數(shù)的取值范圍劃分成一個(gè)個(gè)格子,對(duì)每一個(gè)格子所對(duì)應(yīng)的值進(jìn)行評(píng)估,選擇評(píng)估結(jié)果最好的格子所對(duì)應(yīng)的超參數(shù)值。例如,對(duì)于決策樹葉子節(jié)點(diǎn)個(gè)數(shù)這一超參數(shù),可以將值劃分為這些格子:10, 20, 30, …, 100, …;

隨機(jī)搜索(random search)
它是格搜索的變種。相比于搜索整個(gè)格空間,隨機(jī)搜索只對(duì)隨機(jī)采樣的那些格進(jìn)行計(jì)算,然后在這中間選擇一個(gè)最好的。因此隨機(jī)搜索比格搜索的代價(jià)低。

在離線評(píng)估階段從歷史數(shù)據(jù)據(jù)獲取數(shù)據(jù)集校驗(yàn)?zāi)P偷姆椒ò?strong>訓(xùn)練集-驗(yàn)證集二劃分校驗(yàn)(Hold-out validation)、交叉校驗(yàn)(Cross-validation), 另一種方式是重采樣技術(shù),如bootstrappingJackknife,此類方法可以充分利用現(xiàn)有數(shù)據(jù)信息,一定程度減少過(guò)擬合。 ( 參考百度百科抽樣數(shù)據(jù)方式)

交叉驗(yàn)證

圖-6-交叉校驗(yàn)(Cross-validation)

評(píng)估指標(biāo) (Evaluation Matrics)是什么?

評(píng)估指標(biāo)是把"尺子",用來(lái)評(píng)判模型優(yōu)劣水平的算法,不同的機(jī)器學(xué)習(xí)模型有著不同的"尺子",同時(shí)同一種機(jī)器學(xué)習(xí)模型也可以用不同的尺子來(lái)評(píng)估,只是每個(gè)尺子的的著重點(diǎn)不同而已。對(duì)于分類(classification)、回歸(regression)、排序(ranking)、聚類(clustering)、推薦(recommendation),很多指標(biāo)可以對(duì)其進(jìn)行評(píng)價(jià),如精確率-召回率(precision-recall),可以用在分類、推薦、排序等中.以下是各類"尺子"的定義,用到時(shí)才看,僅供參考.

錯(cuò)誤率,精度,誤差的基本概念:

錯(cuò)誤率(error rate)= a個(gè)樣本分類錯(cuò)誤/m個(gè)樣本
? 精度(accuracy)= 1 -錯(cuò)誤率
? 誤差(error):學(xué)習(xí)器實(shí)際預(yù)測(cè)輸出與樣本的真是輸出之間的差異。
? 訓(xùn)練誤差(training error):即經(jīng)驗(yàn)誤差。學(xué)習(xí)器在訓(xùn)練集上的誤差。
? 泛化誤差(generalization error):學(xué)習(xí)器在新樣本上的誤差。
.

分類器評(píng)估指標(biāo)

對(duì)于二分類問(wèn)題,可將樣例根據(jù)其真實(shí)類別和分類器預(yù)測(cè)類別劃分為:
真正例(True Positive,TP):真實(shí)類別為正例,預(yù)測(cè)類別為正例。
假正例(False Positive,F(xiàn)P):真實(shí)類別為負(fù)例,預(yù)測(cè)類別為正例。
假負(fù)例(False Negative,F(xiàn)N):真實(shí)類別為正例,預(yù)測(cè)類別為負(fù)例。
真負(fù)例(True Negative,TN):真實(shí)類別為負(fù)例,預(yù)測(cè)類別為負(fù)例。
然后可以構(gòu)建混淆矩陣(Confusion Matrix)如下表所示,就是我們例子中用到的。

圖-7-混淆矩陣(Confusion Matrix)

ROC AUC(Area Under ROC Curve): ROC 曲線和 AUC 常被用來(lái)評(píng)價(jià)一個(gè)二值分類器的優(yōu)劣。若一個(gè)學(xué)習(xí)器的ROC曲線被另一個(gè)包住,后者的性能能優(yōu)于前者;若交叉,判斷ROC曲線下的面積,即AUC.

ROC: 縱軸:真正例率 TPR;橫軸:假正例率FPR
  

圖8-TPR & FPR

圖9-ROC & AUC

先看圖中的四個(gè)點(diǎn)和對(duì)角線:
第一個(gè)點(diǎn),(0,1),即 FPR=0, TPR=1,這意味著 FN(false negative)=0,并且FP(false positive)=0。這意味著分類器很完美,因?yàn)樗鼘⑺械臉颖径颊_分類。
第二個(gè)點(diǎn),(1,0),即 FPR=1,TPR=0,這個(gè)分類器是最糟糕的,因?yàn)樗晒Ρ荛_了所有的正確答案。
第三個(gè)點(diǎn),(0,0),即 FPR=TPR=0,即 FP(false positive)=TP(true positive)=0,此時(shí)分類器將所有的樣本都預(yù)測(cè)為負(fù)樣本(negative)。
第四個(gè)點(diǎn)(1,1),分類器將所有的樣本都預(yù)測(cè)為正樣本。
對(duì)角線上的點(diǎn)表示分類器將一半的樣本猜測(cè)為正樣本,另外一半的樣本猜測(cè)為負(fù)樣本。因此,ROC 曲線越接近左上角,分類器的性能越好。

例如有如下 20 個(gè)樣本數(shù)據(jù),Class 為真實(shí)分類,Score 為分類器預(yù)測(cè)此樣本為正例的概率。

圖10-ROC運(yùn)算中的數(shù)據(jù)
  • 按 Score 從大到小排列依次將每個(gè) Score 設(shè)定為閾值,
  • 然后這 20 個(gè)樣本的標(biāo)簽會(huì)變化,當(dāng)它的 score 大于或等于當(dāng)前閾值時(shí),則為正樣本,否則為負(fù)樣本。
  • 這樣對(duì)每個(gè)閾值,可以計(jì)算一組 FPR 和 TPR,此例一共可以得到 20 組。
  • 當(dāng)閾值設(shè)置為 1 和 0 時(shí), 可以得到 ROC 曲線上的 (0,0) 和 (1,1) 兩個(gè)點(diǎn)。

圖11-ROC曲線

AUC:

AUC考慮的是樣本預(yù)測(cè)的排序質(zhì)量,因此它與排序誤差有緊密聯(lián)系。給定
m+個(gè)正例,m-個(gè)反例,令D+和D-分別表示正、反例集合,則排序
”損失”定義為:
 

Lrank對(duì)應(yīng)ROC曲線之上的面積:若一個(gè)正例在ROC曲線上標(biāo)記為(x,y)
,則x恰是排序在期前的所有反例所占比例,即假正例,因此:

準(zhǔn)確率,又稱查準(zhǔn)率(Precision,P):


召回率,又稱查全率(Recall,R):

F1值:

F1的一般形式

Β>0度量了查全率對(duì)查準(zhǔn)率的相對(duì)重要性;β=1退化為F1;β>1查全率有更大影響;β<1查準(zhǔn)率有更大影響。

宏平均(macro-average)微平均(micro-average)一般用在文本分類器, 如果只有一個(gè)二分類混淆矩陣,那么用以上的指標(biāo)就可以進(jìn)行評(píng)價(jià),但是當(dāng)我們?cè)趎個(gè)二分類混淆矩陣上要綜合考察評(píng)價(jià)指標(biāo)的時(shí)候就會(huì)用到宏平均和微平均。

宏平均(Macro-averaging): 是先對(duì)每一個(gè)類統(tǒng)計(jì)指標(biāo)值,然后在對(duì)所有類求算術(shù)平均值。宏平均指標(biāo)相對(duì)微平均指標(biāo)而言受小類別的影響更大。





微平均(Micro-averaging):是對(duì)數(shù)據(jù)集中的每一個(gè)實(shí)例不分類別進(jìn)行統(tǒng)計(jì)建立全局混淆矩陣,然后計(jì)算相應(yīng)指標(biāo)。



平均準(zhǔn)確率(Average Per-class Accuracy):
??為了應(yīng)對(duì)每個(gè)類別下樣本的個(gè)數(shù)不一樣的情況,計(jì)算每個(gè)類別下的準(zhǔn)確率,然后再計(jì)算它們的平均值。

對(duì)數(shù)損失函數(shù)(Log-loss):
??在分類輸出中,若輸出不再是0-1,而是實(shí)數(shù)值,即屬于每個(gè)類別的概率,那么可以使用Log-loss對(duì)分類結(jié)果進(jìn)行評(píng)價(jià)。這個(gè)輸出概率表示該記錄所屬的其對(duì)應(yīng)的類別的置信度。比如如果樣本本屬于類別0,但是分類器則輸出其屬于類別1的概率為0.51,那么這種情況認(rèn)為分類器出錯(cuò)了。該概率接近了分類器的分類的邊界概率0.5。Log-loss是一個(gè)軟的分類準(zhǔn)確率度量方法,使用概率來(lái)表示其所屬的類別的置信度。Log-loss具體的數(shù)學(xué)表達(dá)式為:

其中,yi是指第i個(gè)樣本所屬的真實(shí)類別0或者1,pi表示第i個(gè)樣本屬于類別1的概率,這樣上式中的兩個(gè)部分對(duì)于每個(gè)樣本只會(huì)選擇其一,因?yàn)橛幸粋€(gè)一定為0,當(dāng)預(yù)測(cè)與實(shí)際類別完全匹配時(shí),則兩個(gè)部分都是0,其中假定0log0=0。其實(shí),從數(shù)學(xué)上來(lái)看,Log-loss的表達(dá)式是非常漂亮的。我們仔細(xì)觀察可以發(fā)現(xiàn),其信息論中的交叉熵(Cross Entropy,即真實(shí)值與預(yù)測(cè)值的交叉熵),它與相對(duì)熵(Relative Entropy,也稱為KL距離或KL散度, Kullback–Leibler divergence.)也非常像。信息熵是對(duì)事情的不確定性進(jìn)行度量,不確定越大,熵越大。交叉熵包含了真實(shí)分布的熵加上假設(shè)與真實(shí)分布不同的分布的不確定性。因此,log-loss是對(duì)額外噪聲(extra noise)的度量,這個(gè)噪聲是由于預(yù)測(cè)值域?qū)嶋H值不同而產(chǎn)生的。因此最小化交叉熵,便是最大化分類器的準(zhǔn)確率。

回歸模型評(píng)估指標(biāo)

回歸是對(duì)連續(xù)的實(shí)數(shù)值進(jìn)行預(yù)測(cè),即輸出值是連續(xù)的實(shí)數(shù)值,而分類中是離散值。對(duì)于回歸模型的評(píng)價(jià)指標(biāo)主要有以下幾種:
RMSE(root mean square error,平方根誤差),其又被稱為RMSD(root mean square deviation),RMSE對(duì)異常點(diǎn)(outliers)較敏感,如果回歸器對(duì)某個(gè)點(diǎn)的回歸值很不理性,那么它的誤差則較大,從而會(huì)對(duì)RMSE的值有較大影響,即平均值是非魯棒的。其定義如下:


Quantiles of Errors 為了改進(jìn)RMSE的缺點(diǎn),提高評(píng)價(jià)指標(biāo)的魯棒性,使用誤差的分位數(shù)來(lái)代替,如中位數(shù)來(lái)代替平均數(shù)。假設(shè)100個(gè)數(shù),最大的數(shù)再怎么改變,中位數(shù)也不會(huì)變,因此其對(duì)異常點(diǎn)具有魯棒性。

先到此,分享快樂(lè)!
參考:
[1] http://www.itdecent.cn/p/42bfe1a79d12 "不會(huì)停的蝸牛-[什么是ROC ACU]"
[2] http://blog.csdn.net/heyongluoyao8/article/details/49408319 "我和我追逐的夢(mèng)~~~-[機(jī)器學(xué)習(xí)模型評(píng)價(jià)(Evaluating Machine Learning Models)-主要概念與陷阱]"
[3] http://www.cnblogs.com/kuotian/p/6151541.html "koutian-[機(jī)器學(xué)習(xí)總結(jié)之第二章模型評(píng)估與選擇]"
[4] http://blog.csdn.net/pipisorry/article/details/52574156 "皮皮blog-[機(jī)器學(xué)習(xí)模型的評(píng)價(jià)指標(biāo)和方法]"
[5] http://scikit-learn.org/0.17/modules/model_evaluation.html#scoring-parameter "Python Scikit-Learn-[3.3. Model evaluation: quantifying the quality of predictions]"
[6] https://item.jd.com/11821937.html [<<Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)>> 張良軍 王路 譚立云 蘇劍林等]
[7] https://item.jd.com/11867803.html [<<機(jī)器學(xué)習(xí)>> 周志華]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容