机器学习模型性能评估(三):代价曲线

本文深入探讨了基于非均等损失代价的模型性能评估方法,包括代价敏感错误率和代价曲线,详细解析了如何在不同分类错误损失代价下评估模型泛化能力。

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

上文详细介绍了P-R曲线与ROC曲线的性能评估方法,P-R曲线与ROC曲线是基于均等损失代价的模型性能评估方法,本文承接上文,详细介绍基于非均等损失代价的模型性能评估方法,并对已介绍的性能评估方法进行了总结。

                                                                                       2.4 代价敏感错误率


前面介绍的性能评估方法都默认了一种情况,即学习模型把正样本误分为负样本的损失代价与负样本误分为正样本的损失代价相同,实际情况可能是不同类型的分类错误造成的损失代价不同。

比如医疗诊断中,若一个正常人误诊断为癌症病人,那么会给测试者造成了很大的心理压力以及花费很长时间去做进一步的检查;若一个癌症病人误诊断为正常人,那么病人很可能因此丧失生命,显然,癌症病人误诊断为正常人的损失代价要大的多。

若在评价学习模型性能时考虑不同类分类错误所造成不同损失代价的因素时,称为代价敏感错误率评估方法。

假设训练数据集D包含正例子集D+和负例子集D-。若分类错误的损失代价相同,即均等代价。代价矩阵如下:

                                                                       

模型的代价敏感错误率:

                                                

分类错误的损失代价不相同,即非均等代价。如下图,其中costij表示将第i类样本预测为第j类样本的代价。

若预测正确,则代价为0,即costii = 0。一般用1代表正类,0代表负类。

代价矩阵如下:

                                                                

模型的代价敏感错误率:

                                            

该定义是计算模型损失代价的一般化,若分类错误的损失代价相同,令cost10 = cost01 = 1,则与之前的代价敏感错误率表达式一致。

不管是使用何种损失代价函数,构建模型最优化都等价于最小化代价敏感错误率。

 

                                                                                               2.5 代价曲线


ROC曲线在均等代价(分类错误的损失代价相同)的前提下反映学习模型的泛化能力,“代价曲线”是在非均等代价的前提下反映学习模型的期望总体代价。期望总体代价越小,则模型的泛化能力越强。

代价曲线的横坐标是样例为归一化的正例概率代价,正例概率为p,给定的正例概率为先验概率,范围为0~1,纵轴是归一化的损失代价。代价曲线研究的是正样本先验概率和损失代价的关系。

归一化的正例概率代价:

                                                     

这个表达式与周老师《机器学习》稍微有点不同,但含义是相同。习惯用1代表正样本,0代表负样本。

正例概率代价:

                                                                       

总概率代价:

                                                              

因此,经过归一化的正例概率代价的表达式,归一化的作用是使正例概率代价的取值范围为[0,1]。

模型归一化代价:

                                                      

模型总概率代价:

                                                    

模型总概率代价最大值:

                                                               

周老师《机器学习》对模型归一化代价描述的比较精炼,可能很多童鞋不是很清楚具体推导细节,本节详细的解释了模型代价和总体期望代价的推导过程。

模型代价和期望总体代价

模型归一化代价的分母项是归一化项,分析模型归一化代价的时候,只考虑分子项,归一化项可理解为常数,不影响模型的理解。

假设正样本的先验概率:p

模型代价:

                                                   

二分类问题中,ROC曲线的每个点对应一个分类器,分类器可用阈值表示为:

                                              

x为测试样本,学习模型为f,当学习模型预测测试样本为正样例的概率大于等于η,则测试样本的预测结果为正例,即H1;反之,预测结果为负样本,即H0。

FNR:假负例率,即已知测试样本是正样本,测试结果是负样本的概率。

                                                 

FNR为条件概率。

TNR,FPR,TPR的表达式也可以通过条件概率的形式给出:

                                                 

正例先验概率p,负例的先验概率(1-p)。结合正例先验概率,那么当输入为正例,测试结果为负例的联合概率分布(joint probability distribution)。

                                              

其他联合概率分布也可推导:

                                              

所以模型的期望损失代价:

      

期望损失代价是由正例先验概率和混淆矩阵决定的,当ROC曲线的阈值确定时,FPR和FNR也相应的确定。因此,代价曲线是一条直线,不同的代价曲对应不同的分类器。

因此,代价曲线如下图:

                                                  

其中,灰色的阴影部分为模型的期望总体代价,期望总体代价越小,则模型的泛化性能越好;反之,模型泛化性能越差。

期望总体代价的意义:正例先验概率下学习模型的最小损失代价,并对所有正例先验概率下的最小损失代价求和。

 

期望总体代价计算步骤:

  • 取ROC曲线上的每一点,计算相应的FNR,FPR。FNR和FPR在已知的情况下,归一化代价是一条随正例概率变化的直线。因此,代价曲线是一条直线,ROC曲线每个点都对应一条代价曲线。

  • 对于给定的正例概率p,取所有代价曲线在该频率下的最小值,然后求该最小值与正例概率所围成的面积,得到如上图所示的阴影曲线。

                                                        

期望总体代价流程图:

                                                                      

证明:在FPR和FRN已知的情况下,代价曲线是一条直线

                                                           

                                                                                            3、 总结


本文首先介绍了期望和均值的概念,均值是抽样数据的统计量,期望是总体分布的统计量,由大数定律可知,当抽样数据无穷大时,样本均值等于总体期望。

其次介绍了机器学习模型性能评估方法,评价机器学习模型性能的金标准是模型的泛化能力。

常用测试样本的精度来评价模型的泛化能力,这样做的缺点在于:

(1)测试样本具有随机性,不同测试样本的精度很可能不一样,评价泛化能力存在偏差;

(2)若测试样本的正负样本数据集比例不平衡,用精度评价泛化能力存在很大的缺陷。

若模型的实际场景应用需要重点考虑查准率和查全率的因素,P-R曲线是通过查准率和查全率的角度来评价模型的性能,可通过Fβ来度量模型性能;

ROC曲线是无任何限制条件下评价模型泛化性能的好坏,度量标准是面积大小;若需要考虑分类模型产生的非均等损失代价问题,可通过代价曲线的期望总体代价作为度量标准。

机器学习模型性能评估框架:

                              

参考:周志华 《机器学习》

                                                                        

### 代价曲线的概念及其绘制方法 在机器学习领域,代价曲线是一种用于评估模型泛化能力的重要工具。它通过展示训练错误率和测试错误率随数据量变化的趋势,帮助研究者理解模型的表现并优化其性能。 #### 计算代价曲线的核心要素 为了计算代价曲线,通常需要以下几个关键步骤: 1. **定义误差度量** 需要先确定适合当前任务的误差度量标准,例如均方误差(MSE)、交叉熵损失等。这些度量将被用来量化训练集和测试集上的预测误差[^1]。 2. **划分数据集** 将原始数据划分为训练集和测试集。可以通过不同的比例分配数据,或者使用交叉验证技术来提高结果的可靠性[^4]。 3. **逐步增加训练样本数量** 从少量样本开始,逐步增加训练集中使用的样本次数。每次增加后重新训练模型,并记录对应的训练错误率和测试错误率。 4. **记录错误率** 对于每种训练样本规模,分别计算训练集和测试集上的平均错误率。这一步骤可能涉及多次实验取平均值以减少噪声影响。 #### 绘制代价曲线的方法 一旦收集到了足够的数据点,便可以利用图表库(如Matplotlib或Seaborn)绘制代价曲线。以下是具体实现方式: ```python import matplotlib.pyplot as plt import numpy as np def plot_learning_curve(train_errors, test_errors, train_sizes): """ 绘制代价曲线 参数: train_errors (list): 不同训练集大小下对应训练集的错误率列表. test_errors (list): 不同训练集大小下对应测试集的错误率列表. train_sizes (list): 使用的不同训练集大小列表. """ plt.figure(figsize=(8, 6)) plt.plot(train_sizes, train_errors, label='Training Error', marker='o') plt.plot(train_sizes, test_errors, label='Testing Error', marker='s') plt.title('Learning Curve Analysis') plt.xlabel('Number of Training Samples') plt.ylabel('Error Rate') plt.legend() plt.grid(True) plt.show() # 假设的数据 train_sizes = [10, 20, 50, 100, 200] train_errors = [0.9, 0.7, 0.5, 0.3, 0.2] test_errors = [1.0, 0.9, 0.7, 0.5, 0.4] plot_learning_curve(train_errors, test_errors, train_sizes) ``` 上述代码展示了如何基于给定的训练错误率和测试错误率数组生成一条清晰直观的学习曲线图。该图形能够揭示模型是否存在欠拟合或过拟合现象。 #### 进一步分析与应用 通过对代价曲线的研究,不仅可以发现最佳训练样本数目范围内的模型配置,还可以指导后续超参数调优工作,例如选取合适的学习速率[^2]。此外,结合其他评价手段如ROC曲线分析,则能更全面地衡量分类器的整体效能[^3]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值