[基本功]模型评估方法

模型评估

1、准确率的局限性

  • 准确率 A c c u r a c y = n c o r r e c t / n t o t a l Accuracy=n_{correct}/n_{total} Accuracy=ncorrect/ntotal,指分类正确的样本占总样本个数的比例

  • 缺点:当负样本占99%时,把所有样本都预测为负样本也可以获得99%的准确率。

    当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

  • 改进:平均准确率(每个类别下的样本准确率的算术平均)

  • 其它问题:评估指标的选择、过拟合或欠拟合、测试集和训练集划分不合理、线下评估和线上测试的样本分布存在差异等问题

2、准确率与召回率的权衡

  • 精确率Precision:分类正确的正样本个数占分类器判定为正样本的样本个数的比例
  • 召回率recall:分类正确的正样本个数占真正的正样本个数的比例
  • 在排序问题中,通常采用TopN返回结果的Precision和recall值来衡量排序模型的性能,即认为模型返回的TopN的结果就是模型判定的正样本,然后计算前N个位置上的准确率和召回率
  • PR曲线的横轴是召回率,纵轴是精确率
  • F 1 = 2 ∗ p r e c i s i o n ∗ r e c a l l / ( p r e c i s i o n + r e c a l l ) F1 =2*precision*recall/(precision+recall) F1=2precisionrecall/(precision+recall) ,精确率和召回率的调和平均值
  • ROC曲线

3、平方根误差RMSE

  • R M S E = ∑ i = 1 n ( y i − y ^ i ) 2 / n RMSE=\sqrt{\sum_{i=1}^n (y_i-\hat y_i)^2/n} RMSE=i=1n(yiy^i)2/n

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

  • 实际中,如存在个别偏离程度非常大的离群点,即使离群点数量非常少,也会让RMSE指标变得很差

  • 解决方案:

    (1)如果认定这些离群点是“噪声点”,需要在数据预处理时过滤掉这些噪声点

    (2)如果不认为这些离群点是“噪声点”,需要进一步提高模型预测能力,将离群点产生的机制建模进去

    (3)可以找一个更合适的指标来评估该模型,比如MAPE(平均绝对百分比误差):
    M A P E = ∑ i = 1 n ∣ ( y i − y ^ i ) / y i ∣ ∗ 100 / n MAPE=\sum_{i=1}^n|(y_i-\hat y_i)/y_i|*100/n MAPE=i=1n(yiy^i)/yi100/n
    相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响

3、ROC曲线是什么?

  • Receiver Operating Characteristic Curve,受试者工作特征曲线
  • 横坐标:假阳性率FPR;纵坐标:真阳性率:TPR
  • F P R = F P / N FPR=FP/N FPR=FP/N,负样本中被预测为正样本的频率(1-特异性)
  • T P R = T P / P TPR=TP/P TPR=TP/P,正样本中被预测为正样本的频率(敏感性)
  • 例:10位疑似癌症,3位确实癌症(P),7位不是癌症(N)。医生诊断出的3位癌症中,有2位是真的癌症(TP),有1位是误诊(FP),真阳性率TPR=TP/P=2/3;假阳性率FPR=FP/N=1/7

4、如何绘制ROC曲线?

  • ROC曲线通过不断移动分类器的“截断点”来生成曲线上的一组关键点
  • “截断点”:区分正负预测结果的阈值
  • 法1:通过动态调整截断点,从最高得分开始(实际上是从正无穷开始,对应着ROC曲线的零点),逐渐调整到最低得分,每一个截断点都会对应一个FPR和TPR,在ROC图上绘制出每个截断点对应的位置,再连接所有点就得到最终的ROC曲线
  • 法2:首先,根据样本标签统计出正样本数量为P,负样本数量为N;其次,把横轴刻度间隔设置为1/N,纵轴刻度间隔设置为1/P;根据模型输出的预测概率对样本进行排序(从高到低),依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿着横轴方向绘制一个刻度间隔的曲线,直到遍历完所有样本,曲线最终停在(1,1),整个ROC曲线绘制完成

5、如何计算AUC

  • AUC(Area Under Curve):ROC曲线下的面积
  • 作用:量化地反映基于ROC曲线衡量出的模型性能
  • 计算AUC只需沿着ROC横轴做积分
  • ROC曲线一般处于y=x曲线上方,所以AUC取值一般在0.5~1之间
  • AUC越大,说明分类器越可能把真正的正样本排在前面,分类性能越好

6、ROC曲线与P-R曲线的异同

  • 当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化

    image-20211210115121604
  • ROC曲线可以尽量降低不同测试集带来的干扰,更加客观的衡量模型本身的性能

  • 在很多实际问题中,正负样本数量往往很不均衡,若选择不同测试集,P-R曲线的变化就会非常大。而ROC曲线则能够更加稳定地反映模型本身的好坏

  • 如果研究者希望看到模型在特定数据集上的表现,P-R曲线更加直观

7、余弦相似度&余弦距离

  • 余弦相似度常用来评估向量之间的相似性,取值范围[-1,1],相同两个向量余弦相似度为1

  • c o s ( A , B ) = A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 cos(A,B)=\frac{A·B}{||A||_2||B||_2} cos(A,B)=A2B2AB

  • 余弦相似度关注向量间的角度关系,不关心它们的绝对大小,与衡量绝对距离数值的欧氏距离有很大区别

  • 在文本、图像等领域,研究对象的特征维度往往很高,余弦相似度在高维情况下依然保持“相同为1,正交为0,相反为-1”的性质;而欧氏距离数值受维度影响,范围不固定,含义也较为模糊

  • 在一些场景,如Word2Vec,向量模厂经过归一化,此时欧式距离和余弦距离单调:
    ∣ ∣ A − B ∣ ∣ 2 = 2 ( 1 − c o s ( A , B ) ) ||A-B||_2=\sqrt{2(1-cos(A,B))} AB2=2(1cos(A,B))

  • 余弦距离=1 - 余弦相似度,取值范围[0,2],相同两个向量余弦距离为0

8、余弦距离是否是一个严格定义的距离?

  • 距离:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性、对称性、三角不等式)成立,则该实数可称为这对元素之间的距离
  • 余弦距离满足正定性、对称性,但不满足三角不等式,因此不是严格定义的距离,如A(1,0),B(1,1),C(0,1)→dist(A,B)+dist(B,C)<dist(A,C)
  • KL距离(相对熵),常用于计算两个分布之间的差异,但不满足对称性和三角不等式

9、A/B test

  • 作用:验证新模块、新功能、新产品是否有效,新算法、新模型的效果是否有提升,新设计是否受到用户欢迎,新更改是否影响用户体验的主要测试方法

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

    (1)离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全替代线上评估结果

    (2)离线评估无法完全还原线上的工程环境。一般地,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据缺失等情况。因此,离线评估的结果是理想工程环境下的结果。

    (3)线上系统的某些商业指标在离线评估中无法计算。比如,上新了新的推荐算法,离线评估往往关注的是ROC曲线、P-R曲线等的改进,而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV访问量等的变化。

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

    • 进行A/B测试的主要手段是将用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。
    • 在分桶过程中,要注意样本的独立性和采样方式的无偏性,user_id是随机数,保证桶中样本无偏

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

(1)Holdout检验

  • 将原始样本集合划分成训练集和测试集
  • 缺点:在测试集上计算出的最后评估指标与原始分组有很大关系

(2)交叉验证

  • k-fold交叉验证:首先把全部样本划分成k个大小相同的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。实际中,k常取10
  • 留一验证:每次留下1个样本作为验证集,其余所有样本作为训练集。在样本总数较多时,时间开销极大。
  • 留p验证:每次留下p个样本作为验证集,而从n个元素中选择p个元素有 C n p C_n^p Cnp种可能,时间开销远高于留一验证,故很少使用

(3)自助法(Bootstrap)

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

11、在自助法的采样过程中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少数据从未被选择过?

  • 一个样本在一次抽样中未被抽中的概率为 1 − 1 n 1-\frac {1}{n} 1n1

  • 一个样本在n次抽样中未被抽中的概率为 ( 1 − 1 n ) n (1-\frac{1}{n})^n (1n1)n

  • 当n趋于无穷大时
    lim ⁡ n → ∞ ( 1 − 1 n ) n = lim ⁡ n → ∞ ( n − 1 n ) n = lim ⁡ n → ∞ 1 ( n n − 1 ) n = lim ⁡ n → ∞ 1 ( 1 + 1 n − 1 ) n − 1 lim ⁡ n → ∞ 1 ( 1 + 1 n − 1 ) = 1 / e ≈ 0.368 \lim\limits_{n\rightarrow\infty}(1-\frac{1}{n})^n=\lim\limits_{n\rightarrow\infty}(\frac{n-1}{n})^n=\lim\limits_{n\rightarrow\infty}\frac {1}{(\frac{n}{n-1})^n}=\lim\limits_{n\rightarrow\infty}\frac {1}{(1+\frac{1}{n-1})^{n-1}}\lim\limits_{n\rightarrow\infty}\frac {1}{(1+\frac{1}{n-1})} \\=1/e\approx0.368 nlim(1n1)n=nlim(nn1)n=nlim(n1n)n1=nlim(1+n11)n11nlim(1+n11)1=1/e0.368

  • 说明当样本数很大时,大约有36.8%的样本从未被选择过,可作为验证集

12、超参数有哪些调优方法?

  • 超参数搜索算法包括:目标函数(最大化/最小化的目标);搜索范围(上限和下限);其他参数(如搜索步长)

(1)网格搜索

  • 最简单,应用最广泛
  • 通过查找搜索范围内的所有点来确定最优值
  • 如果采用较大的搜索范围和较小的步长,网格搜索有很大概率找到全局最优值,但十分消耗计算资源和时间,特别是需要调优的超参数比较多时
  • 实际应用中,网格搜索法一般会先使用较广的搜索范围和较大的步长,找到全局最优值最可能的位置,然后逐步缩小搜索范围和步长,来寻找更精确的最优值。这种方式可以降低所需时间和计算量,但由于目标函数一般非凸,很可能会错过全局最优值

(2)随机搜索

  • 与网格搜索思想比较相似,只是不再测试范围内所有值,而是随机选取样本点。
  • 理论依据:如果样本点集足够大,那么通过随机采样也大概率可以找到全局最优值或其近似值
  • 一般比网络搜索快一些,但结果没法保证

(3)贝叶斯优化算法

  • 网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息,而贝叶斯优化算法则充分利用了之前的信息

  • 通过对目标函数的形状进行学习,找到使目标函数向全局最优值提升的参数

  • 具体方法:

    • 根据先验分布,假设一个搜集函数
    • 每次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布
    • 算法测试由后验分布给出的全局最值最可能出现的位置的点
  • 注意:一旦找到局部最优值,它会在该区域不断采样,容易陷入局部最优值。为了弥补,贝叶斯优化算法会在探索和利用之间找到一个平衡点。

13、过拟合&欠拟合

  • 过拟合:模型在训练集上表现很好,但在测试集和新数据上表现较差

  • 欠拟合:模型在训练和预测时表现都不好

  • 降低过拟合风险的方法:

    (1)获得更多训练数据。使用更多训练数据可以让模型学习到更多更有效的特征,减小噪声的影响。直接增加实验数据一般很困难,但可以通过一定的规则进行扩充,如图像的平移、旋转、缩放等;生成对抗网络合成大量新训练数据

    (2)降低模型复杂度。适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如,在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等

    (3)正则化方法。给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。如L1正则化 L = L 0 + λ ∣ ∣ w ∣ ∣ 1 L=L_0+\lambda||w||_1 L=L0+λw1,L2正则化 L = L 0 + λ 2 ∣ ∣ w ∣ ∣ 2 2 L=L_0+\frac{\lambda}{2}||w||_2^2 L=L0+2λw22

    (4)集成学习方法。把多个模型集成在一起,降低单一模型的过拟合风险,如Bagging等

  • 降低欠拟合风险的方法:

    (1)添加新特征。如挖掘“上下文特征”、“ID类特征”、“组合特征”等

    (2)增加模型复杂度。如在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等

    (3)减小正则化参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值