百面机器学习|第二章模型评估知识点 蓝白绛

前言

如果你能找到这里,真是我的幸运~这里是蓝白绛的学习笔记,本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点,希望对大家有帮助。

第二章 模型评估

1、评估指标的局限性

  1. 准确率(Accuracy):分类正确的样本占总样本个数的比例。
    当不同类别的样本比例非常不均衡时,将准确率作为分类性能的指标非常局限,可以使用更加有效的平均准确率(每个类别下的样本准确率的算数平均)作为模型评估的指标。

  2. 精确率(Precision):分类正确的正样本个数占分类器判定为正样本个数的比例。

  3. 召回率(Recall):分类正确的正样本个数占真正的正样本个数的比例。

  4. 排序问题中,通常没有一个确定的阈值把得到的结果判定为正样本或负样本,而是采用Top N返回结果(即模型判定的N个正样本)计算Precision和Recall来衡量排序模型的性能。

  5. Precision和Recall是即矛盾又统一的两个指标。通常要绘制P-R曲线,单个点对应的精确率和召回率并不能全面地衡量模型的性能,画曲线能对模型进行更为全面的评估。

  6. F1值和ROC曲线也能综合反映一个排序模型的性能。ROC曲线后面一节再说,F1值是精确率和召回率的调和均值
    F1=\frac{2\times precision\times recall}{precision+recall}

  7. 均方根误差RMSE(Root Mean Square Error)通常用来衡量回归模型的好坏,但是如果存在个别偏离程度特别大的离群点(Outlier),即使离群点非常少,也会让RMSE指标变的很差。
    RMSE=\sqrt{\frac{\sum_{i=1}^{n}(y_i-{\hat{y}_i})^2}{n}}例如在流量预测问题中,噪声点是很容易产生的,甚至一些相关社交媒体突发事件带来的流量,都很有可能造成离群点。
    针对离群点的解决方案有:

  • 如果认为这些离群点是“噪声点”的话,就需要在数据预处理的阶段将噪声点过滤掉。
  • 如果不认为离群点是“噪声点”,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去。(这就是一个宏大的话题了)
  • 找一个更合适的指标来评估模型,如平均绝对百分比误差(Mean Absolute Percent Error,MAPE)。它将每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。
    MAPE=\sum_{i=1}^{n}|\frac{y_i-\hat{y}_i}{y_i}|\times\frac{100}{n}

2、ROC曲线

  1. ROC(Receiver Operating Characteristic Curve,受试者工作特征曲线),横坐标为假阳性率(False Positive Rate,FPR),纵坐标为真阳性率(True Positive Rate,TPR)。
    FPR=\frac{FP}{N} TPR=\frac{TP}{P}
    其中N为真实的负样本个数,P为真实的正样本个数。
    Confusion matrix
  2. ROC曲线的绘制:二值分类问题中,模型的输出一般都是预测样本为正例的概率,概率大于该值则判为正例,小于该值判为负例,计算FPR和TPR,形成ROC曲线上的一点。通过不断移动截断点,则可绘制出ROC曲线。
  3. AUC:ROC曲线下的面积(沿横轴积分),能够量化地反映基于ROC曲线衡量出的模型性能。
  4. ROC曲线与P-R曲线:当正负样本的分布发生变化时,ROC曲线形状能保持基本不变,而P-R曲线形状一般会发生剧烈的变化。ROC曲线能更加稳定地反映模型本身的好坏,广泛应用于排序、推荐、广告等领域。如果希望更多地看到模型在特定数据集上的表现,P-R曲线能更直观地反映其性能。

3、余弦距离的应用

  1. 余弦相似度余弦距离:余弦相似度取值范围为[-1,1],余弦距离是1减余弦相似度,取值范围为[0,2]
  2. 余弦距离欧式距离
  • 余弦距离关心的是向量的角度关系,并不关心它们的绝对大小。在文本、图像、视频领域,特征维度往往很高,余弦相似度在高维情况下依然能保持“相同为1,正交为0,相反为-1”。而欧式距离受维度影响,范围不固定,含义也比较模糊。
  • 在一些场景,欧式距离和余弦距离有着单调的关系,如果选择距离最小(相似度最大)的近邻,则使用欧式距离和余弦距离的结果是相同的。
  • 总体来说,欧式距离体现数值上的绝对差异,余弦距离体现方向上的相对差异
    例如统计用户看剧行为,A为(0,1), B为(1,0),此时余弦距离较大,欧式距离较小,我们分析两个用户对不同视频的喜好,更关注相对差异,这里应该用余弦距离。
    再例如分析用户活跃度,以登陆次数和平均观看时长为特征,A为(1,10), B为(10,100),则余弦距离会认为他们非常近,但这两个用户的活跃度差别是非常大的,应该选用欧式距离。
  1. 余弦距离并不是一个严格定义的距离。距离的定义是在一个集合中,每一对元素均可唯一确定一个实数,使得正定性对称性三角不等式成立,则该实数可称为这对元素的距离。余弦距离满足正定性和对称性,但不满足三角不等式
    在机器学习领域,被称为距离但不满足三条距离公理的还有KL距离(Kullback-Leibler Divergence),也叫做相对熵,常用于计算两个分布之间的差异,它不满足对称性和三角不等式。

4、A/B测试的陷阱

  1. 在机器学习中A/B测试是验证模型最终效果的主要手段。
  2. 已经对模型进行充分的离线评估,还需要进行在线A/B测试的原因有:
  • 离线评估无法完全消除模型过拟合的影响。
  • 离线评估无法完全还原线上的工程环境。一般来讲,离线评估往往没有考虑线上环境的延迟、数据丢失、标签数据缺失等情况。也就是说,离线评估是理想工程环境下的结果。
  • 离线评估一般是针对模型本身进行评估,线上系统的某些商业指标在离线评估中无法计算。如推荐问题中,离线评估关注ROC曲线、P-R曲线,而弦上评估可以全面了解用户点击率、留存时长、PV访问量等变化。
  1. 如何进行线上A/B测试:主要手段是进行用户分桶,将用户分成实验组和对照组,对实验组用户用新模型,对对照组用户用旧模型。分桶要保证样本的独立性和采样方式的无偏性

5、模型评估的方法

  1. Holdout检验:最简单直接的检验方法,它将原始样本数据集随机划分成训练集和测试集。
    缺点:验证集上计算出来的最后评估指标原始分组有很大关系。
  2. 交叉检验:为了消除Holdout的随机性,则有了交叉验证。
  • k-fold交叉验证:将全部样本分成k个大小相等的样本子集,拿出其中一个子集作为验证集,其余k-1个子集作为训练集,依次遍历。通常把k次评估指标的平均值作为最终的评估指标。实际试验中,k经常取10。
  • 留一验证:每次留下一个样本作为验证集,其余所有样本作为测试集,进行n次验证,再将评估指标求平均值得到最终的评估指标。(n个值的平均)
    留一验证缺点:在样本总数较多的情况下,时间开销极大。留一验证是留p验证的特例,但从n个元素中选择p个元素有C_n^p种可能,时间开销比留一验证更多,在实际工程很少应用。
  1. 自助法:Holdout和交叉验证都是基于数据集的划分,但是当样本规模较小时,将样本集进行划分会让训练集进一步减小,可能影响模型的训练效果。自助法是基于自助采样的检验方法,对于总数为n的样本集合,有放回地随机抽样n次,得到大小为n的训练集。其中有的样本会重复,有的样本没有被抽出过,将没有被抽出的样本作为验证集进行验证,就是自助法的验证过程。当样本数很大时,大约有1/e=36.8%的样本从来没有被采样过,这里的计算用到高数中的重要极限。

6、超参数调优

  1. 超参数搜索算法包括的几个要素:
  • 目标函数,即算法需要最大化/最小化的目标。
  • 搜索范围,一般通过上限和下限来确定。
  • 算法的其他参数,如搜索步长。
  1. 超参数调优方法有:
  • 网格搜索:最简单、应用最广泛的超参数搜索算法。通过查找搜索范围内所有的点来确定最优值。
    优点:如果采用较大的搜索范围以及较小的补偿,则很大概率能找到全局最优值
    缺点:十分消耗资源和时间,特别是需要调优的超参数比较多的时候。
    实际应用中会先使用较大的搜索范围和较大的搜索步长,寻找全局最优值可能的位置,然后逐渐缩小搜索范围和步长来寻找更精确的最优值。优点是可以降低所需时间和计算量,缺点是目标函数一般是非凸的,可能会错过全局最优值。
  • 随机搜索:随机搜索不再测试上界和下界之间的所有值,而是在搜索范围内随机选取样本点。其理论依据是,如果样本足够多,那么随机采样也能大概率找到全局最优值,或其近似值。
    优点:比网格搜索快。
    缺点:并不能保证找到全局最优值。
    注:随机搜索有非常多种优化方法,如爬山算法、模拟退火(Simulated Annealing,SA)、遗传算法(Genetic Algorithm,GA)等。
  • 贝叶斯优化算法
    网格搜索和随机搜索在测试新点时会忽略前一个点的信息,而贝叶斯优化算法充分利用了之前的信息,通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。
    贝叶斯优化算法学习目标函数形状的方法:首先,根据先验分布,假设一个搜集函数;然后,每一次使用新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;最后,算法测试由后验分布给出全局最优值可能出现的位置。
    优点:比网格搜索、随机搜索更高效
    缺点:贝叶斯优化算法一旦找到了一个局部最优值,会在该区域不断采样,很容易陷入局部最优
    为了弥补贝叶斯优化的的缺陷,需要在搜索和利用之间找到一个平衡点,“搜索”即是在未取样的区域获取采样点,“利用”则是根据后验分布在最可能出现全局最优值的区域进行采样。

7、过拟合与欠拟合

  1. 过拟合:模型对训练数据拟合过当。如模型过于复杂,把噪声数据的特征也学习到模型中,导致模型泛化能力下降。反映到评估指标上,就是模型在训练集上表现很好,但测试集和新数据上表现较差。
  2. 欠拟合:模型没有很好地捕捉到数据的特征,不能很好地拟合数据。反映到评估指标上,就是模型训练和预测表现都不好。
  3. 降低过拟合风险的方法:
  • 从数据入手:获得更多的训练数据,更多的训练数据是解决过拟合最有效的手段。一般实验数据有限,可以通过一定的规则来扩充训练集,如图像分类中可以用数据增强,用GAN来合成大量的新训练数据。
  • 降低模型复杂度。数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。例如神经网络模型中减少网络层数神经元个数等;决策树模型中降低树的深度、进行剪枝等。
  • 正则化方法。给模型的参数加上一定的正则约束,例如将权值的大小加入到损失函数中,如L1/L2正则化。
  • 集成学习方法。将多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。
  1. 降低欠拟合风险的方法:
  • 添加新特征。当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合。通过挖掘“上下文特征”“ID类特征”“组合特征”等新特征,往往能取得更好的效果。在深度学习潮流中,由很多模型可以帮助完成特征工程,如因子分解机梯度提升决策树Deep-crossing等都可以成为丰富特征的方法。
  • 增加模型复杂度。例如在线性模型中添加高次项,在神经网络模型中增加网络层数或神经元个数等。
  • 减小正则化系数。正则化是用来防止过拟合的,但当模型出现欠拟合现象时,需要有针对性地减少正则化系数。

小结

本节关于模型评估也讲得非常清楚,除了一些之前就了解过的知识点之外,这节主要学到了余弦距离不满足三角不等式,以及关于A/B测试的知识。

结尾

如果您发现我的文章有任何错误,或对我的文章有什么好的建议,请联系我!如果您喜欢我的文章,请点喜欢~*我是蓝白绛,感谢你的阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美团外卖订单中心的演进

美团外卖从2013年9月成交第一单以来,已走过了三个年头。期间,业务飞速发展,美团外卖由日均几单发展为日均500万单(9月11日已突破600万)的大型O2O互联网外卖服务平台。平台支持的品类也由最初外卖单品拓展为全品类。 随…

论文浅尝 | 基于知识图谱的智能调研方法(DI佳作)

转载公众号 | 数据智能英文刊题目:A Knowledge Graph Based Approach to Social Science Surveys引用:Z. Pan, Z.J., et al.: A Knowledge Graph Based Approach to Social Science Surveys. Data Intelligence 3(3). doi: 10.1162/dint_a_00107文章摘要…

NYU Google: 知识蒸馏无处不在,但它真的有用吗?

文 | 小伟编 | 小轶导师: 小伟,听说你对知识蒸馏比较了解,你来给我说说知识蒸馏有什么用?我: 知识蒸馏是一种很典型的模型压缩的方法,我们可以用它来有效地从大型教师模型学习小型学生模型,并且学生模型的性能也很不错…

pyscript+py-env实现python+html效果

参考链接:https://developer.aliyun.com/article/976083?spma2c6h.12873581.group.dArticle976083.3a8057c73DINVs 今天我们要介绍的东西,叫做PyScript,使用它,不需要安装任何软件。只要有一个记事本,就能写一段HTMLP…

美团的DBProxy实践

本文整理自美团技术沙龙第10期:数据库技术架构与实践。 美团技术沙龙由美团技术团队主办,每月一期,每期沙龙邀请美团及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 本次沙龙主要围绕数据库相关的主题&a…

LeetCode 606. 根据二叉树创建字符串(递归)

文章目录1. 题目2. 递归解题1. 题目 你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。 空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。 示例 1: 输入: 二叉树: [1,…

论文浅尝 | 面向开放域的无监督实体对齐

笔记整理 | 谭亦鸣,东南大学博士生来源:DASFAA’21链接:https://arxiv.org/pdf/2101.10535.pdf概述与动机知识图谱对齐的目的是建立两个不同知识图谱之间实体的对应关系,如图1,本文作者发现现有的实体对齐方法依赖于标…

聊聊推荐系统

这两天,有种把某宝卸载的冲动,它的“猜你喜欢”推荐简直是我肚子里的蛔虫,每次看都忍不住剁手,钱包就这么日渐消瘦……但从技术的角度想想,不得不说阿里的推荐系统的确做得不错。其实,除了电商平台&#xf…

LeetCode 695. 岛屿的最大面积(图的BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS广度优先搜索2.2 DFS深度优先搜索1. 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。 找到给定的二维数组中最大的岛屿面…

Neo4j:入门基础(一)之安装与使用

原文链接:https://blog.csdn.net/sinat_36226553/article/details/108541370 # 图数据库 链接:什么是原生(Native)图数据库 一般认为具有“无索引邻接”特性的图数据库才称为原生图数据库 链接:常用的图数据库 图存储可以分为属性图、三元组…

论文浅尝 | 问题多样性对于问答的帮助

笔记整理 | 毕胜 东南大学在读博士,研究方向:自然语言处理 知识图谱问题生成通过生成一些合成的问题作为训练语料有效提高了问答系统的效果,本文的研究点是:在QG中,生成问题的文本多样性是否对下游的QA有帮助&#xf…

RDS平台介绍

本文整理自美团点评技术沙龙第10期:数据库技术架构与实践。 美团点评技术沙龙由美团点评技术团队主办,每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域。 本次沙龙主要围绕数据库相关的主题&#…

你已经是一个成熟的地图了,该学会帮我...

文 | 小戏当我们打开百度地图,选定到达目的地,导航软件里的小姐姐马上就用不紧不慢的语调告诉我们“准备出发,全程12公里,预计需要30分钟……”但一看手表上显示的不风驰电掣铁定迟到的时间,肯定不允许我们和导航软件里…

LeetCode 427. 建立四叉树(递归)

1. 题目 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络。网络中每一格的值只会是真或假。树的根结点代表整个网络。对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的. 每个结点还有另外两个布尔变量: isLeaf 和 val。isLeaf 当这个节点是一个叶子…

基于 KIF 的 iOS UI 自动化测试和持续集成

客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程。 一、测试框架的选择 iOS UI 自动化测试框架有不少,其中 UI Automation 是 Apple 早期提供的 UI 自动化测试解决…

论文浅尝 | 利用冻结语言模型的多模态少样本学习

笔记整理 | 李磊,浙江大学硕士,研究方向为自然语言处理链接:https://arxiv.org/abs/2106.13884动机大规模的自回归语言模型(如GPT)在预训练阶段学习到了大量的知识,具有很好的学习新任务的能力&#xff0c…

ACL’21 | 对话系统也要进军多模态了!

文 | 胡煌,梁祖杰编 | 小轶对于一个对话Bot来讲,拥有对视觉信息的感知和联想能力是非常重要的。比如,我们人类在对话中谈到大海的时候,就会自然地联想到蓝天、白云和飞翔的海鸟。然而,当前的对话模型,如 Me…

x86系统与arm64系统不兼容的linux服务器问题

一键离线安装命令: pip install --no-index --find-links/home/digital_package -r requirements.txt --ignore-installed 1 cython 2 gensim:

LeetCode 541. 反转字符串 II

1. 题目 给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保…

HDFS NameNode内存全景

一、概述 从整个HDFS系统架构上看,NameNode是其中最重要、最复杂也是最容易出现问题的地方,而且一旦NameNode出现故障,整个Hadoop集群就将处于不可服务的状态,同时随着数据规模和集群规模地持续增长,很多小量级时被隐藏…