机器学习中的评价指标(分类指标评Accuracy、Precision、Recall、F1-score、ROC、AUC )(回归指标评价MSE、RMSE、MAE、MAPE、R Squared)
文章目錄
- 1.機器學習中的評價指標
- 基礎
- (一)分類指標評價
- 1.Accuracy
- 2.Precision、查準率
- 3.Recall、查全率
- 4.F1-score
- 舉個例子:
- 5.ROC
- 6.AUC
- (二)回歸指標評價
- 1.均方誤差(MSE)
- 2.均方根誤差(RMSE)
- 3.MAE(平均絕對誤差)
- 4.MAPE
- 5.R Squared
1.機器學習中的評價指標
簡要介紹精度、精確率、召回率、P-R曲線、F1 值、TPR、FPR、ROC、AUC等指標
基礎
(一)分類指標評價
在分類任務中,各指標的計算基礎都來自于對正負樣本的分類結果,用混淆矩陣表示為:
下面的表中P或者N都是代表了為預測出來的分類,分別代表了正類和負類,然后T或者F就代表了樣本實際的分類與預測是一樣的還是不一樣的,我覺得這樣去理解,應該就不會混了。
精度
1.Accuracy
定義:(TP+TN)/(TP+FN+FP+TN)
即所有分類正確的樣本占全部樣本的比例
精確率
2.Precision、查準率
定義:(TP)/(TP+FP)
即預測是正例的結果中,確實是正例的比例
分母為預測為正樣例的個數 ;分子為預測為實際正樣例被預測準的個數
from sklearn import metrics y_pred = [0,1,0,1] y_true = [0,1,1,1] print('Precision',metrics.precision_score(y_true,y_pred))
召回率
3.Recall、查全率
定義:(TP)/(TP+FN)
即所有正例的樣本中,被找出的比例
分母為實際正樣例的個數;分子為預測為實際正樣例被預測準的個數
4.F1-score
混合的度量,對不平衡類別非常有效
舉個例子:
我們實際有50個樣例,50個負樣例,然后經過分類器分類之后。50個正樣例中有45個預測為正樣例(預測準了),5個被預測成為了負樣例。50個負樣例中(預測錯誤),有40個被預測為了負樣例(預測準了),10個被預測為了正樣例(預測錯誤)。
根據這個例子,我們可以計算出:
5.ROC
受試者工作特征
定義:根據預測結果將預測樣本排序,最有可能為正樣本的在前,最不可能的在后,依次將樣本預測為正樣本,分別計算當前的TPR和FPR,繪制ROC曲線。
6.AUC
Area Under ROC Curve
定義:ROC曲線下的面積
(二)回歸指標評價
分類問題的評價指標是準確率,那么回歸算法的評價指標就是MSE,RMSE,MAE、R-Squared。下面一一介紹
1.均方誤差(MSE)
MSE (Mean Squared Error)叫做均方誤差。看公式
這里的y是測試集上的。
用 真實值-預測值 然后平方之后求和平均。
猛著看一下這個公式是不是覺得眼熟,這不就是線性回歸的損失函數嘛!!! 對,在線性回歸的時候我們的目的就是讓這個損失函數最小。那么模型做出來了,我們把損失函數丟到測試集上去看看損失值不就好了嘛。簡單直觀暴力!
# coding=utf-8 import numpy as np from sklearn import metrics y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0]) y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2]) # MSE print('MSE:',metrics.mean_squared_error(y_true, y_pred))源碼:
y_preditc=reg.predict(x_test) #reg是訓練好的模型 mse_test=np.sum((y_preditc-y_test)**2)/len(y_test) #跟數學公式一樣的2.均方根誤差(RMSE)
RMSE(Root Mean Squard Error)均方根誤差。
這不就是MSE開個根號么。有意義么?其實實質是一樣的。只不過用于數據更好的描述。
例如:要做房價預測,每平方是萬元(真貴),我們預測結果也是萬元。那么差值的平方單位應該是 千萬級別的。那我們不太好描述自己做的模型效果。怎么說呢?我們的模型誤差是 多少千萬?。。。。。。于是干脆就開個根號就好了。我們誤差的結果就跟我們數據是一個級別的可,在描述模型的時候就說,我們模型的誤差是多少萬元。
源碼:
MAE
3.MAE(平均絕對誤差)
平均絕對誤差,其能更好地反映預測值與真實值誤差的實際情況
源碼:
4.MAPE
平均絕對百分比誤差(Mean Absolute Percentage Error)
范圍[0,+∞),MAPE 為0%表示完美模型,MAPE 大于 100 %則表示劣質模型。
可以看到,MAPE跟MAE很像,就是多了個分母。
注意點:當真實值有數據等于0時,存在分母0除問題,該公式不可用!
import numpy as np from sklearn import metrics # MAPE需要自己實現 def mape(y_true, y_pred):return np.mean(np.abs((y_pred - y_true) / y_true))y_true = np.array([1.0, 5.0, 4.0, 3.0, 2.0, 5.0, -3.0]) y_pred = np.array([1.0, 4.5, 3.8, 3.2, 3.0, 4.8, -2.2]) # MAPE print('MAPE:',mape(y_true, y_pred))5.R Squared
上面的幾種衡量標準針對不同的模型會有不同的值。比如說預測房價 那么誤差單位就是萬元。數子可能是3,4,5之類的。那么預測身高就可能是0.1,0.6之類的。沒有什么可讀性,到底多少才算好呢?不知道,那要根據模型的應用場景來。
看看分類算法的衡量標準就是正確率,而正確率又在0~1之間,最高百分之百。最低0。很直觀,而且不同模型一樣的。那么線性回歸有沒有這樣的衡量標準呢?答案是有的。
那就是R Squared也就R方
懵逼(X2)
慢慢解釋。其實這個很簡單。
上面分子就是我們訓練出的模型預測的所有誤差。
下面分母就是不管什么我們猜的結果就是y的平均數。(瞎猜的誤差)
那結果就來了。
如果結果是0,就說明我們的模型跟瞎猜差不多。
如果結果是1。就說明我們模型無錯誤。
如果結果是0-1之間的數,就是我們模型的好壞程度。
如果結果是負數。說明我們的模型還不如瞎猜。(其實導致這種情況說明我們的數據其實沒有啥線性關系)
源碼:
有些地方回顧不到位,請指教了哈!喜歡的小伙伴就給點個贊吧。
所有巧合的是要么是上天注定要么是一個人偷偷的在努力。
公眾號
專注于學習資源、筆記分享,歡迎關注。我們一起成長,一起學習。一直純真著,善良著,溫情地熱愛生活,,如果覺得有點用的話,請不要吝嗇你手中點贊的權力,謝謝我親愛的讀者朋友。
It’s never too late to start over,Even at 3 a.m. on a Saturday,It can also be a new starting point for you。Einstein said:“Time is an illusion.”
重新開始永遠都不晚,就算是周六的凌晨3點,也可以成為你新的起點。愛因斯坦說了:“時間是一種幻覺”
2020年4月12日于重慶城口
好好學習,天天向上,終有所獲
總結
以上是生活随笔為你收集整理的机器学习中的评价指标(分类指标评Accuracy、Precision、Recall、F1-score、ROC、AUC )(回归指标评价MSE、RMSE、MAE、MAPE、R Squared)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 属性中的group设置没用_OrCAD中
- 下一篇: PCL点云处理之点云质心的三种计算方法(