本文是吴恩达《机器学习》视频笔记第69篇,对应第6周第11个视频。 上一节讲了当遇到偏斜类的时候,如何对算法效果进行评价,使用查准率和召回率。在很多实际应用中,我们还希望能在查准率和召回率间进行权衡,使得两个指标都取得不错的结果。 我们就搞两个模型,一个是高查准率、低召回率的;一个是高召回率、低查准率的。 ? 对于大多数回归模型,你更改这个临界值(threshold)会改变查准率、召回率。 一种办法,算查准率P和召回率R的均值,如下图。 而到底怎样的查准率、召回率的取值比较好,可以使用F1值进行权衡。 又或者,可以同时两个模型并存:(1)高查准率、低召回率;(2)高召回率,低查准率。
这样,对于总是预测病人肿瘤为良性的算法,其查全率是 0 ---- 11.4 查准率和查全率之间的权衡 Trading Off Precision and Recall 首先回顾 查准率(Precision ) 和 查全率(Recall) 的定义,其中 查准率(Precision)=TP/(TP+FP) 例,在所有预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。 如果 希望只在非常确信的情况下预测为真(肿瘤为恶性) ,即希望 更高的查准率 ,可以使用比 0.5 更大的阀值,如 0.7,0.9。 对于同一个机器学习系统不同的阈值往往对应 不同的查准率和查全率 ,那如何选择阈值才能平衡查准率和查全率,使其都有较好的结果呢? ? F1 值 使用 F1 值: 其中 P 表示 查准率 ,R 表示 查全率 。选择 F1 值最高的阈值。
为了弥补这个情况,则引入查准率和召回率的概念。 2、查准率 查准率,表示的是真正例占所有预测结果是正例的比例,即查准率=TP/(TP+FP),其衡量的是算法的正确性。 4、关系 查准率和召回率关系如下图所示: ? 当一个算法的查准率很高,通常召回率就较低;反之亦然。考虑到logistic回归算法中,目前采用的是h(x)>=0.5时,认为y=1。 此时,系统的查准率(衡量结果正确度)非常高,但是其召回率会非常低(找出正确结果的能力)。 同理,如果调整成h(x)>=0.1时,y=1。 此时查准率会非常低,但是召回率会非常高(基本把所有可能都囊括了,肯定找出正确结果的能力很高,但是这个系统是没用的系统)。
P(Precision) 查准率:就是上面说的"准"。字面意思好理解呀,就是在预测当中查找准确个数的比例。 真正预测准确的数量/所有真正好的数量 = 4 / 5 F值是: F(k) = ( 1 + k ) * P * R / ( ( k*k ) * P + R ) 注释:k>0 度量了 查全率 对 查准率 k>1查全率有更大影响;k<1查准率有更大影响。 在这个实例中可以表示为:k>1就是查全率有更大影响,就是好的香蕉最好都预测出来,因为你觉得不想把好的当成坏的扔点( 真可惜,我爱吃啊 ) ;k<1查准率有更大影响,就是一定要准确,省时间,省力更重要,不在乎好的香蕉当坏的扔点
查准率,查全率,F1 分数 假设现在你需要识别猫的图片,并且你已经开发出了 A 和 B 两个分类器.评估你的分类器的方式是观察他的查准率(precesion)和查全率(recall) ? Precision 查准率 在你的分类器标记为猫的例子中,有多少真的是猫.95% 的机会表示当你的分类器认为这是一只猫时,95%的机会分类正确. 事实证明,虽然使用查准率和查全率来评估一个分类器是十分合理的,但是查准率和查重率之间往往需要一个折衷. 例如如果出现 A 分类器在查全率上表现得更好,但是 B 分类器在查准率上表现得更好. F1 分数 在机器学习的文献中,权衡查准率 P 和查全率 R 的方法是计算 P 和 R 的调和平均值(harmonic mean)即 F1 分数. ? Summary 很多机器学习团队都是这样,有一个开发集,用于测量查准率和查全率还会定义一个单一数值评估指标(单实数评估指标)能让你快速从众多分类器中挑选合适的分类器.加速机器学习算法的迭代过程. ?
选取合适的阈值点要根据实际需求,比如我们想要高的查全率,那么我们就会牺牲一些查准率,在保证查全率最高的情况下,查准率也不那么低。。 11 点插值计算方式计算 AP 公式如下: 这是通常意义上的 11 points_Interpolated 形式的 AP,选取固定的 {0,0.1,0.2,…,1.0} 11 个阈值,这个在 PASCAL2007 中使用 这里因为参与计算的只有 11 个点,所以 K=11,称为 11 points_Interpolated,k 为阈值索引 P_{interp}(k) 取第 k 个阈值所对应的样本点之后的样本中的最大值 PASCAL 论文给出的 11 点计算 AP 的公式如下。 metric: # 11 point metric ap = 0.
是指每个类别的平均查准率的算术平均值。即先求出每个类别的平均查准率(AP),然后求这些类别的AP的算术平均值。 图中的曲线C就是一条P-R曲线,P表示纵轴的查准率precision,R表示横轴的召回率或称为查全率recall。 公式(1)中规定了r会从0-1.0以0.1为步长取11个值,然后将这11个r对应的11个p累加求算术平均值就得到了AP。 接着我们取不同的置信度阈值,得到更多的P-R对,然后根据公式(2)找到所有大于指定召回率r的召回率rhat所对应的的p的最大值(采用这种方法是为了保证P-R曲线是单调递减的,避免摇摆),作为当前指定召回率r条件下的最大查准率
是指每个类别的平均查准率的算术平均值。即先求出每个类别的平均查准率(AP),然后求这些类别的AP的算术平均值。 [i20190926091648.png] 图中的曲线C就是一条P-R曲线,P表示纵轴的查准率precision,R表示横轴的召回率或称为查全率recall。 公式(1)中规定了r会从0-1.0以0.1为步长取11个值,然后将这11个r对应的11个p累加求算术平均值就得到了AP。 接着我们取不同的置信度阈值,得到更多的P-R对,然后根据公式(2)找到所有大于指定召回率r的召回率rhat所对应的的p的最大值(采用这种方法是为了保证P-R曲线是单调递减的,避免摇摆),作为当前指定召回率r条件下的最大查准率
二、距离度量 1、欧氏距离(Euclidean Distance) n 维空间点 a(x_{11},x_{12},...,x_{1n}) 与 b(x_{21},x_{22},... n 维空间点 a(x_{11},x_{12},...,x_{1n}) 与 b(x_{21},x_{22},... 3、余弦距离(Cosine Distance) 两个 n 维样本点 a(x_{11},x_{12},...,x_{1n}) 和 b(x_{21},x_{22},... 5、闵可夫斯基距离(Minkowski Distance) 闵氏距离的定义:两个 n 维变量 a(x_{11},x_{12},... ,一般来说,查准率高时,查全率往往会偏低,查全率高时,查准率往往会偏低。
Page4: 概念学习(17)(concept learning) 广义的归纳学习大体相当于从样例中学习,而狭义的归纳学习则要求从训练数据中学得概念,因此亦称为概念学习或概念形成 Page4: 归纳学习(11 见仁见智 Page11: 机械学习 信息存储与检索 Page11: 类比学习 通过观察和发现学习 Page11: 示教学习 从指令中学习 Page12: 统计学习(139) 如SVM,核方法 Page14 Page30: 查准率(precision) 预测为真且正确的结果占所有预测结果的比例。 Page31: P-R曲线 查准率(纵轴)与查全率(横轴)的关系曲线 Page31: 平衡点(break-even point,bep) 查准率=查全率时的取值。 Page41: McNemar检验 两个学习器分类差别列联表 算法B\A 正确 错误 正确 e00 e01 错误 e10 e11 检验变量|e01-e10|是否服从正态分布,服从则认为两学习器性能相同等同于检查
2.2 查全率 VS 查准率 查全率=(检索出的相关信息量/系统中的相关信息总量)100% 查准率=(检索出的相关信息量/检索出的信息总量)100% 前者是衡量检索系统和检索者检出相关信息的能力,后者是衡量检索系统和检索者拒绝非相关信息的能力 5POST doctor_index/_search 6{ 7 "query": { 8 "match_phrase": { 9 "content": "刘强东" 10 } 11 } 12} 原因分析: token position 刘强 0 东方 1 方才 2 方 3 才 4 只是 5 睡觉 6 睡 7 觉了 8 觉 9 了 10 并没有 11 并没 12 并 13 没有 "text", 8 "analyzer": "ik_max_word", 9 "fields": { 10 "standard": { 11 要看你的系统对查全率和查准率的要求了,正常的业务场景: 1)动态更新词库、词典; 2)match_phrase结合slop就能解决问题。 所以,一定要结合自己的业务场景。
昨天的控件点击时通过外面,加个 listener。然后如果外部设定当前选中位置,也要刷新一下页面,所以刷新逻辑放到设置 textSelectedIndex 中去。
通常来讲,查准率高,查全率就低,反之亦然。 或者固定查全率,比较查准率。 β>0,β度量了查全率对查准率的重要性,β=1时即为F1 β>1,查全率更重要,β<1,查准率更重要 多分类的F1 多分类没有正例负例之说,那么可以转化为多个二分类,即多个混淆矩阵,在这多个混淆矩阵上综合考虑查准率和查全率 ,即多分类的F1 方法1 直接在每个混淆矩阵上计算出查准率和查全率,再求平均,这样得到“宏查准率”,“宏查全率”和“宏F1” ? 方法2 把混淆矩阵中对应元素相加求平均,即 TP 的平均,TN 的平均,等,再计算查准率、查全率、F1,这样得到“微查准率”,“微查全率”和“微F1” ? ?
有交叉时,需要在具体的查准率或者查全率下进行比较。 ? 平衡点 (Break Event Point BEP): 即上图中三个红点。 综合考虑查准率,查全率的度量 当 查准率=查全率 时的点,谁大谁比较优。 F1 度量: 也是综合考虑查准率,查全率的度量,比 BEP 更常用: ? 则查全率有更大影响,β < 1 则查准率有更大影响,β = 1 则为 F1。 All (OvA) 分类问题 这时会在 n 个二分类问题上综合考虑查准率,查全率。 宏~ :先在每个混淆矩阵上计算率,再求平均 宏查准率 ? 宏查全率 ? 宏 F1 ? 微~ :先将各个混淆矩阵上对应元素求平均,再计算率 微查准率 ? 微查全率 ? 微 F1 ?
其中用到了评估度量值:查准率(precision)和召回率(recall)。如下图: ? 可以知道,查准率是在所有我们预测结果为真的情况下,预测成功的概率;召回率是在所有实际结果为真的情况下,我们预测成功的概率。 那么回到刚才的问题,查准率是在所有我们预测为癌症的患者中,实际患有癌症的概率;召回率是在全部实际患有癌症的患者中,我们预测成功的概率。 权衡查准率和召回率 回顾逻辑回归算法: ? 当我们把临界值 0.5 增大,查准率就会增大而召回率就会减小,当我们把临界值 0.5 减小,查准率就会减小而召回率就会增大。 ? 根据 F1 值的定义,当查准率和召回率其中有一个为 0 时,F1 值就为 0,因此 F1 值可以作为评估度量值。
于是,对应地定义查准率(precision)和查全率(recall)这两个技术指标(有的文献里,将查准率翻译为精确率;将查全率翻译为召回率)来评估一份预测结果的效果。比较直观的定义如图2所示。 ? 具体的定义如公式(3),从数学上来看,它其实是查准率与查全率的调和平均数。对于二元分类问题, ? 综合考虑了预测结果的查准率和查全率,是一个比较好的评估指标。 ? 其实从模型的角度来看,查准率与查全率的“相互矛盾”给了我们更多的调整空间。应用场景不同,我们对查准率和查全率的要求是不一样的。在有的场景中,关注的焦点是查全率。 也就是说,电商平台重视查全率,但不太关心查准率。这时就可以调低模型的预测标准,通过牺牲查准率来保证查全率。 但在有的场景中,查准率才是重点。 当靠近0时,偏向查准率,而很大时,则偏向查全率,如图4所示。 ? ? 图4 04 总结 查准率、查全率和F-score是最为常用的二元分类结果评估指标。
类似的问题在很多分类场景下都会出现,“查准率”(precision)与“召回率”(recall)是更为适合的度量标准。 一般来说,查准率高时,召回率往往偏低;召回率高时,查准率往往偏低。 例如,在病毒感染者检测中,若要提高查准率,只需要采取更严格的标准即可,这样会导致漏掉部分感染者,召回率就变低了;反之,放松检测标准,更多的人被检测为感染,召回率升高了,查准率又降低了. 通常只有在一些简单任务中,才能同时获得较高查准率和召回率。 查准率和召回率在不同应用中重要性也不同。 根据混淆矩阵,查准率、召回率也可表示为: 查准率 = 主对角线上的值 / 该值所在列的和 召回率 = 主对角线上的值 / 该值所在行的和 ④ 实验 利用sklearn提供的朴素贝叶斯分类器分类,并打印查准率
介绍 在机器学习中,性能度量主要体现在三个指标: 查准率(P)、查全率(R)、F1 。 def performance(tp, fn, fp, tn): # 查准率 P = tp / float(tp + fp) # 查全率 R = tp / float(tp P, R, F1 = performance(white_pixels, red_pixels, green_pixels, black_pixels) print '查准率 P = {:>.3f}, red_pixels = 29158, 530899, 75994, 3949 sum_pixels = 640000 def performance(tp, fn, fp, tn): # 查准率 F1 = 0.930 以 标注框结果 作为 预测值, 二值化结果 作为 ground_truth 时: 实际 横截面区域 占图像 0.948, 预测值为 0.836, 损失比例为 0.119 查准率
混淆矩阵的用途是计算查准率和查全率。 查准率与查全率(Precision & Recall) 查准率(又称准确率)和查全率(又称召回率)相比分类精度来说更进一步,使我们对模型评估有了更加具体的了解。 查准率衡量的是我们的分类器预测正类的准确性 ? 查准率的重点在于准确地预测正类,它显示了我们预测的正类中有多少是真正的正类。 我们不可能同时提高查准率与查全率,因为这二者仿佛鱼和熊掌,不可兼得。提高查准率会降低查全率,反之亦然。根据任务的不同,我们可以最大限度地提高查准率或查全率中的某一个。 还有一种指标把查准率与查全率结合了起来,这就是F1度量。 F1度量(F1 Score) F1度量是查准率与查全率的调和平均的倒数。 ? 因此,不同样本的分类结果会随着阈值的改变而变化,进而改变查准率与查全率等指标。 ROC曲线通过组合不同阈值取值下的混淆矩阵,总结了模型在不同阈值下的性能。
scikit-learn releases 页面:https://github.com/scikit-learn/scikit-learn/releases F1 分数的定义:查准率是指预测结果中,每个类别预测正确的比例 两者的分母不同,查准率的分母是预测结果的样本数,召回率的分母是样本标签的样本数。F1 分数是查准率和召回率的调和平均值。 问题原因:在计算 F1 分数时,如果某个类别的查准率和召回率都为 0,那么根据 zero_division 参数的设定,F1 分数可能被赋值为 1.0 或 np.nan,而非正确的 0.0。 如果存在任何一个类别的查准率和召回率都为 0,而对应的 F1 分数为 1.0 或 nan,那么这个 F1 分数的计算就是错误的。 但要注意了解这一参数变化将如何影响查准率吧、召回率和 F1 分数! ️