下面我们来看一个具体的例子,假设我们对老鼠做研究,希望通过老鼠的体重来预测其患心脏病的概率,我们采用逻辑回归算法来建模,下图是预测结果,图中有 10 个老鼠样本点,其中红色点代表实际健康的老鼠,蓝色点代表实际患病的老鼠,这些点用一条逻辑回归曲线拟合,图中还有一条 P=0.5 的直线用来表示阈值为 0.5,可以看出,高于 P=0.5 的 5 只老鼠被预测为患病,而其他 5 只老鼠被预测为健康,预测成功率(Accuracy)为 80%:
下面我们通过以上数据,来画一条 ROC 曲线 。首先取阈值为 1,此时所有的老鼠都被预测为未患病,根据样本真实患病情况,我们可以得到如下混淆矩阵
根据上述混淆矩阵,我们就可以算出一组 Sensitivity 和 Specificity 的值 。接着我们不断调整阈值,以获得所有的 Sensitivity 和 Specificity 对,因为这里我们的样本点较少,所以让阈值根据样本点来采样即可,依然用横线表示阈值,则所有阈值的采样情况如下:
我们把这些阈值对应的混淆矩阵都列出来:
然后,计算这些混淆矩阵对应的 Sensitivity 和 1-Specificity:
根据该表格,以 1-Specificity 为横轴,Sensitivity 为纵轴作图,通常,在画 ROC 曲线时,我们把 1-Specificity 对应的坐标轴记为 FPR (False Positive Rate),把 Sensitivity 对应的坐标轴记为TPR (True Positive Rate),如下:
ROC 曲线有以下特点:
根据 ROC 曲线的第 1 个特点:「曲线越靠近左上角,模型的效果越好」,意味着一个更好模型,其曲线下方的面积更大,我们把 ROC 曲线下方的面积称为 AUC (Area Under Curve),有了这个概念后,只需一个数值就可以衡量模型的好坏了,上面示例模型的 AUC 如下:
通常情况下我们都使用 AUC 来评估模型,既然是”通常”,那肯定就有例外:当患病率 (或正样本占比)非常小时,Ture Negative 就会非常大,这个值就会使影响 FPR,使 FPR 较小,为了避免这种影响,我们可以将 FPR 用另一个指标代替:Precision
Precision 的含义是预测患病的样本中,实际也患病的比例;这样,将 Precision 和 Sensitivity 结合起来,会让我们更专注于患病 (正样本) 的预测效果,而机器学习中的另一个效果指标: F1 Score ,就是专门负责这件事儿的
上面的公式中,Recall 等价于 Sensitivity,和 AUC 一样,两个模型互相比较,F1 Score 越大者,预测效果越好,而且 F1 Score 能更好的衡量正样本的预测效果 。
本文通过一个医学例子——是否患心脏病——来讲述什么是混淆矩阵、ROC 曲线、AUC 及 F1 Score,其中,我们还一起学习了 ROC 曲线是如何画出来的,最后,我们还谈到了 AUC 和 F1 Score 以及它们之间细微的差别 。
【混淆矩阵例题及答案 混淆矩阵】 需要注意的是,二分类评估并不限于对患病及未患病这两种情况的分类,考虑到通用性,你完全可以将本文中的患心脏病替换为正样本、把未患心脏病替换为负样本 。
秒懂生活扩展阅读
- 对角矩阵怎么求
- 淘宝规则|发布混淆信息规则变更
- 特征向量怎么求
- 做好淘宝内容营销,矩阵方向你清楚了吗?
- 矩阵式组织结构 矩阵
- 淘宝发布混淆信息规则解读:达芙妮等混淆品牌将清退
- 自媒体矩阵指的是什么意思
- 矩阵对角化的条件
- 怎样求矩阵的秩
- 如何打造抖音矩阵