【机器学习02--模型评估】

机器学习 --- 模型评估

你需要得到更好的模型,怎么判断模型更好呢?

在机器学习任务中,通常将训练集上的误差叫做训练误差或经验误差,在新样本上的误差叫做泛化误差,我们肯定是希望模型或者得到的学习器的训练误差越小越好,但是一般情况下,我们并不知道新的样本,所以我们只能关注于经验误差,但是经验误差就算是0,也不能保证泛化误差很小,相反,如果泛化误差很小,一般说明对样本中不重要的特征也记录下来了,一般就会导致过拟合。那么我们应该怎么根据训练集来判断模型之间的好坏呢?就需要一套评价标准。

你需要先得到训练集和测试集,怎么划分它们呢?

一帮情况下,我们会将得到的数据划分为训练集和测试集,通过测试集上的性能来近似评估训练出的模型的泛化性能,因为最终训练出的模型的参数和训练集有关,所以不同的划分方式,可能就会导致得到的模型参数不同,从而导致泛化性能也不同,下面是几种常用的划分训练集和测试集的方法。

  • 留出法:直接将数据集划分为互斥的两个集合,一般70%-80%作为训练集,剩余的作为测试集,并且要注意的是,为了让训练的模型在整个数据集上的偏差较小,一般训练集和测试集中正负样本的数目是相同的,也就是正样本占50%,负样本占50%。
  • 交叉验证法:这种方法将整个数据集划分为互斥的大小相似的k个子集,然后去其中一个作为验证集,一般k取10。若另k=m(样本数量),则每一个子集包含一个样本。这种划分的好处是,使得在训练集上训练的模型和数据集上想要训练出的模型较为相似,但是会导致需要训练的模型很多,计算量很大(因为在k次划分的时候,需要重复p次取不同的训练集训不同的模型)。
  • 自助法 :每一次从数据集D中随机抽一个,假设数据集D有m个样本,那么该样本被抽到的概率为 1 m \frac{1}{m} m1,不被抽到的概率为 ( 1 − 1 m ) (1-\frac{1}{m}) (1−m1),抽取m次,则一个样本不被抽到的概率为 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1−m1)m,当m趋于无穷的时候,一个样本不被抽到的概率近似为 1 e \frac{1}{e} e1(因为m是整数,所以先换元,再洛必达,便得到极限值),即一个样本不被抽到的概率近似为0.368,自助法在数据集较小,难以有效划分训练集和测试集时比较有效,但是自助法产生的数据集改变了初始数据集的分布,会引入估计偏差。

训练完模型之后,在验证集上测试的时候,用什么指标衡量好坏呢?

在衡量一个模型的好坏的时候,需要借助多种性能度量方法,一般有以下几种:
错误率与精度 ,这个完全就是按照你从测试集中的样本总数中,预测的错误的数量除以总数,从而得到错误率。
查准率、查全率与F1。

查准率,就是在自己预测的所有的正样本中,预测正确的正样本的比率。

查全率,就是在所有的正样本中,预测的正样本的数量与所有正样本的数量的比率。
F1 ,就是跟这两有关的一个函数
P-R曲线 通过将查准率作为纵轴,查全率作为横轴画的图。
ROC的纵轴为真正利率,横轴为假正利率。AUC为ROC下的面积。

云里雾里,考察的重点来哩!

ROC曲线的含义与作用

ROC曲线(Receiver Operating Characteristic Curve) 是一种常用于二分类模型的评价工具,用于可视化模型在不同分类阈值下的表现。ROC曲线描绘了 假正例率(FPR) 和 真正例率(TPR) 之间的关系,帮助我们评估模型在各种分类阈值下的分类能力。

这里提到的真正例率表示所有真样本中,预测出的正的比例,假正例率为所有假的样本中,预测出的正的比例。你看,ROC就是不一样,它既考虑正样本的分类能力,又考虑负样本下的预测分类能力,不像其他,只考虑一个。

AUC的定义

AUC(Area Under the Curve)是ROC(Receiver Operating Characteristic)曲线下的面积,衡量的是模型在不同分类阈值下的表现。AUC值越大,表示模型对正负类样本的区分能力越强。具体来说,AUC的值介于0和1之间,越接近1表示模型越好;AUC为0.5时表示模型表现与随机猜测相似。
AUC实际上刻画的是模型对正负类样本的整体区分能力,不受具体分类阈值的影响 。因此,AUC越高,表示模型在 几乎所有的分类阈值下 都能更好地区分正类和负类。

  • AUC = 1:完美分类器,所有正类样本的分数都大于负类样本的分数。
  • AUC = 0.5:随机分类器,模型无法有效地区分正负类,等同于随机猜测。
  • AUC < 0.5 :模型性能很差,比随机猜测还要差。
    AUC通过对ROC曲线下的面积计算得出,而ROC曲线是由不同的分类阈值下的 假正例率(FPR)真正例率(TPR) 组成的。

计算AUC的过程

AUC的计算可以通过以下步骤来实现:

  1. 计算模型的输出概率
    模型通常会输出每个样本属于正类的概率,而不是直接给出分类标签。AUC基于这些概率来评估模型的区分能力。
  2. 将样本按预测的概率排序
    将所有测试样本按模型预测的概率从高到低排序,较高的概率表示模型更倾向于该样本是正类。
  3. 计算真正例率和假正例率
    对于每个可能的阈值(即每个预测概率),计算TPR和FPR:
    TPR(召回率) = True Positives True Positives + False Negatives \frac{\text{True Positives}}{\text{True Positives} + \text{False Negatives}} True Positives+False NegativesTrue Positives
    FPR = False Positives False Positives + True Negatives \frac{\text{False Positives}}{\text{False Positives} + \text{True Negatives}} False Positives+True NegativesFalse Positives
    然后,绘制ROC曲线,横轴是FPR,纵轴是TPR。
  4. 计算ROC曲线下的面积(AUC)
    AUC值即为ROC曲线下的面积。常用的计算方法包括 梯形法则(Trapezoidal Rule) 来近似计算AUC。

AUC的实现

python 复制代码
import numpy as np
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

# 假设y_true是真实标签,y_scores是模型预测的概率值
y_true = np.array([0, 0, 1, 1])  # 真实标签(0表示负类,1表示正类)
y_scores = np.array([0.1, 0.4, 0.35, 0.8])  # 模型预测的概率值

# 计算ROC曲线的FPR和TPR
fpr, tpr, thresholds = roc_curve(y_true, y_scores)

# 计算AUC
roc_auc = auc(fpr, tpr)

# 输出AUC
print(f'AUC: {roc_auc}')

# 绘制ROC曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, 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 (ROC)')
plt.legend(loc="lower right")
plt.show()

基础面试题

  • 有哪些评价指标?
    错误率、精度、查准率、查全率(Recall、查全率)、F1分数、ROC、AUC、PR曲线
    AUC是ROC曲线的面积,衡量的是模型的分类能力,值越大表示模型越好,AOC等于0.5,相当于随机判断模型。
  • AOC的计算方式?
    ROC曲线下的面积,即梯度的面积公式
相关推荐
兰亭妙微28 分钟前
用户体验的真正边界在哪里?对的 “认知负荷” 设计思考
人工智能·ux
13631676419侯34 分钟前
智慧物流与供应链追踪
人工智能·物联网
TomCode先生36 分钟前
MES 离散制造核心流程详解(含关键动作、角色与异常处理)
人工智能·制造·mes
zd2005721 小时前
AI辅助数据分析和学习了没?
人工智能·学习
johnny2331 小时前
强化学习RL
人工智能
乌恩大侠1 小时前
无线网络规划与优化方式的根本性变革
人工智能·usrp
放羊郎1 小时前
基于萤火虫+Gmapping、分层+A*优化的导航方案
人工智能·slam·建图·激光slam
王哈哈^_^1 小时前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
SEOETC1 小时前
数字人技术:虚实交融的未来图景正在展开
人工智能
boonya2 小时前
从阿里云大模型服务平台百炼看AI应用集成与实践
人工智能·阿里云·云计算