衡量模型泛化能力的评价标准

本文介绍了机器学习中常用的性能度量方法,包括错误率、精度、查全率、查准率、F1值、ROC与AUC、代价敏感错误率等,并详细解释了它们的应用场景及计算方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

性能度量:衡量模型泛化能力的评价标准。

模型的“好坏”是相对的,他不仅取决于算法和数据,还取决于任务需求。

回归任务常用的性能度量是“均方误差”。

1. 错误率与精度

错误率与精度是分类任务中最常用的两种性能度量。既适用于二分类,也适用于多分类。

 错误率:分类错误的样本数占总样本数的比例。
 精度 : 分类正确的样本数占总样本数的比例。

 精度 + 错误率 = 1 

          假设,总的样本数为m个,我们对这m个样本进行预测,其中预测对了的样本有p个,预测错的样本有n个(p+n = m),则:
          错误率 = n/m
          精度  = p/m

2. 查全率、查准率、F1

   当任务有所偏好时,错误率与精度便不能满足任务的需求。比如我们关心的是“检索出来的信息中有多少是用户感兴趣的”或者“用户感兴趣的信息有多少被检索出来了”。此时就需要查全率、查准率、F1值来进行模型的性能度量。

   假设,总的测试样本有m个,其中正样本有z个,负样本有f个。

   查全率:对这m个样本进行预测,其中z个正样本中有zm个被预测对。查全率 = zm / z
   查准率: 对这m个样本进行预测,预测的结果中有ym个是正样本,ym个样本中有y个是z的,则:查准率 = y / ym
   ![这里写图片描述](https://img-blog.youkuaiyun.com/20170323192002648?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
   上图为混淆矩阵,TP + FN + FP + TN = 样例总数。
   对应的查准率P和查全率R分别定义为:
   ![这里写图片描述](https://img-blog.youkuaiyun.com/20170323192302192?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
  查准率和查全率是一对矛盾的度量。
  查准率越高时,查全率往往偏低。而查全率越高时,查准率往往偏低。

P-R曲线:(查准率-查全率曲线)
这里写图片描述

P-R曲线是以查全率为横轴,以查准率为纵轴的二维坐标图。

P-R曲线的建立过程:
根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在后面的则是学习器任务“最不可能”是正例的样本。按此排序,逐个把样本作为正例进行预测,则每次可以计算出当前的查全率和查准率。以此为纵轴和横轴作图,便得到了查全率-查准率曲线,即P-R曲线。

P-R曲线作用:
用来对比不同学习器的好坏的。例如上图2.3中学习器A包含学习器C,则说学习器A优于学习器C。但当两个学习器的P-R曲线有交叉时,难以判断那个学习器较好。通常的做法是计算每个学习器曲线所包含的面积,比较面积的大小。但这值不太容易估算。于是人们便使用“平衡点”(简称BEP)这一度量,即“查准率 = 查全率”时的取值。例如上图中的平衡点可判定,学习器A优于学习器B。

F1值:
F1值为查全率和查准率的协调平均值,
这里写图片描述

在一些应用中,对查全率和查准率的重视程度有所不同,F1度量的一般形式能让我们表达出对查全率和查准率的的不同偏好。
![这里写图片描述](https://img-blog.youkuaiyun.com/20170323200924929?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

其中β > 0 度量的查全率对查准率的相对重要性。β = 1 时便为标准的F1。β > 1时查全率有更大的影响,β < 1时查准率有更大的影响。

当我们在多个二分类混淆矩阵上综合考虑查全率和查准率时有两种方法:
第一种,先在各混淆矩阵上分别计算出查全率和查准率,再计算平均值。这样就得到了“宏查全率”、“宏查准率”、以及“宏F1”
![这里写图片描述](https://img-blog.youkuaiyun.com/20170323201635647?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnZ5dWVydnY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

第二种,先将各混淆矩阵的对应元素进行平均,再基于这些平均值进行计算,得出“微查全率”“微查准率”以及“微F1”,
这里写图片描述
这里写图片描述

3.ROC与AUC

ROC曲线与AUC常被用来评价一个二分类器的优劣。

和P-R曲线类似,“ROC曲线”是根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要的量值(真正例率TRP和假正例率FPR),分别以他们作为横、纵坐标作图,就得到了“ROC曲线”。

这里写图片描述

这里写图片描述

    上图(a)中的虚线表示“随机猜测”模型。在(0,1)点处,即FPR=0, TPR=1,这意味着FN = 0,并且FP = 0。这是一个完美的分类器,它将所有的样本都正确分类。在(1,0)点处,即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。在(0,0)点处,即FPR=TPR=0,即FP = TP =0,可以发现该分类器预测所有的样本都为负样本。在(1,1)点处,分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。

现实任务中通常是利用有限个测试样本来绘制ROC图的,所以仅能或得有限个(真正例率TRP和假正例率FPR)坐标对,绘制出的图如上图中的(b)。

ROC曲线绘制过程:

   给定m个正例和n个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设置为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为0,在坐标(0,0)出标记一个点。然后,将分类的阈值依次设置为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记的坐标为(x,y),当前若为真正例,则对应的标记点的坐标为(x, y+1/m);若当前为假正例,则对应标记点的坐标为(x+1/n, y), 然后用线段连接相邻的点即可。

学习器比较:

  若一个学习器A的ROC曲线包含另外一个学习器B的ROC曲线,则认为学习器A的性能优于学习器B。
  若两者的ROC曲线相交,则需要对各自ROC曲线下得面积(即AUC)进行比较。

AUC可通过对ROC曲线下各部分面积求和而得。
这里写图片描述

4.代价敏感错误率与代价曲线

不同类型的错误所造成的后果不同。

为权衡不同类型错误造成的不同损失,可为错误赋予“非均等代价”。

以二分类为例,可设定一个“代价矩阵”
这里写图片描述

表中cost10 表示将第1类错分为第0类的代价,cost01同样,表示将第0类错分为第1类的代价。此二分类也可拓展为多分类costij表示将第i类错分为第j类的代价。

前面的性能度量都默认的假设了均等代价,所有错误率是直接计算错误的次数,并没有考虑不同错误会造成的不同的后果。在非均等代价下,我们希望的不再是简单地最小化错误次数,而是希望最小化“总体代价”。
这里写图片描述
上式中,D+和D-分别表示样例集D中的正例子集和反例子集。

在非均等代价下,ROC曲线不能直接反应学习器期望的总体代价,而“代价曲线”则可达到该目的。
代价曲线图的横轴是取值为[0,1]的正例概率代价:
这里写图片描述
上式中p是样例为正例的概率。

纵轴是取值为[0,1]的归一化代价:

这里写图片描述

FNR表示假正例率,FNR = 1 - TPR

代价曲线的绘制:

   ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上的坐标为(TPR,FPR),则可相应的计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下面的面积即表示了该条件下得期望总体代价。如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价。

这里写图片描述

参考书籍:周志华《机器学习》第2.3节

### 模型泛化能力的定义 模型泛化能力是指其在面对未见过的数据时的表现能力,即模型能够适应新情景并做出合理预测的能力[^4]。这种能力可以通过泛化误差来衡量,它是模型在未知数据上的代价函数值 $J_{\text{未知}}(\theta)$,反映了模型的实际性能。 然而,在实际操作中,由于无法直接获取未知数据,通常通过交叉验证等技术间接评估模型泛化能力。这种方法通过对训练集进行划分,模拟未知数据环境,从而更真实地反映模型在未来场景中的表现[^4]。 --- ### 泛化能力的重要性 #### 1. **应对未知数据** 机器学习的核心目标之一是构建能够在未知环境中有效运行的模型。如果模型仅能很好地拟合训练数据而无法推广到新的样本,则该模型的价值有限甚至无意义。因此,良好的泛化能力对于确保模型在现实世界中的适用性至关重要[^4]。 #### 2. **减少过拟合风险** 当模型过于复杂或者训练时间过长时,可能会过度依赖于训练数据的具体细节,导致对噪声或异常值的高度敏感。这种情况称为过拟合。具备较强泛化能力模型可以更好地平衡偏差与方差之间的关系,降低过拟合的风险[^3]。 #### 3. **提高决策可靠性** 无论是自然语言处理还是计算机视觉领域,都需要依靠高质量的预测结果来进行后续的操作或判断。只有拥有良好泛化特性的算法才能持续提供稳定且可靠的输出,这对于工业级应用尤为重要[^1]。 #### 4. **支持跨域迁移** 随着多任务学习和元学习的发展,越来越多的研究关注如何让单一模型适用于多种不同但相关联的任务。此时,强大的泛化机制不仅有助于单个任务内的准确性提升,还促进了知识从源领域向目标领域的转移效率改善[^3]。 ```python # 示例代码展示简单的线性回归模型训练过程, # 并说明如何通过正则化手段增强泛化能力。 from sklearn.linear_model import Ridge import numpy as np X_train, y_train = np.random.rand(100, 5), np.random.rand(100) model = Ridge(alpha=1.0) # 使用L2正则化防止过拟合 model.fit(X_train, y_train) print("Model coefficients:", model.coef_) ``` --- ### 总结 综上所述,模型泛化能力不仅是评价其优劣的重要指标,也是决定其实用价值的关键因素之一。为了获得更好的泛化效果,研究者们不断探索诸如元学习、多任务学习以及基于物理约束的知识注入等多种策略[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值