IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习流程(一)-评价指标 -> 正文阅读

[人工智能]机器学习流程(一)-评价指标

一、分类评估指标

  • 精度 Accuracy
  • 混淆矩阵 Confusion Matrix
  • 准确率(查准率) Precision
  • 召回率(查全率)Recall
  • Fβ Score
  • AUC Area Under Curve
  • KS Kolmogorov-Smirnov

1.1精度 Acc

预测正确的样本的占总样本的比例,取值范围为[0,1],取值越大,模型预测能力越好。

其中:

精度评价指标对平等对待每个类别,即每一个样本判对 (0) 和判错 (1) 的代价都是一样的。

问题: 精度有什么缺陷?什么时候精度指标会失效?

  • 对于有倾向性的问题,往往不能用精度指标来衡量。
  • 比如,判断空中的飞行物是导弹还是其他飞行物,很显然为了减少损失,我们更倾向于相信是导弹而采用相应的防护措施。此时判断为导弹实际上是其他飞行物与判断为其他飞行物实际上是导弹这两种情况的重要性是不一样的;
  • 对于样本类别数量严重不均衡的情况,也不能用精度指标来衡量。
  • 比如银行客户样本中好客户990个,坏客户10个。如果一个模型直接把所有客户都判断为好客户,得到精度为99%,但这显然是没有意义的。

对于以上两种情况,单纯根据Accuracy来衡量算法的优劣已经失效。这个时候就需要对目标变量的真实值和预测值做更深入的分析。

1.2混淆矩阵 Confusion Matrix

混淆矩阵又被称为错误矩阵,是除了ROC曲线和AUC之外的另一个判断分类好坏程度的方法。下面给出二分类的混淆矩阵:

预测值? ?正预测值? ?负
真实值? ?正True Positive(TP)False Negative(FN)
真实值? ?负False Positive(FP)True Negative(TN)

如上表,可以将结果分为四类:
真正例(True Positive, TP):真实类别为正例,预测类别为正例;
假负例(False Negative, FN):真实类别为正例,预测类别为负例;
假正例(False Positive, FP):真实类别为负例,预测类别为正例 ;
真负例(True Negative, TN):真实类别为负例,预测类别为负例;
?

进一步可以推出这些指标:
真正率(True Positive Rate, TPR),又名灵敏度(Sensitivity):被预测为正的正样本数 / 正样本实际数,即:
假负率(False Negative Rate, FNR):被预测为负的正样本数/正样本实际数,即:
假正率(False Positive Rate, FPR):被预测为正的负样本数/负样本实际数,即:
真负率(True Negative Rate, TNR),特异度(Specificity):被预测为负的负样本数/负样本实际数,即:

进一步,由混淆矩阵可以计算以下评价指标:

正确率(Accuracy):分类正确的样本数/所有样本数量,即:?

平均准确率(Average per-class accuracy):每个类别下的准确率的算术平均,即:?

?错误率:分类错误的样本/所有样本的数量,即:

?1.3准确率与召回率

准确率又称查准率,预测为真正例(TP)占真正例与伪真例(TP+FP)的百分比。
计算公式:
precision_{k}=\frac{TP}{TP+FP}

?召回率又称为查全率,预测为真正例(TP)占真正例与伪负例(TP+FN)的百分比
计算公式:
recall_{k}=\frac{TP}{TP+FN}

?1.4 F1 Score和Fβ Score

  • Fβ Score

Precision和Recall 是互相影响的,理想情况下肯定是做到两者都高,但是一般情况下Precision高、Recall 就低, Recall 高、Precision就低。为了均衡两个指标,我们可以采用Precision和Recall的加权调和平均(weighted harmonic mean)来衡量,即Fβ Score,公式如下:

β表示权重:

通俗的语言就是:β 越大,Recall的权重越大, 越小,Precision的权重越大。

由于Fβ Score 无法直观反映数据的情况,同时业务含义相对较弱,实际工作用到的不多。

其中,β>1时,查全率更有影响;β=1时,退化为标准的F1;β<1时,查准率更有影响。??

  • F1 Score

精确率(Precision)和召回率(Recall)的调和平均数,最大为1,最小为0
F_{1}=2\cdot \frac{precision\cdot recall}{precision+recall}

F1值的一般形式为差准率和查全率的调和均值。?是分类与信息检索中最常用的指标之一。

1.5?P-R曲线(Precision-Recall Curve)

P-R曲线又称为精确率(Precision)和召回率(Recall)变化的曲线
如果取多个不同的阈值,就可以得到多组(R,P)。将这些坐标点(R,P)绘制在坐标上,然后将各坐标点用曲线连起来,即可得到PR曲线。

图片

1.6?ROC 和 AUC

  • ROC曲线

真正率(TPR): 识别对了的正例(TP)占实际总正例的比例,实际计算值跟召回率相同。
计算公式:TPR =TP/(TP+ FN)
假正率(FPR): 识别错了的正例(FP)占实际总负例的比例。也可以说,误判的负例(实际是负例,没有判对)占实际总负例的比例。
计算式如下:FPR =FP/(FP+ TN)
以FPR为横轴,TPR为纵轴,绘制得到的曲线就是ROC曲线,一般来说,ROC曲线越靠近左上方越好。

图片

结论:ROC曲线越光滑,过拟合程度越小。绿线分类模型的整体性能要优于红线分类模型。

  • AUC

AUC 值为 ROC 曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。

AUC的物理意义:?

AUC的物理意义正样本的预测结果大于负样本的预测结果的概率。所以AUC反应的是分类器对样本的排序能力。另外值得注意的是,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。

1.7?KS(Kolmogorov-Smirnov)

KS值是在模型中用于区分预测正负样本分隔程度的评价指标,一般应用于金融风控领域。

与ROC曲线相似,ROC是以FPR作为横坐标,TPR作为纵坐标,通过改变不同阈值,从而得到ROC曲线。

而在KS曲线中,则是以阈值作为横坐标,以FPR和TPR作为纵坐标,ks曲线则为TPR-FPR,ks曲线的最大值通常为ks值。

为什么这样求KS值呢?我们知道,当阈值减小时,TPR和FPR会同时减小,当阈值增大时,TPR和FPR会同时增大。而在实际工程中,我们希望TPR更大一些,FPR更小一些,即TPR-FPR越大越好,即ks值越大越好。

可以理解TPR是收益,FPR是代价,ks值是收益最大。图中绿色线是TPR、蓝色线是FPR。

KS统计量计算公式:KS = abs(FPR - TPR).max()

1.8代码样例

## 混淆矩阵
from sklearn.metrics import confusion_matrix
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('混淆矩阵:', confusion_matrix(y_true, y_pred))
 
# 准确率(Accuracy)
from sklearn.metrics import accuracy_score
 
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('ACC:', accuracy_score(y_true, y_pred))
 
# 精确率(Precision)
# 召回率(Recall)
# F1-score
from sklearn import metrics
 
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('Precision', metrics.precision_score(y_true, y_pred))
print('Recall', metrics.recall_score(y_true, y_pred))
print('F1-score:', metrics.f1_score(y_true, y_pred))
 
# P-R曲线
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve
 
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
precision, recall, thresholds = precision_recall_curve(y_true, y_pred)
plt.plot(precision, recall)
 
# ROC曲线
from sklearn.metrics import roc_curve
 
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
FPR, TPR, thresholds = roc_curve(y_true, y_pred)
plt.title('ROC')
plt.plot(FPR, TPR, 'b')
plt.plot([0, 1], [0, 1], 'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')
 
# AUC
import numpy as np
from sklearn.metrics import roc_auc_score
 
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:', roc_auc_score(y_true, y_scores))
 
# KS值 在实际操作时往往使用ROC曲线配合求出KS值
from sklearn.metrics import roc_curve
 
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 1, 1]
FPR, TPR, thresholds = roc_curve(y_true, y_pred)
KS = abs(FPR - TPR).max()
print('KS值:', KS)

二、回归评估指标

1、平均绝对误差(MAE)

2、均方误差(MSE)

3、均方根误差

4、R2拟合优度

说明:R2最大值为1。R2的值越接近1,说明回归直线对观测值的拟合程度越好;反之,R2的值越小,说明回归直线对观测值的拟合程度越差。

三、聚类评价指标
?


原文链接:https://blog.csdn.net/weixin_41175904/article/details/115502452

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章           查看所有文章
加:2021-08-07 21:46:06  更:2021-08-07 21:46:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 17:45:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码