日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习模型效果评估

發(fā)布時(shí)間:2023/12/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习模型效果评估 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總第96篇

前言

前面的推文中介紹了幾種常用的機(jī)器學(xué)習(xí)算法,每個(gè)算法都有各自的優(yōu)劣勢,我們應(yīng)該選擇根據(jù)每個(gè)算法的優(yōu)劣勢去合理的選擇適合我們需求的算法,以此達(dá)到效果最優(yōu),那么什么樣的效果才是最優(yōu)的,用什么來衡量這個(gè)效果。這一篇就針對機(jī)器學(xué)習(xí)算法的效果評(píng)估指標(biāo)進(jìn)行介紹。

  • 準(zhǔn)確率

  • 精確率

  • 召回率

  • F1-score

  • 交叉報(bào)告

  • 混淆矩陣

  • ROC/AUC

在介紹具體每個(gè)指標(biāo)的概念以前,我們先看一個(gè)故事:

一位女神被安排了10位男性相親對象,目前只有這10位男性的照片,女神需要根據(jù)照片情況來判斷要不要去見面,其中影響見與不見的一個(gè)重要指標(biāo)就是這位男性是否是土豪,該女神就通過每位男性的照片(具體一點(diǎn)就是通過男性穿的什么牌子的衣服、鞋、皮帶,戴的什么眼鏡、手表哈)來判斷哪位是土豪。表中的結(jié)果就是女神判斷的結(jié)果和實(shí)際情況對應(yīng)表。女神的眼力怎么樣呢(把女神的眼力當(dāng)作一個(gè)算法看待)?先看一下下圖這張表:


實(shí)際是土豪實(shí)際是非土豪
被判斷為土豪5人2人
被判斷為非土豪2人1人

這張表表示,這10位男士中有7位是真正的土豪,在這7位土豪中有5位被判別出來了,有2位被誤判為非土豪(可能穿著比較低調(diào),被誤判了哈哈哈);有3位男士是非土豪,在這3位中有2位被誤判為土豪(穿著打扮能力很強(qiáng)),只有1位非土豪被判斷成非土豪。

這是上面圖表直觀上傳達(dá)的意思,我們接下來用不同的量化指標(biāo)去評(píng)判女神的判斷效果,并用sklearn庫實(shí)現(xiàn)。

準(zhǔn)確率

準(zhǔn)確率(accuracy)是指所有被正確劃分類別(實(shí)際是土豪被判斷為土豪人數(shù)+實(shí)際是非土豪被判斷為非土豪的人數(shù))的人數(shù)占總?cè)藬?shù)(所有被判斷對象)的比值(5+1)/10=0.6。

#導(dǎo)入sklearn庫 from sklearn.metrics import accuracy_score #打印出準(zhǔn)確率 print(accuracy_score(y_true,y_pred) #打印出分類正確的個(gè)數(shù) print(accuracy_score(y_true,y_pred,normalize=False))

精確率

在說精確率(precision)以前,我們需要重申一下女神做判斷的目的,就是找出真正的土豪。精確率就是女神找出的真土豪人數(shù)(被判斷為土豪實(shí)際也是土豪的人數(shù))占女神找出所有土豪人數(shù)(被判斷為土豪的總?cè)藬?shù)=實(shí)際是土豪+實(shí)際是非土豪)的比值5/(5+2)=0.71

#導(dǎo)入sklearn庫 from sklearn.metrics import precision_score #打印出精確率 print(precision_score(y_true, y_pred, average='macro'))

召回率

召回率(recall)是指被找出的真土豪人數(shù)(被判斷為土豪實(shí)際也是土豪)占實(shí)際土豪總?cè)藬?shù)的比值5/(5+2)=0.71

#導(dǎo)入sklearn庫 from sklearn.metrics import recall_score #打印出召回率 print(recall_score(y_true, y_pred, average='macro'))

F1-score

F1-score是精確率和召回率的調(diào)和平均值,之所以是調(diào)和平均是我們可以對精確率和召回率給予不同的權(quán)重,默認(rèn)情況下兩者的權(quán)重是一樣的。計(jì)算公式如下:

#導(dǎo)入sklearn庫 from sklearn.metrics import f1_score #打印出召回率 print(f1_score(y_true, y_pred, average='macro'))

交叉報(bào)告

交叉報(bào)告(classfication_report)是上面幾個(gè)指標(biāo)(精確率、召回率、f1-score)的一個(gè)匯總情況。

#導(dǎo)入sklearn庫 from sklearn.metrics import classification_report y_true = [0, 1, 2, 2, 2] y_pred = [0, 0, 2, 2, 1] #分類標(biāo)簽名 target_names = ['class 0', 'class 1', 'class 2'] #打印出交叉報(bào)告 print(classification_report(y_true, y_pred, target_names=target_names))

混淆矩陣

混淆矩陣(confusion_matrix)是用矩陣的形式來表示分類情況,對角線元素表示預(yù)測標(biāo)簽等于真實(shí)標(biāo)簽的點(diǎn)的數(shù)量,是分類結(jié)果的一個(gè)絕對量,而不是比值,而非對角線元素是分類器誤標(biāo)記的那些元素。混淆矩陣的對角線值越高越好,表明被正確預(yù)測的量越多。

#導(dǎo)入sklearn庫 from sklearn.metrics import confusion_matrix y_true = [2, 0, 2, 2, 0, 2] y_pred = [0, 0, 2, 2, 0, 2] #打印出矩陣 print(confusion_matrix(y_true, y_pred))

混淆矩陣的結(jié)果也經(jīng)常被用來可視化成熱力圖的形式,橫坐標(biāo)表示預(yù)測的類別,縱坐標(biāo)表示實(shí)際的類別,對角線依次表示實(shí)際是A、B、C類且被預(yù)測為A、B、C類的量,顏色越深表示被預(yù)測正確的量越多,效果越好。

ROC/AUC

在說ROC/AUC之前,我們先說一下分類器的輸出結(jié)果,可以是直接輸出具體的類別clf.predict()方法,也可以輸出屬于某個(gè)類別的概率clf.predict_proba()方法,對于輸出類別的方法,算法會(huì)先設(shè)定一個(gè)默認(rèn)的閾值,將大于閾值的劃分為1類,小于閾值的劃分為0類;我們也可以自定義閾值的大小,且閾值是可調(diào)整的,不同調(diào)整的不同的閾值,使分類準(zhǔn)確率達(dá)到最大,而ROC曲線就是不同閾值下對應(yīng)的準(zhǔn)確率繪制的一條曲線。ROC曲線越向上,表示模型效果越好。

繪制ROC曲線需要計(jì)算兩個(gè)值,tpr和fpr,tpr是模型在正樣本上的預(yù)測準(zhǔn)確率,是將真土豪分為土豪的概率(被判斷為土豪的人數(shù)/實(shí)際土豪人數(shù)),即召回率;fpr是模型在負(fù)樣本上的預(yù)測準(zhǔn)確率,表示將非土豪誤判為土豪的人數(shù)占所有實(shí)際非土豪人數(shù)的比值(1-被判斷為非土豪且實(shí)際也是非土豪人數(shù)/實(shí)際非土豪人數(shù))。

#導(dǎo)入庫 from sklearn.metrics import roc_curve, auc#計(jì)算tpr,fpr,auc fpr, tpr, threshold = roc_curve(y_test, y_proba) roc_auc = auc(fpr, tpr)#plot roc_curve %matplotlib inline plt.figure() lw = 2 plt.plot(fpr, tpr, color='darkorange',lw=lw, label='ROC curve (area = %0.2f)' % roc_auc[2]) plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show()

ROC是一個(gè)定性指標(biāo),無法對模型效果進(jìn)行量化,所以有了AUC,AUC是ROC曲線下方的面積,通常AUC值在0.5-1.0之間,值越大模型效果越好。

說說幾種指標(biāo)的一個(gè)區(qū)別

準(zhǔn)確率容易受到不平衡數(shù)據(jù)的影響,比如有在100個(gè)測試集中,有99個(gè)負(fù)樣本,1個(gè)正樣本,模型會(huì)把這100個(gè)測試集全部劃分為負(fù)樣本,得到的結(jié)果如下:


實(shí)際是正樣本實(shí)際是負(fù)樣本
預(yù)測為正樣本00
預(yù)測為負(fù)樣本199

這個(gè)模型的的準(zhǔn)確率可以高達(dá)99%,但是我們的目標(biāo)是找出正樣本,而該模型一個(gè)正樣本都找不出來,這個(gè)準(zhǔn)確率是虛高,是帶有欺騙性的。所以當(dāng)正負(fù)樣本不平衡的時(shí)候,準(zhǔn)確率是沒有評(píng)價(jià)意義的。

精確率和召回率是相互制約的,一般精確率低的召回率高,精確率搞得召回率低,根據(jù)不同的業(yè)務(wù)場景選擇不同的重點(diǎn)。比如公司要通過運(yùn)營活動(dòng)(獎(jiǎng)勵(lì)活動(dòng))對即將要流失的用戶進(jìn)行挽留,于是針對用戶做了兩個(gè)流失預(yù)警模型,一個(gè)模型的精確率較高,另一個(gè)模型的召回率高,如果選擇精確率較高的模型,會(huì)漏掉更多的流失用戶,降低了挽回用戶量;但是如果選擇召回率高的,就會(huì)把更多的非流失用戶判斷為流失用戶,產(chǎn)生了更多的不必要成本,那么我們應(yīng)該如何選擇這兩個(gè)模型呢?

這個(gè)時(shí)候就要具體情況具體分析,如果是運(yùn)營經(jīng)費(fèi)比較寬裕,且挽留回一個(gè)用戶所帶來的價(jià)值是非必要支出的很多倍,那么就選擇召回率高的模型;如果是運(yùn)營經(jīng)費(fèi)有限,且挽回用戶的價(jià)值不那么高,那么就選擇精確率較高的模型。

F1-score是精確率和召回率兩指標(biāo)的一個(gè)綜合。

前面說過的所有指標(biāo)都是針對一個(gè)閾值的結(jié)果進(jìn)行計(jì)算的,ROC是將模型依次取不同的閾值,并將該閾值對應(yīng)的tpr和fpr繪制成一條曲線。

AUC是ROC的量化指標(biāo),AUC/ROC是最常用的一種評(píng)價(jià)方式,因?yàn)槠洳皇苷?fù)樣本比例的影響(影響其的兩個(gè)指標(biāo)主要是tpr和fpr,這兩個(gè)指標(biāo)表示模型分別在正樣本和負(fù)樣本上的表現(xiàn)情況,和兩者的比值無關(guān),所以評(píng)價(jià)結(jié)果也無關(guān))。

總結(jié)

以上是生活随笔為你收集整理的机器学习模型效果评估的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。