建网站的免费空间网站app开发建设

当前位置: 首页 > news >正文

建网站的免费空间,网站app开发建设,二手车网站模板建设,微博营销案例有哪些1. 混淆矩阵 在二分类问题中#xff0c;混淆矩阵被用来度量模型的准确率。因为在二分类问题中单一样本的预测结果只有Yes or No#xff0c;即#xff1a;真或者假两种结果#xff0c;所以全体样本的经二分类模型处理后#xff0c;处理结果不外乎四种情况#xff0c;每种…1. 混淆矩阵 在二分类问题中混淆矩阵被用来度量模型的准确率。因为在二分类问题中单一样本的预测结果只有Yes or No即真或者假两种结果所以全体样本的经二分类模型处理后处理结果不外乎四种情况每种情况都有一个专门称谓如果用一个2行2列表格描述得到的就是“混淆矩阵”以下是遵循sklearn规范的混淆矩阵布局本文地址https://laurence.blog.csdn.net/article/details/129006571转载请注明出处) 预测为’假’预测为’真’实际为’假’真阴性 / TN (True Negative)假阳性 / FP (False Positive)实际为’真’假阴性 / FN (False Negative)真阳性 / TP (True Positive) 助记 行实际值第1行假第2行真列预测值第1列假第2列真主对角线真阴、真阳均以T开头副对角线假阳、假阴均以F开头 名称缩写解释(1)解释(2)真阴性TN预测为阴实测也为阴预测为假实测也为假假阳性FP预测为阳实测为阴错报预测为真实测为假假阴性FN预测为阴实测为阳漏报预测为假实测为真真阳性TP预测为阳实测也为阳预测为真实测也为真 其中假阳性FP又被称为“Type 1 Error”就是“错报”假阴性FN又被称为“Type 2 Error”就是“漏报”。混淆矩阵的4个值定义清晰没有任何歧义容易让人搞混的是混淆矩阵的布局因为业界没有统一规定过在混淆矩阵中实际值和预测值谁应该是行谁应该是列也没规定真假值/正负值谁应是第一行谁应是第二行所以在不同的资料和程序库中就会出现行列结构或顺序相反的情况所以要特别留意一下混淆矩阵的布局。本文遵循的是sklearn中定义的混淆矩阵结构使用公式描述就是 ConfusionMatrix[TNFPFNTP]Confusion\ Matrix \begin{bmatrix} {TN}{FP}\ {FN}{TP}\ \end{bmatrix}Confusion Matrix[TNFN​FPTP​] 在《Hands-On ML》一书的第三章就计算过针对图片数字5的二分类模型处理结果的混淆矩阵 上述案例使用的是MNIST数据集训练数据6万张图片使用6万张图片训练同时再使用它们进行评估根据红框中的混淆矩阵可知 实际不是数字5模型预测也不是数字5预测正确的图片有53892张实际不是数字5模型预测是数字5预测错误的图片有687张实际是数字5模型预测不是数字5预测错误的图片有1891张实际是数字5模型预测也是数字5预测正确的图片有3530张

  1. 准确率与召回率 在混淆矩阵的四个数据基础之上人们还设计了两种常用的度量指标分别是准确率和召回率 准确率 ( Precision ) 在所有“预测为真”TPFP的样本中有多少是“预测对了”TP的? 这个百分比叫准确率 ( Precision )计算公式 PrecisionTPTPFPPrecision\frac{TP}{TP FP}PrecisionTPFPTP​ 召回率 ( Recall ) 在所有“实际为真”TP FN的样本中有多少是“预测对了”TP的? 这个百分比叫召回率 ( Recall )计算公式 RecallTPTPFNRecall\frac{TP}{TP FN}RecallTPFNTP​
    在《Hands-On ML》一书的第三章给出了一张图清晰明了地阐述了混淆矩阵、准确率、召回率三者之间的关系 注意该图4个象限的布局对应Sklearn中的混淆矩阵的布局。网上有的资料介绍混淆矩阵使用的4象限图表 未必与本图一致它们对于行列是实际值还是预测值的定义可能是反的对于真假值/正负值谁是第一行谁是二行的定义可能是反的请一定注意区分
  2. 准确率与召回率之间的权衡 人们之所以会定义“准确率”和“召回率”这两个概念是因为它们能从两个不同的维度或者说角度度量二分类模型的准确性且在不同的场景里人们对这两个指标的看重程度是不一样的。引用《Hands-On ML》一书给出的两个例子 案例一: 过滤少儿不宜的视频 在这个场景中模型的任务是判定视频是否适合儿童观看True表示健康视频False表示少儿不宜。在该场景下模型应该追求的是宁可将部分健康视频错误地认定为少儿不宜也要最大限度地保证认定为健康的视频一定是健康的这是典型的“优先保证高准确率允许牺牲一定召回率”的场景。 案例二识别商超监控中的盗窃行为 在这个场景中模型的任务是判定视频中的人是否有盗窃行为True表示有False表示无。在该场景下模型应该追求的是宁可将部分正常行为的视频错误地认定为了盗窃也要最大限度地保证所有盗窃行为都能被识别出来这是典型的“优先保证高召回率允许牺牲一定准确率”的场景。
    很多时候鱼和熊掌不可兼得在模型调至最优状态时依然要在“准确率”与“召回率”之间作出“权衡”它们之间是“此消彼长”的博弈关系通过调整阈值是可以调节两者的大小的。我们以《Hands-On ML》第三章“识别数字5”的图片二分类结果为例解释的“准确率”与“召回率”之间的“权衡”或者“博弈”关系 首先图中12张数字图片的排序不是随机的而是根据模型给它们的“评分”按从小到大的顺序在Score数轴上依次排列的。这里是“准确率”与“召回率”之间可调的关键因为虽然二分类模型给出的是一个Yes or No的二元结果但在模型内部其实为维护的是一个“量值”通过调节“阈值”的大小可以决定最终输出的是Yes还是No这会影响一个“不是很容易分辨的样本”最后被划定成FP还是FNTP和TN的分值一般会很高或很低受阈值调整的影响不大这很容易理解。以图示的情况为例 情形一阈值设定在数轴左侧图片9和5的得分之间暂不考虑具体数值则右侧8张图片均会被判定为True8张图片中实际有两个数字2和6被错误判定了所以准确率6/875%同时在总计6张的数字5图片中该阈值设定下全部6张数字5的图片都被判定为True所以召回率6/6100% 情形二阈值设定在数轴中间两张图片5的得分之间暂不考虑具体数值则右侧5张图片均会被判定为True5张图片中实际有1个数字6被错误判定了所以准确率4/580%同时在总计6张的数字5图片中该阈值设定下只有4张数字5的图片都被判定为True所以召回率4/667% 情形三阈值设定在在数轴右侧图片6和5的得分之间暂不考虑具体数值则右侧3张图片均会被判定为True3张图片全部正确判定所以准确率3/3100%同时在总计6张的数字5图片中该阈值设定下只有3张数字5的图片都被判定为True所以召回率3/650%
    从上述三次阈值的调节中我们可以清晰观察到“准确率”和“召回率”之间此消彼长的博弈关系。 关于上述解释中所说的“评分”专业名称叫“Confidence Score”分值越高表示结果为True的可能性越大。在Sklearn中使用SGDClassifier.decision_function(X)方法可以计算出给定样本的评分下图是书中针对某一个数字5的图片计算score的示例代码: 4. 如何设定期望的准确率与召回率 就像前面介绍的两个案例一样不同的情形下人们对于模型的准确率与召回率的期望是不同的而通过设定Score的阈值我们就可以调整模型预测的准确率和召回率。我们可以自行推导一下寻找期望的准确率和召回率组合的方法 假设有1000个样本首先计算出所有样本的Confidence Score按分值从小到大排好以每一个score作为阈值计算对应的准确率和召回率这样就会得出准确率和召回率伴随阈值变化的曲线可以想见当阈值取最小的score时全部样本都会被判定为True所以召回率将是100%而准确率会非常低而当阈值取到最大的score时全部样本都会被判定为False此时召回率将降为0准确率会趋向于无穷大。为此Sklearn专门提供了一个函数sklearn.metrics.precision_recall_curve官方文档用于计算一组样本对应成绩的准确率和召回率曲线下图是《Hands-On ML》一书利用这个函数绘制的数字5的准确率和召回率变化曲线 这张图已经把阈值变化对准确率和召回率的影响描述地非常清晰了从这张图上也能清晰地看出准确率和召回率之间的“此消彼长”的博弈关系。此外我们还可以观察准确率和召回率之间的变化关系就是以Recall为横坐标Precision为纵坐标绘制的曲线一般称之为Precision-Recall曲线下图是《Hands-On ML》针对上述准确率和召回率数据绘制的两者变化关系这张图提供了一些额外的“信息”我们可以从中发现一但准确率低于80%以后就会急剧下降当然这也意味着召回率是在急剧上升。 假设我们最终选择了准确率90% 召回率50% 的组合接下来的工作就是找出它们所对应的阈值然后将这个阈值设置给模型产出符合预期的预测结果。但是这里有一个不问题那就是Sklearn其实并不提供修改其内部阈值的接口不允许用户直接修改怎么办呢非常简单我们只需要拿到score数组然后和自己设定的threshold值进行矩阵逻辑计算就可以轻松获得最终的判定结果布尔数组就是下面的做法 5. ROC ROC的全称是“受试者工作特征”Receiver Operating Characteristic曲线是另一种评判分类模型结果好坏的一方法。ROC曲线与Precision-Recall曲线类似也是用两个比值作为横纵坐标绘制的曲线这两个比值分别是 假阳性率 ( False Positice RateFPR ) 在所有“实际为假”FPTN的样本中有多少是“预测错了”FP的? 这个百分比叫假阳性率FPR计算公式 FalsePositiveRate(FPR)FPFPTNFalse\ Positive \ Rate\ (FPR) \frac{FP}{FPTN}False Positive Rate (FPR)FPTNFP​ 真阳性率 ( True Positive RateTPR ) 在所有“实际为真”TP FN的样本中有多少是“预测对了”TP的? 这个百分比叫真阳性率TPR其实也就是召回率Recall计算公式 TruePositiveRate(TPR)TPTPFNTrue \ Positive \ Rate\ (TPR) \frac{TP}{TPFN}True Positive Rate (TPR)TPFNTP​
    而ROC曲线就是以假阳性率FPR为横坐标真阳性率TPR为纵坐标绘制的曲线 其实前面已经介绍过好几种度量分类模型效果的指标了ROC有什么特别之处呢 TBD…
  3. 概念汇总 准确率 ( Precision ) 在所有“预测为真”TPFP的样本中有多少是“预测对了”TP的? 这个百分比叫准确率 ( Precision )计算公式 PrecisionTPTPFPPrecision\frac{TP}{TP FP}PrecisionTPFPTP​ 召回率 ( Recall ) 在所有“实际为真”TP FN的样本中有多少是“预测对了”TP的? 这个百分比叫召回率 ( Recall )其实也就是真阳性率 ( True Positive RateTPR )计算公式 RecallTPTPFNRecall\frac{TP}{TP FN}RecallTPFNTP​ 真阳性率 ( True Positive RateTPR ) 在所有“实际为真”FN TP的样本中有多少是“预测对了”TP的? 这个百分比叫真阳性率TPR其实也就是召回率Recall计算公式 TruePositiveRate(TPR)TPFNTPTrue \ Positive \ Rate\ (TPR) \frac{TP}{FN TP}True Positive Rate (TPR)FNTPTP​ 真阴性率 ( True Negative RateTNR ) 在所有“实际为假”TN FP的样本中有多少是“预测对了”TN的? 这个百分比叫真阴性率TNR计算公式 TrueNegativeRate(TPR)TNTNFPTrue \ Negative \ Rate\ (TPR) \frac{TN }{TN FP}True Negative Rate (TPR)TNFPTN​ 假阳性率 ( False Positice RateFPR ) 在所有“实际为假”TN FP的样本中有多少是“预测错了”FP的? 这个百分比叫假阳性率FPR计算公式 FalsePositiveRate(FPR)FPTNFPFalse\ Positive \ Rate\ (FPR) \frac{FP}{TN FP}False Positive Rate (FPR)TNFPFP​ 假阴性率 ( False Negative RateFNR ) 在所有“实际为真”FN TP的样本中有多少是“预测错了”FN的? 这个百分比叫假阴性率TNR FalseNegativeRate(FNR)FNFNTPFalse\ Negative \ Rate\ (FNR) \frac{FN}{FNTP}False Negative Rate (FNR)FNTPFN​
    以上所有概念只有准确率是以预测数据为参照作分母进行度量的真阳性率、真阴性率、假阳性率、假阴性率都是以实际数据为参照作分母进行度量的。以下是它们之间存在的一些关系 召回率(Recall)真阳性率(TPR)召回率 ( Recall ) 真阳性率 ( TPR ) 召回率(Recall)真阳性率(TPR) 真阳性率(TPR)假阴性率(FNR)1真阳性率 ( TPR ) 假阴性率( FNR ) 1 真阳性率(TPR)假阴性率(FNR)1 真阴性率(TNR)假阳性率(FPR)1真阴性率 ( TNR ) 假阳性率( FPR ) 1 真阴性率(TNR)假阳性率(FPR)1 参考资料 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率