第二章 模型评估

1. 评价指标的局限性

  • 准确率(Accuracy)
  • 精确率(Precision)
  • 召回率(Recall)
  • 均方根误差(Root Mean Square Error, RMSE)

1.1 准确率

准确率: 指分类正确的样本占总样本个数的比例

Accuracy = \frac{n_{correct}}{n_{total}}

准确度的问题: 当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。
例如:当负样本占99%,分类器把所有样本都预测为负样本也可以获得99%的准确率。

1.2 精确率与召回率

精确度: 分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
召回率: 分类正确的正样本个数占真正的正样本个数的比例。

在排序问题中,通常没有一个确定的阀值把得到的结果直接判定为正样本或负样本,而是采用TopN返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的Top N的结果就是模型判定的正样本,然后计算前N个位置上的准确率Precision@N和前N个位置上的召回率Recall@N。

Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。

为了综合评价一个排序模型的好坏,不仅要看precision和recall,而且最好绘制模型P-R(precision-recall)曲线

由图可见,当召回率接近于0时,模型A的精确率为0.9,模型B的精确率是1,这说明模型B得分前几位的样本全部是真正的正样本,而模型A即使得分最高的几个样本也存在预测错误的情况。并且,随着召回率的增加,精确率整体呈下降趋势。但是,当召回率为1时,模型A的精确率反而超过了模型B。这充分说明,只用某个点对应的精确率和召回率是不能全面地衡量模型的性能,只有通过P-R曲线的整体表现,才能够对模型进行更为全面的评估。

F1 score
math F1 = \frac{2 \times precision \times recall} {precision + recall}

1.3 均方根误差RMSE

RMSE的计算公式:

RMSE = \sqrt{ {\frac {{\sum_{i=1}^n} {(y_i - \overline{y}_{i} )}^2}  {n}}}

\(y_i\)是第i个样本点的真实值,\(\overline{y}_{i}\) 是第i个样本预测值, n是样本点个数。

RMSE能够很好地反映回归模型预测值与真实值的偏离程度。

比RMSE的鲁棒性更好的指标,平均绝对百分比误差(Mean Absolute Percent Error, MAPE),定义如下:

物理含义:相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
***

2. ROC曲线

ROC曲线是Receiver Operating Characteristic Curve的简称,中文名为“受试者工作特征曲线”。ROC曲线源于军事领域,而后在医学领域应用甚广,“受试者工作特征曲线”这一名称也正是来自于医学领域。

ROC曲线的横坐标为假阳性率(False Positive Rate,FPR);纵坐标为真阳性率(True Positive Rate,TPR) 。FPR和TPR的计算方法分别为:

上式中,P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数FP是N个负样本中被分类器预测为正样本的个数

下面例子有助于学习:
只看定义确实有点绕,为了更直观地说明这个问题,我们举一个医院诊断病人的例子。假设有10位疑似癌症患者,其中有3位很不幸确实患了癌症(P=3),另外7位不是癌症患者(N=7)。医院对这10位疑似患者做了诊断,诊断出3位癌症患者,其中有2位确实是真正的患者(TP=2)。那么真阳性率TPR=TP/P=2/3。对于7位非癌症患者来说,有一位很不幸被误诊为癌症患者(FP=1),那么假阳性率FPR=FP/N=1/7。对于“该医院”这个分类器来说,这组分类结果就对应ROC曲线上的一个点(1/7,2/3)。

2.1 如何画出ROC曲线?

**ROC曲线是通过不选移动分类器的截断点来生成曲线上的一组关键点。

截断点:区分正负预测结果的阈值。

通过动态地调整截断点,从最高的得分开始(实际上是从正无穷开始,对应着ROC曲线的零点),逐渐调整到最低得分,每一个截断点都会对应一个FPR和TPR,在ROC图上绘制出每个截断点对应的位置,再连接所有点就得到最终的ROC曲线。

其实,还有一种更直观地绘制ROC曲线的方法。首先,根据样本标签统计出正负样本的数量,假设正样本数量为P,负样本数量为N;接下来,把横轴的刻度间隔设置为1/N,纵轴的刻度间隔设置为1/P;再根据模型输出的预测概率对样本进行排序(从高到低);依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线,直到遍历完所有样本,曲线最终停在(1,1)这个点,整个ROC曲线绘制完成。

2.2 如何计算AUC?

AUC,就是ROC曲线下的面积。能够量化地反映基于ROC曲线衡量出的模型性能。AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。

计算AUC值只需要沿着ROC横轴做积分就可以了。

2.3 比较ROC曲线和P-R曲线有什么特点?

相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。(从两者曲线的定义、物理含义就能很好地理解)

可以看出,P-R曲线发生了明显的变化,而ROC曲线形状基本不变。这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。这有什么实际意义呢?在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000甚至1/10000。若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。但需要注意的是,选择P-R曲线还是ROC曲线是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能。
***

3. 余弦距离的应用

对于两个向量A和B,其余弦相似度定义为

即两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,其取值范围是[-1,1]。当一对文本相似度的长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。此外,在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下依然保持“相同时为1,正交时为0,相反时为-1”的性质,而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。

在一些场景,例如Word2Vec中,其向量的模长是经过归一化的,此时欧氏距离与余弦距离有着单调的关系,即

结论
总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为(1,0);此时二者的余弦距离很大,而欧氏距离很小;我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应当使用余弦距离。而当我们分析用户活跃度,以登陆次数(单位:次)和平均观看时长(单位:分钟)作为特征时,余弦距离会认为(1,10)、(10,100)两个用户距离很近:但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧氏距离。
特定的度量方法适用于什么样的问题,需要在学习和研究中多总结和思考,这样不仅仅对面试有帮助,在遇到新的问题时也可以活学活用。

3.1 余弦距离是不是一个严格定义的距离?

距离定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性,对称性,三角不等式)成立,则该实数可称为这对元素之间的距离。




***

4. A/B测试的陷阱

4.1 在对模型进行过充分的离线评估之后,为什么还要进行在线A/B测试?

  1. 离线评估无法完全消除模型过拟合的影响。
  2. 离线评估无法完全还原线上工程环境。
  3. 某些商业指标在离线评估中无法计算。

4.2 如何进行线上A/B测试?

进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏的。
***

5. 模型评估的方法

5.1 模型评估过程中,有哪些主要的验证方法,优缺点是什么?

1. Holdout检验
Holdout 检验是最简单也是最直接的验证方法,它将原始的样本集合随机划分成训练集和验证集两部分。比方说,对于一个点击率预测模型,我们把样本按照70%~30%的比例分成两部分,70%的样本用于模型训练;30%的样本用于模型验证,包括绘制ROC曲线、计算精确率和召回率等指标来评估模型性能。

Holdout 检验的缺点很明显,即在验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,研究者们引入了“交叉检验”的思想。

2. 交叉检验
k-fold交叉验证:首先将全部样本划分成k个大小相等的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。在实际实验中,k经常取10。

留一验证:每次留下1个样本作为验证集,其余所有样本作为测试集。样本总58数为n,依次对n个样本进行遍历,进行n次验证,再将评估指标求平均值得到最终的评估指标。在样本总数较多的情况下,留一验证法的时间开销极大。事实上,留一验证是留p验证的特例。留p验证是每次留下p个样本作为验证集,而从n个元素中选择p个元素有C%种可能,因此它的时间开销更是远远高于留一验证,故而很少在实际工程中被应用。

自助法:自助法是基于自助采样法的检验方法。对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。n次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将这些没有被抽出的样本作为验证集,进行模型验证,这就是自助法的验证过程。

5.2 自助法,对n个样本进行采样,当n趋于无穷大时,有多少样本从未被选择过?



6. 超参数调优

  • 网格搜索:通过查找搜索范围内的所有的点来确定最优值
  • 随机搜索:在搜索范围内随机选取样本点
  • 贝叶斯优化算法:贝叶斯优化算法在寻找最优最值参数时,采用了与网格搜索、随机搜索完全不同的方法。网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息;而贝叶斯优化算法则充分利用了之前的信息。贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。具体来说,它学习目标函数形状的方法是,首先根据先验分布,假设一个搜集函数;然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。对于贝叶斯优化算法,有一个需要注意的地方,一旦找到了一个局部最优值,它会在该区域不断采样,所以很容易陷入局部最优值。为了弥补这个缺陷,贝叶斯优化算法会在探索和利用之间找到一个平衡点,“探索”就是在还未取样的区域获取采样点;而“利用”则是根据后验分布在最可能出现全局最值的区域进行采样。

7. 过拟合与欠拟合

7.1 过拟合和欠拟合具体指的是什么现象?

过拟合:在训练集上表现很好,在测试集和新数据上表现很差。
欠拟合:训练和测试都表现不好。

7.2 降低过拟合和欠拟合风险的方法?

降低过拟合的方法

  1. 获得更多的数据
  2. 降低模型复杂度。
  3. 正则化方法。(给模型参数加上一定的正则约束)
  4. 集成学习。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。

降低欠拟合风险的方法

  1. 添加新特征
  2. 增加模型复杂度
  3. 减小正则化系数

原文地址:https://www.cnblogs.com/wemo/p/10513972.html

时间: 2024-07-30 07:07:49

第二章 模型评估的相关文章

机器学习总结之第二章模型评估与选择

机器学习总结之第二章模型评估与选择 2.1经验误差与过拟合 错误率 = a个样本分类错误/m个样本 精度 = 1 - 错误率 误差:学习器实际预测输出与样本的真是输出之间的差异. 训练误差:即经验误差.学习器在训练集上的误差. 泛化误差:学习器在新样本上的误差. 过拟合:学习器把训练样本学的"太好",把不太一般的特性学到了,泛化能力下降,对新样本的判别能力差.必然存在,无法彻底避免,只能够减小过拟合风险. 欠拟合:对训练样本的一半性质尚未学好. 2.2评估方法 (在现实任务中,还需考虑

第二章 模型评估与选择

2.1  经验误差与过拟合 错误率和精度:通常我们把分类错误的样本占样本总数的比例称为“错误率”(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m:相应的,1-a/m称为“精度”.(accuracy).即“精度=1-错误率”. 误差:学习期的实际预测误差和样本的真实输出之间的差异称为“误差”(error) 训练误差/经验误差:学习器在训练集上的误差称为“训练误差”(training error)或 “经验误差”(expircial error) 泛化误差(gene

西瓜书第二章--模型评估与选择

2.1 经验误差与过拟合 错误率:错分样本的占比 精度:分对样本的占比,与错误率是互补的. 误差:样本真实输出与预测输出之间的差异.学习器在训练集上的误差称为训练误差或经验误差,在新样本上的误差称为泛化误差. 由于事先并不知道新样本的特征,我们只能努力使经验误差最小化: 很多时候虽然能在训练集上做到分类错误率为零,但多数情况下这样的学习器并不好 过拟合:学习器把训练样本学习的“太好”,将训练样本本身的特点 当做所有样本的一般性质,导致泛化性能下降: 解决措施:1.优化目标加正则项 :2.earl

第7章 模型评估

7.1 分类模型评估 1.二分类 混淆矩阵中对角线的元素代表正确分类的数量: 非对角线元素代表错误分类的数量. 所以最为理想的模型(拿测试集来看),应该是一个对角阵.若无法得到对角阵,对角线上的数字之和如果占统治地位也是可以的. 片面的追求查准率可能会降低召回率 2.多分类 recall参数中的average()的取值: binary表示二分类 micro表示多元混淆矩阵中的第一种方法 macro表示的是一种不加权的平均 weighted表示加权的平均 3. 反应分类效果的图及ROC曲线阈值的选

西瓜书第二章

第2章 模型评估与选择 2.1 经验误差与过拟合 学习器在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差”:过拟合一般是由于学习能力过于强大,以至于把训练样本所包含的不太一般的特性都学到了,而欠拟合则通常是由学习能力低下而造成的.欠拟合比较容易克服,例如在决策树学习中扩展分支,在神经网络学习中增加训练轮数等,而过拟合则很麻烦,它是无法避免的,机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内运行完成,若可彻底的避免过拟合,则通过经验误差最小

【机器学习123】模型评估与选择 (上)

第2章 模型评估与选择 2.1 经验误差与过拟合 先引出几个基本概念: 误差(error):学习器的实际预测输出与样本的真实输出之间的差异. 训练误差(training error):学习器在训练集上的误差,也称"经验误差". 测试误差(testing error):学习器在测试集上的误差. 泛化误差(generalization error):学习器在新样本上的误差. 错误率(error rate):分类错误的样本数占样本总数的比例. 精度(accuracy) = 1 – 错误率.

《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型 (转)

第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以跳过本章. 本章将带你漫游使用实体框架建模的基本实例,建模是实体框架的核心特性,同时也是区别实体框架和微软早期的数据访问平台的特性.一旦建好模,你就可以面向模型编写代码,而不用面向关系数据库中的行和列. 本章以创建一个简单概念模型的实例开始,然后让实体框架创建底层的数据库,剩下的实例,将向你展示,如

ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类.指定数据库连接字符串以及创建一个数据库.最后,我们还将添加视图和控制器来管理和显式产品和分类数据. 注意:如果你想按照本章的代码编写示例,你必须完成第一章或者直接从www.apress.com下载第一章的源代码. 2.1 添加模型类 Entity Framework的代码优先模式允许我们从模型类创

数据挖掘导论 第4章 分类:基本概念、决策树与模型评估

第4章 分类:基本概念.决策树与模型评估 分类(classification):分类任务就是通过学习得到一个目标函数(target function)f,把每个属性集x映射到一个余弦定义的类标号y.目标函数也称为分类模型(classification model). 属性可以是离散的或者连续的,但类标号必须是离散的,这正是分类与回归(regression)的关键特征.回归是一种预测建模任务,其中目标属性y是连续的. 分类计数非常适合预测或描述二元或标称类型的数据集,对于序数分类,分类技术不太有效