常用统计量

混淆矩阵

  • 对比实际类别值、预测类别值,编制混淆矩阵
  • 基于混淆矩阵,计算各类错判率、总错判率(总错判率会受到数据不平衡性的影响)
真实情况\预测结果 正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)

confusion_matrix

F-Measure

F-测度:准率率和召回率综合值,越大越好

  • $P = \frac {TP} {TP+FP}$:查准率、精确率
  • $R = \frac {TP} {TP+FN}$:查全率、召回率、覆盖率

F1

F1值:$\beta=1$ 时的 F测度

TPRFPR

  • TPRFPR 可视为对 TPFP 用样本数量归一化的结果

    • 样本全体中正、负样本数量往往差距很大,直接比较 TPFP 不合理
    • 考虑使用样本正、负数量归一化,即计算正比例 TPR、负比例 FPR
  • TPR 越高越好,FPR 越低越好,但是这两个指标相互制约,两者同时增加、减小

    • 模型倾向于将样本 判定为 为正例,则 TPFP 同时增加,TPRFPR 同时变大
    • 即模型取不同阈值,会产生正相关的 TPRFPR 的点列

Recevier Operating Characteristic Curve

ROC 曲线:不同 正样本概率 划分阈值下 TPRFPR 绘制的折线/曲线

  • ROC 曲线即以 FPR 为横坐标、TPR 为正坐标绘制曲线

    • FPR 接近 1 时,TPR 也接近 1,这是不可避免的
    • FPR 接近 0 时,TPR 越大越好
    • 所以模型 ROC 曲线下方面积越大,模型判断正确效果越好
  • 理解

    • 将正负样本的正样本概率值分别绘制在 x=1x=-1 两条直线上
    • 阈值即为 y=threshold 直线
    • TPRFPR 则为 x=1x=-1 两条直线在阈值直线上方点数量,与各直线上所有点数量比值

Accuracy

准确率、误分率:评价分类器性能一般指标

  • $y_i$:第 $i$ 样本实际类别
  • $\hat y_i$:第 $i$ 样本预测类别
  • $N$:样本数量
  • 对给定测试集,分类器正确分类样本数与总样本数比值
  • 0-1 损失函数时经验风险

Top PR

头部准召:评估模型头部性能

  • $TOP$:指定的头部数量
  • $TP_{top}$:头部中正例数量(正例指已知原 $TOP$ 样本)

Area Under Curve

AUC 值:ROC 曲线下方面积,越大越好

  • AUC 值实际含义:随机抽取一对正、负样本,对其中正样本的正样本预测概率值、大于负样本的正样本预测概率值的概率

    • $=1$:完美预测,存在一个阈值可以让模型 TPR 为 1,FPR 为 0
    • $(0.5, 1)$ :优于随机预测,至少存在某个阈值,模型 $TPR > FPR$
    • $=0.5$:同随机预测,无价值
    • $[0, 0.5)$:差于随机预测,但是可以反向取预测值

AUC 计算

  • 绘制 ROC 曲线,计算曲线下面积

    • 给定一系列阈值(最精确时为样本数量),分别计算 TPRFPR
    • 根据 TPRFPR 计算 AUC
  • 正负样本分别配对,计算正样本预测概率大于负样本比例

    • $M, N$:正、负样本数量
  • Mann-Witney U 检验:即正、负样本分别配对的简化公式

    • $Pos$:正样本集合
    • $rank(i)$:样本 $i$ 的按正样本概率排序的秩(对正样本概率值相同样本,应将秩加和求平均保证其秩相等)

Weighted-AUC

WAUC:给 每个样本 赋权,计算统计量时考虑样本权重

  • FPRTPR 绘图

    • $WTPR, WFPR$:加权 TPR、加权 FPR
    • $\hat y_i$:样本预测类别
    • $w_i$:样本权重
  • Mann-Witney U 检验:考虑其意义,带入权重即可得

    • $rank_{pos}(i)$:正样本内部排序,样本$i$秩
    • $Neg$:负样本集合

多分类 AUC

  • Micro-AUC:将每个类别视为样本标签,计算全体样本的正标签、负标签的 AUC

    • $n$ 个样本的 $m$ 维标签展平, 则其中有 $n$ 个正样本、$n * (m-1)$ 个负样本
    • $n$ 个样本的 $m$ 个分类器共 $n * m$ 个得分展平
    • 使用以上预测得分、标签计算 AUC
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # one-vs-rest分类器得分
    y_score = classifer.transform(X_test)
    # 展平后计算fpr、tpr
    fpr_micro, tpr_micro, threshhold_micro = \
    skilearn.metrics.roc_curve(y_test.ravel(), y_score.ravel())
    # 利用fpr、tpr计算auc
    auc_micro = skilearn.metrics.auc(fpr_micro, tpr_micro)

    # 等价于直接调用
    auc_micro = skilearn.metrics.roc_auc_score(y_test, y_score, average="micro")
  • Macro-AUC:对各类别,分别以计算 ROC 曲线(即 TPRFPR),计算平均 ROC 曲线得到 AUC

    • 对各类别分别计算 TPRFPR,共 $m$ 组 TPRFPR
    • 平均合并 TPRFPR,计算 AUC

      • 方法1:合并 FPR、去除重复值,使用 $m$ 组 TPRFPR 分别求合并后 FPR 插值

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        # 分别计算各类别fpr、tpr
        fprs, tprs = [0] * n_classes, [0] * n_classes
        for idx in range(n_classes):
        fprs[idx], tprs[idx], _ = sklearn.metrics.ruc_curve(
        y_test[:, i], y_score[:, i])
        # 合并fpr
        all_fpr = np.unique(np.concatenate(fprs))
        mean_tpr = np.zeros_like(all_fpr)
        # 计算合并后fpr插值
        for idx in range(n_classes):
        mean_tpr += scipy.interp(all_fpr, fpr[idx], tpr[idx])
        mean_tpr /= n_classes
        auc_macro = sklearn.metrics.auc(all_fpr, mean_tpr)

        # 但是和以下结果不同
        auc_macro = sklearn.metrics.roc_auc_score(fprs)
  • 以上分类器均为 one-vs-rest 分类器,$m$ 个类别则 $m$ 个分类器、每个样本 $m$ 个得分

Kolmogorov-Smirnov 统计量

KS 值:刻画区分正负样本能力

  • KS 值体现 最理想情况 下,对正负样本区分能力
    • ROC 曲线与 $TPR = FPR$ 直线的最远距离

Squared Error

Mean Squared Error

MSE:均方误差(偏差)

Mean Absolute Error

MAE:平均绝对误差

Mean Absolute Percentage Error

MAPE:平均绝对百分比误差

Symmetric Mean Absolute Percentage Error

SMAPE:对称平均绝对百分比误差

$R^2$

  • $n, p$:样本量、特征数量
  • $SSE$:残差平方和
  • $SSR$:回归平方和、组内平方和
  • $SST$:离差平方和
  • $R^2_{adj}$:调整的$R^2$

Akaike Information Criterion

AIC :赤池信息准则

  • $n, p$:样本量、特征数量
  • $\theta$:带估参数
  • $L(\theta, x)$:似然函数
  • $SSE$:残差平方和

Bayesian Information Criterion

BIC:贝叶斯信息准则

$C_p$

  • $p$:选模型特征子集中特征数量
  • $m$:所有特征数量
  • $SSE_p$:选模型中残差平方和
  • $SSE_m$:全模型中残差平方和