1.逻辑回归指标
1.1混淆矩阵
混淆矩阵 (Confusion Matrix)是评估分类模型性能的基础。它的四个象限记录了模型预测结果与真实标签之间的四种组合:
| 预测为正 (Positive, P) | 预测为负 (Negative, N) | 行总计 | |
|---|---|---|---|
| 真实为正 (y=1) | 真阳性 (TP) \(\text{①}\) | 假阴性 (FN) \(\text{②}\) | MP (模型预测总正类) |
| 真实为负 (y=0) | 假阳性 (FP) \(\text{③}\) | 真阴性 (TN) \(\text{④}\) | MN (模型预测总负类) |
各项定义:
- ① 真阳性 (True Positive, TP): 真实值是 1,模型正确预测为1。 (击中目标)
- ② 假阴性 (False Negative, FN): 真实值是 1,模型错误预测为0。 (漏报)
- ③ 假阳性 (False Positive, FP): 真实值是0,模型错误预测为1。 (误报)
- ④ 真阴性 (True Negative, TN): 真实值是0,模型正确预测为0。 (正确拒绝)
1.2准确率
\[\text{准确率} = \frac{\text{正确预测的样本总数}}{\text{样本总数}}\] \[\text{准确率} = \frac{\text{TP} + \text{TN}}{\text{MP} + \text{MN}}\]或者用预测总数表示:
\[\text{准确率} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{FN} + \text{FP} + \text{TN}}\]【数据不平衡问题下准确率的欺骗性】尽管准确率计算简单,但在数据不平衡的情况下,它具有欺骗性。如果一个模型总是预测 0,其准确率仍高达 99%,但它在识别关键的少数类1 上的能力(即 TP 和 FN)极差。
例如一个极度不平衡的二分类场景,总样本量为100个:
- 多数类(正样本): 95个正样本(通常记为 \(P\) 或 \(y=1\))。
- 少数类(负样本): 5个负样本(通常记为 \(N\) 或 \(y=0\))。
尽管这个模型的准确率高达 \(95\%\),但它在少数类上的性能是极差的
对多数类(95 个正样本): 模型表现极好,只错判了 1个 \((\text{FN}=1)\)。
对少数类(5 个负样本): 模型表现极差。
- 真阴性 (TN) 只有 1 个:在 5 个负样本中,模型只正确识别了 1 个负样本。
- 假阳性 (FP) 有 4个:模型将 4 个负样本错误地判断为正样本,识别错误率高达 \(80\%\) (\(4/5\))。
这个例子强有力地证明了,在数据不平衡的情况下,我们必须使用对少数类性能更敏感的指标,例如:
- 召回率 (Recall):衡量模型发现所有少数类的能力(在这个例子中:\(\text{Recall} = \frac{\text{TP}}{\text{TP}+\text{FN}} = \frac{94}{95} \approx 98.9\%\))。
- 特异度 (Specificity):衡量模型正确识别负类的能力(在这个例子中:\(\text{Specificity} = \frac{\text{TN}}{\text{TN}+\text{FP}} = \frac{1}{1+4} = 20\%\))。
低特异度 \(20\%\) 清晰地揭示了这个模型的真正缺陷,而这是 \(95\%\) 准确率所掩盖的。
1.3召回率
召回率,也称为查全率 (Sensitivity),衡量的是模型找出所有真正正样本的能力。
召回率的计算公式是:
\[\text{召回率 (Recall)} = \frac{\text{真阳性}}{\text{真阳性} + \text{假阴性}}\] \[\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}\]- TP (True Positive, 真阳性): 模型正确地预测为正类的样本数。
- FN (False Negative, 假阴性): 模型错误地预测为负类的样本数(即漏掉的正样本)。
- 分母 \(\text{TP} + \text{FN}\): 等于所有真实的正样本总数。
召回率回答了这个问题:“在所有真正是正样本的数据中,模型成功找出了多少比例?”
召回率在那些“漏报”的成本非常高的场景中至关重要。这意味着我们宁愿多报一些假的正样本 (FP),也不能漏掉任何一个真正的正样本 (FN)。
| 应用场景 | 正类 (1) 的定义 | 召回率的重要性 |
|---|---|---|
| 医学诊断 | 患者患有某种疾病。 | 高召回率是必需的。 漏诊(FN,把患病病人判为健康)可能导致生命危险。多报(FP,把健康人判为患病)只是增加进一步检查的成本。 |
| 反欺诈/安全 | 交易是欺诈。 | 高召回率至关重要。 漏掉欺诈交易(FN)会导致巨大的经济损失。 |
| 推荐系统 | 用户对某商品感兴趣。 | 高召回率是基础。 必须确保将用户可能感兴趣的所有商品都纳入推荐池中,以供用户选择。 |
召回率通常与另一个重要指标查准率 (Precision) 相互制约,二者构成著名的Precision-Recall 权衡:
- 查准率 (Precision): \(\frac{\text{TP}}{\text{TP} + \text{FP}}\)。衡量模型在所有预测为正的样本中,有多少是真正正确的。
通常,提高召回率(找到更多的正样本)往往是以降低查准率(误报更多的负样本)为代价的。模型设计者需要根据具体业务需求(例如,是“宁愿不错杀一个”还是“宁愿不放过一个”)来调整阈值,在召回率和查准率之间找到最佳平衡点。
1.4准确率和召回率和阀值有关
逻辑回归和 Softmax 回归的正向传播(计算 \(h_{\theta}(x)\))会给每个样本分配一个概率 \(\phi\)。默认情况下,这个阈值通常设定为0.5。
改变这个阈值,会直接改变模型预测 \(\hat{y}=1\) 和 \(\hat{y}=0\) 的样本数量,从而改变混淆矩阵的四个值(TP, FN, FP, TN),最终影响所有指标。
这种阈值对指标的影响,引出了 查准率-召回率权衡 (Precision-Recall Trade-off):
- 如果业务目标是“不放过任何一个”(高召回率): 应该选择一个较低的阈值。
- 如果业务目标是“不误判任何一个”(高查准率): 应该选择一个较高的阈值。
在实际建模中,通常会绘制 ROC 曲线或 Precision-Recall 曲线,来可视化模型在所有可能的阈值下的表现,从而选择最符合业务需求的最佳阈值。
另外,阈值与产品形态有关。
不同的产品形态,其对错误类型的容忍度不同,从而要求模型在召回率和查准率之间做出不同的权衡,而这种权衡是通过调整阈值来实现的。
模型算法提供的是概率,而产品形态决定了你如何使用这个概率,即决定了要设定一个什么样的阈值,来将模型的通用能力,转化为符合特定商业需求的决策。
例如:反政治反动暴力黄色,追求的一定是高的召回率(不放过任何一个)。
这种和产品形态有关的事情,应该由产品经理去做。
准确和召回跟阈值有关,而阈值的选择依赖于产品形态。那么到底该用什么单纯评价模型的好坏呢?到底什么指标和阈值无关呢?
将模型的内在质量(与阈值无关)与应用时的决策(与阈值有关)区分开来。当我们要单纯评价模型“好坏”,即评价模型对概率的排序能力时,确实需要使用与阈值无关的指标。
评价模型内在质量,即评价模型将正样本和负样本的概率正确分开的能力,主要使用以下两个指标,它们基于模型在所有可能阈值下的表现
1.5AUC-ROC
AUC-ROC (Area Under the Receiver Operating Characteristic Curve)
ROC是曲线,AUC是一个值,代表曲线下面的面积。不同模型的优劣可以通过比较AUC值判断。AUC越大,越优秀。AUC值衡量的是模型对正负样本的排序能力。
AUC 的核心定义是:
\[AUC = \frac{\text{正样本比负样本预测分值大的组合数}}{\text{正反样本的组合数量}}\]如果从数据集中随机抽取一个正样本和一个负样本,模型给正样本的预测概率(或分数)高于给负样本的预测概率的概率,就是 AUC 值。这个定义与任何具体的阈值无关,它只关心模型输出的概率分数是否能正确地将正样本排在负样本前面。在实际计算中,尤其是当预测分数是离散的时,AUC 可以通过对 ROC 曲线下的梯形面积求和来近似或精确计算
AUC-ROC 是评估 GLM 模型(如逻辑回归和 Softmax 回归)内在能力的最佳指标。
ROC 曲线描绘了在所有可能的分类阈值下,模型的真阳性率 (True Positive Rate, TPR) 和 假阳性率 (False Positive Rate, FPR) 之间的关系。
ROC 曲线是从 (0, 0) 到 (1, 1) 的一条曲线。一个优秀的模型应该使得曲线尽可能靠近左上角 (0, 1),这意味着在很低的误报率(FPR)下,就能获得很高的召回率(TPR)。
计算方式:

- TPR (召回率/敏感度): \(\frac{\text{TP}}{\text{TP} + \text{FN}}\)
- FPR (特异度补充): \(\frac{\text{FP}}{\text{FP} + \text{TN}}\)
- AUC-ROC 就是这条曲线下的面积。
- ROC 曲线绘制的是 真阳性率 (True Positive Rate, TPR) 随 假阳性率 (False Positive Rate, FPR) 变化的关系。ROC 曲线代表了分类器敏感度 (Sensitivity) 和 特异度 (Specificity) 之间的权衡。如果你想要提高召回率(TPR),你将不可避免地提高误报率(FPR)。
AUC-ROC 衡量的是模型将随机选择的一个正样本排在随机选择的一个负样本之前的概率。
- 值范围: \([0.5, 1]\)。
- 值解释: 0.5代表随机猜测;1.0代表完美分类。
ROC 曲线本身就是通过遍历所有阈值得到的。因此,AUC-ROC 作为一个单一数值,总结了模型在所有阈值下的整体性能,与最终选定的特定阈值无关。 它评价的是模型对概率的排序能力。
AUC的值一定越高越好吗?不会过拟合吗?
AUC 的值是越高越好,但前提是这个高 AUC 是在 独立的测试集或验证集 上获得的。 如果高 AUC 仅在训练集上取得,则很可能存在过拟合。
高 AUC(接近 1.0)意味着模型能够更好地将正样本(高概率/分数)排在负样本(低概率/分数)之前。AUC 衡量的是模型概率分数本身的质量。AUC 越高,说明模型在所有可能的阈值下,其表现都越优秀。
只有当测试集 AUC 较高时,我们才能确信这是一个既具有强大区分能力,又具有良好泛化能力的优秀模型。
- 在训练集上,我们希望 AUC 尽可能高(趋近 1.0)。
- 在测试集上,我们希望 AUC 尽可能高,并且与训练集 AUC 的差距尽可能小。
为了防止过拟合,我们会在训练 Softmax 回归和逻辑回归等模型时,引入 L1 或 L2 正则化(也称为权重衰减),通过惩罚过大的参数 \(\theta\) 来降低模型复杂度,从而提高模型的泛化能力和测试集 AUC。
1.6AUPRC
AUPRC (Area Under the Precision-Recall Curve)
PR 曲线描绘了在所有可能的分类阈值下,模型的查准率 (Precision) 和 召回率 (Recall) 之间的关系。
AUPRC 衡量的是模型在不同召回水平下查准率的平均表现。
AUPRC 对数据不平衡问题更敏感。 在数据高度不平衡时,AUPRC 的值能更准确地反映模型在少数类上的识别能力。如果产品形态涉及罕见事件,AUPRC 往往是比 AUC-ROC 更好的“纯模型”评估指标。
2.总结
1.正确率 问题:容易被两类不平衡所影响 指标被阈值所影响
2.准确率和召回率 单独看一类预测结果的指标 问题:指标被阈值所影响
3.ROC曲线 和auc值:真正反映了模型的能力,表达了正负样本分数的区分度 问题:推理过程不好理解 auc值一般是0.7~0.85之间(面试不要吹的太夸张)
