机器学习中常用的metrics
文章目录
- 0.关于TP、TN、FP、FN
- 1.分类问题
- 1.1Accuracy
- 1.2Precision(P)
- 1.2.1二分类中的precision
- 1.2.2Precision at k (P@k):多分类中的precision
- 1.2.3Multi-Label Classfication
- 1.3Recall (R)
- 1.4F1 score (F1)
- 1.4.1二分类中的F1
- 1.4.2多分类中的F1:weighted_f1:
- 1.5Area under the ROC (Receiver Operating Characteristic) curve or simply AUC (AUC)
- 1.5.1ROC
- 1.5.2AUC
- 1.6Log loss
- 1.6.1二分类或多分类
- 1.6.2Multi-Label Classfication
- 1.7Quadratic Weighted Kappa(QWK)
- 1.8Matthew’s Correlation Coefficient (MCC)
- 2.回归问题
- 2.1Mean absolute error MAE
- 2.2Mean squared error (MSE)
- 2.3Root mean squared error (RMSE)
- 2.4Mean squared logarithmic error (MSLE)
- 2.5Root mean squared logarithmic error (RMSLE)
- 2.6Mean percentage error (MPE)
- 2.7Mean absolute percentage error (MAPE)
- 2.8R^2
0.关于TP、TN、FP、FN
TP:预测结果为positive,实际也为positive
TN:预测为negative,实际也为negative
FP:预测结果为positive,实际为negative
FN:预测结果为negative,实际positive
1.分类问题
1.1Accuracy
分类正确的数量除以总数。最简单最直观的metric,可用于均衡数据集的二分类问题。但是对于非均衡比例极端的二分类数据集,则毫无意义。
另一种计算方式:
A c c u r a c y S c o r e = ( T P + T N ) / ( T P + T N + F P + F N ) Accuracy Score = (TP+TN)/(TP+TN+FP+FN) AccuracyScore=(TP+TN)/(TP+TN+FP+FN)
1.2Precision(P)
1.2.1二分类中的precision
所有预测结果为positive中真实值也是positive所占的比例
P r e c i s i o n = T P / ( T P + F P ) Precision = TP/(TP+FP) Precision=TP/(TP+FP)
1.2.2Precision at k (P@k):多分类中的precision
宏平均精确度(Macro averaged precision)、微平均精确度(Micro averaged precision)和加权精确度(Weighted precision)。
宏平均精确度:对所有类别分别计算精确度,然后对它们求平均。
微平均精确度:计算每个类别的真阳性和假阳性,然后使用它们来计算总体精确度。
加权精确度:与宏平均精确度相同,但在这种情况下,它是根据每个类别中的项目数量进行加权平均的。
1.2.3Multi-Label Classfication
- Precision at k
def pk(y_true,y_pred,k):if k == 0:return 0y_pred = y_pred[:k]pred_set = set(y_pred)true_set = set(y_true)common_values = pred_set.intersection(true_set)#求交集return len(common_values)/len(y_pred[:k])
- Average Precision at k
def apk(y_true,y_pred,k):pk_values = []for i in range(1,k+1):pk_values.append(pk(y_true,y_pred,i))if len(pk_values) == 0:return 0return sum(pk_values)/len(pk_values)
- Mean average precision at k
def mapk(y_true,y_pred,k):apk_values =[]for i in range(len(y_true)):apk_values.append(apk(y_true[i],y_pred[i],k=k))return sum(apk_values)/len(apk_values)## 标题
1.3Recall ®
所有真实类别为positive中被正确预测到的比例
R e c a l l = T P / ( T P + F N ) Recall = TP/(TP+FN) Recall=TP/(TP+FN)
1.4F1 score (F1)
1.4.1二分类中的F1
当遇到非均衡数据集时,采用acc作为评价指标显然不是一种好的选择,此时就可以采用f1分数。
将精度(precision)和召回率(recall)联系起来,定义为精度和召回率的加权平均值:
F 1 = 2 P R / ( P + R ) F1 = 2PR/(P+R) F1=2PR/(P+R)
或者
F 1 = 2 T P / ( 2 T P + F P + F N ) F1 = 2TP/(2TP+FP+FN) F1=2TP/(2TP+FP+FN)
1.4.2多分类中的F1:weighted_f1:
对每个类别分别求F1,最后加权平均。
1.5Area under the ROC (Receiver Operating Characteristic) curve or simply AUC (AUC)
1.5.1ROC
ROC曲线是一条概率曲线,它展示了分类模型在不同阈值下的真阳性率(TPR)和假阳性率(FPR)之间的关系。其中:
T P R = T P / ( T P + F N ) TPR = TP/(TP+FN) TPR=TP/(TP+FN)
F P R = F P / ( T N + F P ) FPR = FP/(TN+FP) FPR=FP/(TN+FP)
提高阈值会降低假阳性率(FPR),但同时也会降低真阳性率(TPR),降低阈值则相反。因此ROC曲线可以用来根据实际情况选取最佳阈值。通常来说,在ROC曲线的左上方的点(y轴是TPR),会是最佳阈值点。
1.5.2AUC
AUC则是ROC曲线下方的面积,它衡量了分类模型对正负样本区分能力的一个指标。AUC的取值范围在0.5和1之间,值越大表示模型越能够区分正负样本
ROC和AUC经常用于非均衡二分类数据。
关于AUC的具体解释:
假设AUC为0.8,从数据集中随机选择一个正样本和一个负样本,那么正样本将以0.8的概率排名高于负样本。"排名高于"指的是分类模型为每个样本分配一个概率得分,表示该样本属于正类的概率。如果一个样本的得分高于另一个样本,那么可以说这个样本在模型中的排名高于另一个样本。在这个例子中,如果有正样本以0.8的概率排名高于负样本,这意味着正样本在模型中被分配了更高的概率得分,即模型认为它更可能属于正类。
1.6Log loss
1.6.1二分类或多分类
对数损失衡量了模型预测概率与真实标签之间的差异。对于数据集中的多个样本,所有样本的对数损失就是所有单个对数损失的平均值。
需要注意的是,对数损失对于错误预测或预测偏差较大的情况会给予较高的惩罚。也就是说,如果模型对某个样本的预测非常确定,但预测结果却非常错误,那么对数损失会给予较大的惩罚。
L o g L o s s = − 1.0 ∗ ( t a r g e t ∗ l o g ( p r e d i c t i o n ) + ( 1 − t a r g e t ) ∗ l o g ( 1 − p r e d i c t i o n ) ) Log Loss = -1.0*(target*log(prediction)+(1-target)*log(1-prediction)) LogLoss=−1.0∗(target∗log(prediction)+(1−target)∗log(1−prediction))
其中target是0 or 1,prediction是计算出来的probability。
1.6.2Multi-Label Classfication
将真实标签转换为二进制格式,每一列代表一个标签。然后,我们对每一列分别计算对数损失。
1.7Quadratic Weighted Kappa(QWK)
二次加权kappa(Quadratic Weighted Kappa,QWK)是一种高级的度量方法,也被称为Cohen’s kappa。它用于衡量两个“评分”之间的“一致性”。这些评分可以是0到N之间的任意实数,预测值也在同一范围内。一致性可以定义为这些评分彼此接近的程度。因此,它适用于具有N个不同类别/类的分类问题。如果一致性高,则得分接近1.0。如果一致性低,则得分接近0。
1.8Matthew’s Correlation Coefficient (MCC)
M C C = T P ∗ T N − F P ∗ F N [ ( T P + F P ) ∗ ( F N + T N ) ∗ ( F P + T N ) ∗ ( T P + F N ) ] ( 0.5 ) MCC =\frac{TP*TN-FP*FN}{[(TP+FP)*(FN+TN)*(FP+TN)*(TP+FN)]^(0.5)} MCC=[(TP+FP)∗(FN+TN)∗(FP+TN)∗(TP+FN)](0.5)TP∗TN−FP∗FN
MCC的取值范围为-1到1。当MCC为1时,表示分类完全正确;当MCC为-1时,表示分类完全错误;当MCC为0时,表示分类效果与随机分类相同。
2.回归问题
2.1Mean absolute error MAE
- Error = True Value - Predicted Value
- Absolute Error = Abs(True Value - Predicted Value)
- MAE:Mean Absolute Error
def MAE(y_true,y_pred):error = 0for yt,yp in zip(y_true,y_pred):error += np.abs(yt-yp)return error/len(y_true)
2.2Mean squared error (MSE)
S q u a r e d E r r o r = ( T r u e V a l u e − P r e d i c t e d V a l u e ) 2 Squared Error = (True Value - Predicted Value)^2 SquaredError=(TrueValue−PredictedValue)2
def MSE(y_true,y_pred):error = 0for yt,yp in zip(y_true,y_pred):error += (yt-yp)**2return error/len(y_true)
2.3Root mean squared error (RMSE)
R M S E = S Q R T ( M S E ) RMSE = SQRT(MSE) RMSE=SQRT(MSE)
2.4Mean squared logarithmic error (MSLE)
def MSLE(y_true,y_pred):error = 0for yt,yp in zip(y_true,y_pred):error += (np.log(1+yt)-np.log(1+yp))**2return error/len(y_true)
2.5Root mean squared logarithmic error (RMSLE)
2.6Mean percentage error (MPE)
P e r c e n t a g e E r r o r = ( ( T r u e V a l u e − P r e d i c t e d V a l u e ) / T r u e V a l u e ) ∗ 100 Percentage Error = ((True Value - Predicted Value)/True Value)*100 PercentageError=((TrueValue−PredictedValue)/TrueValue)∗100
def MPE(y_true,y_pred):error = 0for yt,yp in zip(y_true,y_pred):error += (yt-yp)/ytreturn error/len(y_true)
2.7Mean absolute percentage error (MAPE)
def MAPE(y_true,y_pred):error = 0for yt,yp in zip(y_true,y_pred):error += np.abs(yt-yp)/ytreturn error/len(y_true)
2.8R^2
R 2 = 1 − ∑ i = 1 N ( y t i − y p i ) 2 ∑ i = 1 N ( y t i − y t m e a n ) R^2 = 1 - \frac{\sum_{i=1}^{N}(y_{t_{i}}-y_{p_{i}})^2}{\sum_{i=1}^{N}(y_{t_{i}}-y_{t_{mean}})} R2=1−∑i=1N(yti−ytmean)∑i=1N(yti−ypi)2
def r2(y_true,y_pred):mean_true_value = np.mean(y_true)numerator = 0denominator = 0for yt,yp in zip(y_true,y_pred):numerator += (yt-yp)**2denominator += (yt-mean_true_value)**2ratio = numerator/denominatorreturn 1-ratio
机器学习中常用的metrics相关推荐
- AI:人工智能概念之机器学习中常用算法的思维导图集合(非常经典、建议收藏)之详细攻略
AI:人工智能概念之机器学习中常用算法的思维导图集合(非常经典.建议收藏)之详细攻略 目录 机器学习算法的思维导图集合 1.ML算法思维图 2.ML算法思维导图 相关文章:ML/DL:关于算法模型的选 ...
- 机器学习中常用的优化算法:
http://blog.csdn.net/losteng/article/details/50993911 有知识点和代码的实现过程. 机器学习中常用的优化算法: 1.梯度下降法 2.牛顿法和拟牛顿法 ...
- 机器学习百页书:机器学习中常用到的一些数学符号
一本精简的机器学习入门手册.机器学习百页书<机器学习精讲>,人工智能的核心是机器学习,本书囊括机器学习的精髓,系统而精炼地讲解机器学习的基本原理.本书英文版一经推出,就长期位于亚马逊机器学 ...
- Dataset:机器学习中常用数据集下载链接集合之详细攻略
Dataset:机器学习中常用数据集下载链接集合之详细攻略 目录 机器学习中常用数据集下载链接集合之详细攻略 sklearn.datasets数据集所有csv文件集合 seaborn-data数据集所 ...
- 机器学习中常用的评价指标(Performance Measures)
机器学习中常用的评价指标 混淆矩阵 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示.具体评价指标有总体精度.制图精度.用户精度等,这些精度指标从不同的侧面反映了图像分类 ...
- 机器学习中常用的核函数
在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类: 1) 线性: 2) 多项式: 3) Radial basis function: 4) Sigmoid: 举例:有一个一维 ...
- 机器学习中常用的基本概念
目录 1. 机器学习定义 2. 机器学习中的属性与特征 3.误差 4.过拟合与欠拟合 4.1 过拟合 4.2欠拟合 5.交叉验证 5.1交叉验证基本思想 5.2 交叉验证训练过程 6.调参 7. 机器 ...
- 收藏 | 机器学习中常用的5种回归损失函数
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:机器猫 AI博士笔记系列推荐 周志华<机器学习>手推 ...
- 入门|机器学习中常用的损失函数你知多少?
本文作者将常用的损失函数分为了两大类:分类和回归.然后又分别对这两类进行了细分和讲解,其中回归中包含了一种不太常见的损失函数:平均偏差误差,可以用来确定模型中存在正偏差还是负偏差. 机器通过损失函数进 ...
- 机器学习中常用的优化方法
写在前面 在看斯坦福的次cs231n课程,里面提到一些机器学习的基础知识,比如损失函数,优化算法,正则化形式等等.然后有一些知识也都记不起来了,索性就在博客上再回顾一遍顺便记录下来日后方便查阅.今天就 ...
最新文章
- zip unzip 命令
- How does “Coded UI test” finds a control ?
- Spring Cloud Alibaba:一步一步教你搭建Nacos集群
- Promise 到底是什么?看这个小故事
- Visual C++ 编译器选项 /MD、/ML、/MT、/LD
- 腾讯安全携手华夏银行“论道”金融风控,传递在线反欺诈干货建议
- wxpython pypi_Python iwx包_程序模块 - PyPI - Python中文网
- Spring中获取request的方法及其线程安全性分析
- SAP 录屏BDC使用—实例
- VS2019 无法打开源文件“stdafx.h“ 问题
- ALFA缺陷检测软件外观检测自学习人工智能软件
- CSS实现3D菜单效果【每日一题】
- 树莓派+PHP+Mairadb数据库读取DHT11
- [NOIP模拟赛]棋子游戏
- C++ delete陷阱
- Java 学习笔记(二十一)
- 两个小时倒计时计时器
- OpenAI 宣布将对战 DOTA2 世界冠军 OG,最终决战! 1
- Linux-看完这篇Linux基本的操作就会了(转)
- Json.NET使用入门(二)【反序列化】