文章目录前言它是什么示例三分类问题类别猫、狗、兔主要用途直观展示全局错误分布计算多分类评估指标识别“易混淆”的类别模型偏差发现“类别不平衡”的影响准确率总体准确率平均准确率加权平均准确率对比前言多分类逻辑回归混淆矩阵是用于评估多分类模型例如逻辑回归扩展到多类情况如Softmax回归性能的一种特定表格布局。例如:它是什么混淆矩阵是一个N × N N \times NN×N的矩阵其中N NN是类别的数量用于比较模型预测结果与真实标签之间的差异。行通常代表真实的类别实际值。列通常代表模型预测的类别预测值。单元格矩阵中的每个单元格C i j C_{ij}Cij表示“真实类别为i ii但被模型预测为类别j jj”的样本数量。示例三分类问题类别猫、狗、兔假设我们有一个包含100个样本的测试集混淆矩阵可能如下所示真实\预测猫狗兔猫1532狗4251兔2345对角线15, 25, 45都是预测正确的情况。非对角线都是预测错误的情况。eg. 第二行第一列的 4 表示“有4只真实的狗被错误地预测成了猫”。主要用途混淆矩阵不仅仅是一张数字表它对于理解模型在多分类问题中的表现至关重要因为它能揭示比简单准确率更丰富的信息。直观展示全局错误分布只看准确率Accuracy你可能只知道模型在测试集上正确率是 85%对角线和除以总数。但混淆矩阵能告诉你错误都发生在哪些类别之间。eg. 从上面的矩阵可以看出模型经常混淆“猫”和“狗”但很少把“猫”和“兔”混淆。计算多分类评估指标基于混淆矩阵可以为每个类别计算以下关键指标精确率预测为该类别的样本中有多少是真正正确的。eg. 精确率——“预测为猫的里面有多少是真的猫”精确率 对角线元素 该列的总和 \text{精确率} \frac{\text{对角线元素}}{\text{该列的总和}}精确率该列的总和对角线元素针对“猫”15 15 4 2 0.714 \frac{15}{1542}0.7141542150.714召回率真实为该类别的样本中有多少被正确找出来了。eg. 召回率——“真实为猫的里面有多少被正确预测出来了”召回率 对角线元素 该行的总和 \text{召回率} \frac{\text{对角线元素}}{\text{该行的总和}}召回率该行的总和对角线元素针对“猫”15 15 3 2 0.75 \frac{15}{1532}0.751532150.75F1分数精确率和召回率的调和平均。F1 2 × 精确率 × 召回率 精确率 召回率 \text{F1} \frac{2 \times \text{精确率} \times \text{召回率}}{\text{精确率} \text{召回率}}F1精确率召回率2×精确率×召回率针对“猫”2 × 0.714 × 0.75 0.714 0.75 ≈ 0.731 \frac{2 \times 0.714 \times 0.75}{0.714 0.75} \approx 0.7310.7140.752×0.714×0.75≈0.731识别“易混淆”的类别模型偏差这是混淆矩阵最重要的诊断功能。如果你发现某两个类别比如“狼”和“哈士奇”之间的非对角线数字特别高这意味着特征相似性模型无法有效区分这两个类别可能是因为它们的特征过于相似或者训练数据中这两个类别的区分度不够。数据不平衡某个类别样本太少导致模型倾向于将其预测为样本多的那个大类。发现“类别不平衡”的影响通过观察矩阵的行和与列和可以判断模型是否偏向于多数类。如果某个类别的样本数行和远大于其他类别但模型表现不佳混淆矩阵会显示模型倾向于把别的类预测为这个大类。准确率为了方便阅读再次列出矩阵和之前算出的每类指标真实\预测猫狗兔样本总数行和猫153220狗425130兔234550预测总数列和213148100总计每类的性能指标猫精确率 P c ≈ 0.714 15 / 21 召回率 R c 0.75 F 1 ≈ 0.731 狗精确率 P d ≈ 0.806 25 / 31 召回率 R d ≈ 0.833 25 / 30 F 1 ≈ 0.819 兔精确率 P r ≈ 0.938 45 / 48 召回率 R r 0.9 45 / 50 F 1 ≈ 0.918 \text{猫}\text{精确率 }P_c \approx 0.714 15/21\text{召回率 }R_c 0.75 F1 ≈ 0.731 \\ \text{狗}\text{精确率 }P_d \approx 0.806 25/31\text{召回率 }R_d \approx 0.833 25/30F1 ≈ 0.819 \\ \text{兔}\text{精确率 }P_r \approx 0.938 45/48\text{召回率 }R_r 0.9 45/50F1 ≈ 0.918\\猫精确率Pc≈0.71415/21召回率Rc0.75F1≈0.731狗精确率Pd≈0.80625/31召回率Rd≈0.83325/30F1≈0.819兔精确率Pr≈0.93845/48召回率Rr0.945/50F1≈0.918总体准确率在讲两种平均之前先明确最简单的总体准确率作为参照公式 所有预测正确的样本数 总样本数 计算 15 25 45 100 85 100 0.85 \text{公式} \frac{\text{所有预测正确的样本数}}{\text{总样本数}}\\[10pt] \text{计算} \frac{15 25 45}{100} \frac{85}{100} \mathbf{0.85}\\[10pt]公式总样本数所有预测正确的样本数计算100152545100850.85含义为整体上有 85% 的样本被正确分类。平均准确率这里容易和上面的总体准确率混淆需要注意区分。别名宏平均准确率计算方式先分别算出每一类的准确率注意是每一类的准确率不是精确率然后对所有类取算术平均。每一类的准确率 该类预测正确的数量 / 该类真实的总数量运算步骤1. 猫的准确率 15 / 20 0.75 2. 狗的准确率 25 / 30 ≈ 0.833 3. 兔的准确率 45 / 50 0.9 4. 平均准确率 0.75 0.833 0.9 3 ≈ 2.483 3 0.828 \text{1. 猫的准确率} 15 / 20 0.75\\[10pt] \text{2. 狗的准确率} 25 / 30 \approx 0.833\\[10pt] \text{3. 兔的准确率} 45 / 50 0.9\\[10pt] \text{4. 平均准确率} \frac{0.75 0.833 0.9}{3} \approx \frac{2.483}{3} \mathbf{0.828}\\[10pt]1.猫的准确率15/200.752.狗的准确率25/30≈0.8333.兔的准确率45/500.94.平均准确率30.750.8330.9≈32.4830.828为什么是0.828而不是总体准确率的0.85原因平均准确率给每个类别赋予了相同的权重各占 1/3。虽然“兔”类表现很好0.9且样本多但“猫”类表现较差0.75且样本少。在计算平均准确率时“猫”类差的表现在权重上被提升到了和“兔”类一样高因此分数被拉低到了 0.828。加权平均准确率别名加权宏平均准确率计算方式先算出每一类的准确率然后用该类样本数量占总数的比例作为权重进行加权平均。运算步骤各类权重猫20/100 0.2狗30/100 0.3兔50/100 0.5加权计算加权平均准确率 ( 0.75 × 0.2 ) ( 0.833 × 0.3 ) ( 0.9 × 0.5 ) 0.15 0.2499 0.45 ≈ 0.85 \begin{aligned} \text{加权平均准确率} (0.75 \times 0.2) (0.833 \times 0.3) (0.9 \times 0.5) \\ 0.15 0.2499 0.45 \\ \approx \mathbf{0.85} \end{aligned}加权平均准确率(0.75×0.2)(0.833×0.3)(0.9×0.5)0.150.24990.45≈0.85发现了吗这里的 0.85 正好等于最开始的总体准确率原因加权平均准确率本质上就是在计算总体准确率只是换了一种拆分再求和的形式。因为每一类的准确率乘以该类样本权重实际上就是在计算该类正确分类的样本数占总数的比例求和后自然等于总体准确率。对比为了更直观地对比这几个指标的区别可以看下面这张表指标计算核心特点适用场景总体准确率正确的总数 / 总数容易被大类别主导类别均衡时的快速参考平均准确率各类准确率的算术平均平等对待每个类别小类别的表现和大类别一样重要关注小类、数据不平衡、需要保守评估时加权平均准确率各类准确率的加权平均按样本量加权结果等于总体准确率官方报告常用反映按样本量加权后的综合表现回到“猫狗兔”的例子思考如果只看总体准确率0.85可能会觉得模型还不错。但如果查看平均准确率0.828就会发现模型在少数类猫上的表现其实拖了后腿不如多数类兔那么理想。平均准确率正是帮助捕捉到这种差异的工具。
多分类逻辑回归混淆矩阵
文章目录前言它是什么示例三分类问题类别猫、狗、兔主要用途直观展示全局错误分布计算多分类评估指标识别“易混淆”的类别模型偏差发现“类别不平衡”的影响准确率总体准确率平均准确率加权平均准确率对比前言多分类逻辑回归混淆矩阵是用于评估多分类模型例如逻辑回归扩展到多类情况如Softmax回归性能的一种特定表格布局。例如:它是什么混淆矩阵是一个N × N N \times NN×N的矩阵其中N NN是类别的数量用于比较模型预测结果与真实标签之间的差异。行通常代表真实的类别实际值。列通常代表模型预测的类别预测值。单元格矩阵中的每个单元格C i j C_{ij}Cij表示“真实类别为i ii但被模型预测为类别j jj”的样本数量。示例三分类问题类别猫、狗、兔假设我们有一个包含100个样本的测试集混淆矩阵可能如下所示真实\预测猫狗兔猫1532狗4251兔2345对角线15, 25, 45都是预测正确的情况。非对角线都是预测错误的情况。eg. 第二行第一列的 4 表示“有4只真实的狗被错误地预测成了猫”。主要用途混淆矩阵不仅仅是一张数字表它对于理解模型在多分类问题中的表现至关重要因为它能揭示比简单准确率更丰富的信息。直观展示全局错误分布只看准确率Accuracy你可能只知道模型在测试集上正确率是 85%对角线和除以总数。但混淆矩阵能告诉你错误都发生在哪些类别之间。eg. 从上面的矩阵可以看出模型经常混淆“猫”和“狗”但很少把“猫”和“兔”混淆。计算多分类评估指标基于混淆矩阵可以为每个类别计算以下关键指标精确率预测为该类别的样本中有多少是真正正确的。eg. 精确率——“预测为猫的里面有多少是真的猫”精确率 对角线元素 该列的总和 \text{精确率} \frac{\text{对角线元素}}{\text{该列的总和}}精确率该列的总和对角线元素针对“猫”15 15 4 2 0.714 \frac{15}{1542}0.7141542150.714召回率真实为该类别的样本中有多少被正确找出来了。eg. 召回率——“真实为猫的里面有多少被正确预测出来了”召回率 对角线元素 该行的总和 \text{召回率} \frac{\text{对角线元素}}{\text{该行的总和}}召回率该行的总和对角线元素针对“猫”15 15 3 2 0.75 \frac{15}{1532}0.751532150.75F1分数精确率和召回率的调和平均。F1 2 × 精确率 × 召回率 精确率 召回率 \text{F1} \frac{2 \times \text{精确率} \times \text{召回率}}{\text{精确率} \text{召回率}}F1精确率召回率2×精确率×召回率针对“猫”2 × 0.714 × 0.75 0.714 0.75 ≈ 0.731 \frac{2 \times 0.714 \times 0.75}{0.714 0.75} \approx 0.7310.7140.752×0.714×0.75≈0.731识别“易混淆”的类别模型偏差这是混淆矩阵最重要的诊断功能。如果你发现某两个类别比如“狼”和“哈士奇”之间的非对角线数字特别高这意味着特征相似性模型无法有效区分这两个类别可能是因为它们的特征过于相似或者训练数据中这两个类别的区分度不够。数据不平衡某个类别样本太少导致模型倾向于将其预测为样本多的那个大类。发现“类别不平衡”的影响通过观察矩阵的行和与列和可以判断模型是否偏向于多数类。如果某个类别的样本数行和远大于其他类别但模型表现不佳混淆矩阵会显示模型倾向于把别的类预测为这个大类。准确率为了方便阅读再次列出矩阵和之前算出的每类指标真实\预测猫狗兔样本总数行和猫153220狗425130兔234550预测总数列和213148100总计每类的性能指标猫精确率 P c ≈ 0.714 15 / 21 召回率 R c 0.75 F 1 ≈ 0.731 狗精确率 P d ≈ 0.806 25 / 31 召回率 R d ≈ 0.833 25 / 30 F 1 ≈ 0.819 兔精确率 P r ≈ 0.938 45 / 48 召回率 R r 0.9 45 / 50 F 1 ≈ 0.918 \text{猫}\text{精确率 }P_c \approx 0.714 15/21\text{召回率 }R_c 0.75 F1 ≈ 0.731 \\ \text{狗}\text{精确率 }P_d \approx 0.806 25/31\text{召回率 }R_d \approx 0.833 25/30F1 ≈ 0.819 \\ \text{兔}\text{精确率 }P_r \approx 0.938 45/48\text{召回率 }R_r 0.9 45/50F1 ≈ 0.918\\猫精确率Pc≈0.71415/21召回率Rc0.75F1≈0.731狗精确率Pd≈0.80625/31召回率Rd≈0.83325/30F1≈0.819兔精确率Pr≈0.93845/48召回率Rr0.945/50F1≈0.918总体准确率在讲两种平均之前先明确最简单的总体准确率作为参照公式 所有预测正确的样本数 总样本数 计算 15 25 45 100 85 100 0.85 \text{公式} \frac{\text{所有预测正确的样本数}}{\text{总样本数}}\\[10pt] \text{计算} \frac{15 25 45}{100} \frac{85}{100} \mathbf{0.85}\\[10pt]公式总样本数所有预测正确的样本数计算100152545100850.85含义为整体上有 85% 的样本被正确分类。平均准确率这里容易和上面的总体准确率混淆需要注意区分。别名宏平均准确率计算方式先分别算出每一类的准确率注意是每一类的准确率不是精确率然后对所有类取算术平均。每一类的准确率 该类预测正确的数量 / 该类真实的总数量运算步骤1. 猫的准确率 15 / 20 0.75 2. 狗的准确率 25 / 30 ≈ 0.833 3. 兔的准确率 45 / 50 0.9 4. 平均准确率 0.75 0.833 0.9 3 ≈ 2.483 3 0.828 \text{1. 猫的准确率} 15 / 20 0.75\\[10pt] \text{2. 狗的准确率} 25 / 30 \approx 0.833\\[10pt] \text{3. 兔的准确率} 45 / 50 0.9\\[10pt] \text{4. 平均准确率} \frac{0.75 0.833 0.9}{3} \approx \frac{2.483}{3} \mathbf{0.828}\\[10pt]1.猫的准确率15/200.752.狗的准确率25/30≈0.8333.兔的准确率45/500.94.平均准确率30.750.8330.9≈32.4830.828为什么是0.828而不是总体准确率的0.85原因平均准确率给每个类别赋予了相同的权重各占 1/3。虽然“兔”类表现很好0.9且样本多但“猫”类表现较差0.75且样本少。在计算平均准确率时“猫”类差的表现在权重上被提升到了和“兔”类一样高因此分数被拉低到了 0.828。加权平均准确率别名加权宏平均准确率计算方式先算出每一类的准确率然后用该类样本数量占总数的比例作为权重进行加权平均。运算步骤各类权重猫20/100 0.2狗30/100 0.3兔50/100 0.5加权计算加权平均准确率 ( 0.75 × 0.2 ) ( 0.833 × 0.3 ) ( 0.9 × 0.5 ) 0.15 0.2499 0.45 ≈ 0.85 \begin{aligned} \text{加权平均准确率} (0.75 \times 0.2) (0.833 \times 0.3) (0.9 \times 0.5) \\ 0.15 0.2499 0.45 \\ \approx \mathbf{0.85} \end{aligned}加权平均准确率(0.75×0.2)(0.833×0.3)(0.9×0.5)0.150.24990.45≈0.85发现了吗这里的 0.85 正好等于最开始的总体准确率原因加权平均准确率本质上就是在计算总体准确率只是换了一种拆分再求和的形式。因为每一类的准确率乘以该类样本权重实际上就是在计算该类正确分类的样本数占总数的比例求和后自然等于总体准确率。对比为了更直观地对比这几个指标的区别可以看下面这张表指标计算核心特点适用场景总体准确率正确的总数 / 总数容易被大类别主导类别均衡时的快速参考平均准确率各类准确率的算术平均平等对待每个类别小类别的表现和大类别一样重要关注小类、数据不平衡、需要保守评估时加权平均准确率各类准确率的加权平均按样本量加权结果等于总体准确率官方报告常用反映按样本量加权后的综合表现回到“猫狗兔”的例子思考如果只看总体准确率0.85可能会觉得模型还不错。但如果查看平均准确率0.828就会发现模型在少数类猫上的表现其实拖了后腿不如多数类兔那么理想。平均准确率正是帮助捕捉到这种差异的工具。