百面机器学习:模型评估

1. 评估指标的局限性

        要合理地运用评估指标,才可以发现模型本身的问题,不然反其道而行之得出错误的调参结论。

        先讲了TP、FP、FN、和FP这几个值。

        这几个率真的是看一次忘一次,人都麻了

        准确率的局限性

        定义:分类正确的样本 占 总样本的个数的比例:

        缺陷:当不同类别的样本比例非常不均衡的时候,占比大的类别往往成为影响准确率的最主要因素,当某一类的占比高达99%,且这一类模型都分对了,那意思是模型的准确率有99%吗?答案显然是不可能的呀。

        精确率和召回率的权衡

       这里一定要和准确率好好区分开

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

p = \frac{TP}{TP+FP}

        召回率的定义:分类正确的正样本个数 占 真正的正样本个数的比例

r = \frac{TP}{TP+FN}

        他们两一直是一个很矛盾的指标,分类器往往需要尽量在“更有把握”时才把样本预测为正样本(分母在变少,精确率在变大),但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致召回率的分子变少,从而整个召回率变少。

        也就是说他们在相互扼制,也就是说,精确率和召回率也不是非常全面地衡量模型的性能,于是我们引出了PR曲线去衡量模型,做一个全面的评估:

        P-R曲线的纵轴是精确率 横轴是召回率

        PR曲线上的一个点代表着,在某一个参数/阈值下,该模型此时的召回率和精确率。直接看图,当召回率接近于0的时候,也就是召回率的分子非常低 (模型谨慎),此时精确率都很高,因为精确率分母在变小。

        随着召回率在增加,精确率要满满下滑了,因为模型开始变得大胆了,不是那么有把握的也分到正类里面去,于是这时候就召回率的分子开始变大,但是精确率的分母也在变大,所以精确率在变小。这就可以衡量到什么阈值/参数下,多个模型的对比了

        除此之外,F1 Score 也是综合反应一个模型的性能,F1 Score是精确率和召回率的调和平均值。

        F1-Score指标综合了Precision与Recall的产出的结果。F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差。 例如:

         当然还有ROC曲线!

        平方根误差的“意外”

        RMSE经常被用来衡量回归模型的好坏,但是按照书上的例子,我们却看到了不论换什么模型RMSE都非常高,但事实却是95%的时间区间内的预测误差都小于1%。这是为啥呀?

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

        虽然是除平均了,但是有平方在,还是很大的。

        于是针对这歌问题,我们可以从三个角度去思考。第一就是在数据的预处理的阶段将噪声/离群点过滤掉。第二就是不认为这是离群点,转而去提高模型的预测能力,将离群点也囊括进去。第三就是找更合适的指标去评估模型,例如平均绝对百分比误差。

        综上!我们需要一组互补的指标去评估模型。

2. ROC曲线

        ROC曲线的横坐标是假阳性率(FPR),纵坐标是真阳性率(TPR),FPR和TPR的计算方法是:

FPR = \frac{FP}{ Negative\_Sample\_Number} = \frac{FP}{FP+TN}

TPR = \frac{TP}{ Positive\_Sample\_Number} = \frac{TP}{TP+FN}

        如何绘制ROC曲线

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

        所谓的截断点其实就是threshold,高于这个threshold就划分为正类,低于这个threshold就划分为负类。

        每一个截断点都会对应一个FPR和TPR,找到每个截断点对应的位置。然后连接所有点。

        当阈值是0.9,对应只有一个TP,正类有10个,所以TPR = 1 / 10,没有错误样本,所以FPR=0,所以对应ROC曲线是 (0,0.1)

        如何计算AUC:

        AUC指的是ROC曲线下的面积,只需要沿着ROC横轴做积分就好了。该值能够量化地反应基于ROC曲线衡量出的模型性能,AUC的取值越大越好,这是为啥呢?

        因为AUC越大,说明面积越大,面积越大,就说明曲线越靠近Y轴,也就是真阳率,换句话说也就是真阳率会比较高。

        ROC曲线相比P-R曲线有什么特点

         相比于P-R曲线,ROC曲线有一个特点,就是当政府样本的分布发生变换时,ROC曲线的形状可以保持不变,而PR曲线的形状一般会发生变化,从而降低不同测试集带来的干扰,更加客观衡量模型本身的性能。

        如果希望更多地看到模型在特定数据集上的表现,P-R曲线则可以更好更直观地反应出来

sim(i,j) = cos(A,B) = \frac{A\cdot B}{\left \| A \right \|_2 * \left \| B \right \|_2}

3. 评估样本间的距离

        余弦相似度:

        余弦相似度的取值范围是 [-1,1], 相同两个向量之间的相似度为1. 我们可以做一个 1-操作,映射一下结果到 [0,2] 的空间上。

        为什么在一些场景中要使用余弦相似度而不是欧氏距离

        余弦距离关注的是向量之间的角度关系,并不关心他的绝对值的大小,我们可以理解为余弦距离关注的是方向,而欧氏距离关注的是距离。

        在推荐系统,特征的维度往往都会很高,在这么高的维度下入如果算特征的欧氏距离,那会很大,但是算余弦距离,可能会很小。这主要是因为余弦相似度在高维的情况下依旧保持“相同为1,正交为0,相反为-1”的特性。

        根据不同的业务,我们应该选用不同的距离去衡量。

        

4. AB测试的陷阱

        AB测试就是有两种不同的模型,但是不知道实战效果怎么样,于是就划分人群实验组,对照组,对不同的人群用不同的模型,然后统计数据,作出判断。其中确保同一个用户每次只能分到同一个桶中,在分桶的过程中,用户的选取也必须是随机的,保持样本的无偏。

        在对模型进行充分的历险评估之后,为什么还需要进行在线的AB测试

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

        2. 离线评估无法完全还原线上的工程环境

        3. 许多商业指标无法在离线评估得出。离线评估往往关注对于存量数据的评估,譬如ROC,P-R曲线。而线上评估可以得到更多的信息,用户点击率,留存时长等指标

5. 模型评估方法

        在样本划分和模型验证的过程中,存在不同的抽样方法和验证方法,关键是在不同的问题下找到合适的评估方法。

        有哪些评估方法,各自的有缺点是啥?

        Holdout检验

        将原始的样本集合随机划分成训练集和验证集两部分,这么粗鲁的划分很明显最后的评估指标和分组有莫大的关系

        交叉验证

        首先将全部的样本划分成K个大小相等的样本子集,依次遍历这K个子集,每次都把子集座位验证集,其余的所有子集都座位训练集,进行模型的训练和评估,最后把k次的评估指标做加权平均处理。

        留一验证

        每次留下一个样本去做为验证集,其余搜有样本作为训练集,杨本总数为n,依次对n个样本进行遍历演这个。再将评估指标也做一个加权平均。

        交叉验证和留一验证都能保证所有样本都参与到训练和验证当中,取消划分数据集对指标的影响

        自助法

        当数据集比较小的时候,如果再划分的话,数据集会更加小,于是我们对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的俊脸集,在采样过程中,有的样本会被重复采样,有的样本没有被抽出过。于是我们将这些没有被抽出过的点样本作为验证集,进行模型验证

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

 

6. 过拟合和欠拟合

        在模型评估过程中,过拟合和欠拟合具体是指什么现象。

        过拟合就是模型对于训练数据拟合呈现过当的情况,反映到评估指标上,就是模型在训练集上表现很好,但是在测试集和新数据上表现较差

        欠拟合就是模型在训练和预测时的表现都不好的情况

        降低过拟合的方法

        1. 从数据入手,获得更多的训练集是解决过拟合问题最有效的手段。数据增强,GAN等方式

        2. 降低模型复杂度,减少网络层数,神经元个数等,避免模型拟合过多的采样噪声

        3. 正则化:L1,L2正则化,BatchNorm等方法。

写过一点关于L1,L2的解释,但后面肯定还要继续优化的

        4. 用Bagging,降低单一模型拟合的风险,同时保留准确度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值