机器学习的准备:过度拟合、混淆矩阵、精度测量/二元分类、ROC曲线

  • Training Set 训练数据:用于训练的数据
  • Testing Set 测试数据:用于最终测试算法效果的数据,不能用于验证或训练
  • Validation Set 校验数据:用于检验训练数据是否过度拟合

如何划分比例:
训练:校验:测试 = 50:25:25(数据多) / 60:20:20(数据较少)


  • 过度拟合(Overfitting):算法精确的学习了训练数据,却不适用于所有数据(算法在相同的训练数据集中训练太久,导致过度的学习了训练数据集,包括其中的噪音和数据中不精确的部分)。

    换句话说,算法得到的函数精确匹配训练集,但在后果是,在总体上对所有数据来说偏差更大了(在训练数据中,算法的函数曲线应该以在最近的距离通过所有数据点(更平滑),而不是试图穿过所有数据点(更曲折))。

    解决方案:校验数据(Validation set),或者进行交叉验证(Cross-validation)

    • 交叉验证(Cross-validation):将训练数据拆分,分别作为训练数据和校验数据,多次对算法进行训练。最后选择“校验误差最低”的算法模型作为结果进行测试。

      如果校验数据太少,可能导致算法训练不充分时,可以选择交叉验证(Cross-validation)

      交叉验证的是以时间为代价,弥补数据的不足

验证数据
训练数据
测试数据

  • 混淆矩阵(Confusion Matrix):适用于分类问题(Classification),用于表示分类的准确程度

    C1,C2,C3是三个类,数据集中有18个数据点,列的总数表示算法对数据点进行的划分,行的总数表示数据点实际的归属。

    比如按列来看,对于(C1,C2,C3),算法对18个点的划分是(8,5,5);按行看,实际的划分应该是(6,6,6)。

    而左上到右下的对角线(leading diagonal)则代表了算法的准确率5+4+4c1+c2+c3=1318\frac{{}_{5+4+4}}{c1+c2+c3}=\frac{13}{18}

    算法输出(Outputs)
    C1 C2 C3
    实际值(Targets) C1 5 1 0
    C2 1 4 1
    C3 2 0 4

  • Accuracy metrics 精度测量 / Binary classifier 二元分类器:与混淆矩阵的行列颠倒,列表示真实值,行表示预测值(算法输出)。当真实值=预测值时,结果为True,表示预测正确;False表示预测错误。

    真实值
    P N
    算法输出 P' True Positive(TP,hit) False Positives(FP,false alarm)
    N' False Negatives(FN,miss) True Negatives(FN,correct rejection)

    • 准确率Accuracy (ACC)
      ACC=TP+TNP+N=TP+TNTP+TN+FP+FN{\displaystyle \mathrm {ACC} ={\frac {\mathrm {TP} +\mathrm {TN} }{\mathrm {P} +\mathrm {N} }}={\frac {\mathrm {TP} +\mathrm {TN} }{\mathrm {TP} +\mathrm {TN} +\mathrm {FP} +\mathrm {FN} }}}

    • 敏感度/召回率Sensitivity or True Positive Rate (TPR)
      eqv. with hit rate, Recall
      TPR=TPP=TPTP+FN=1FNR{\displaystyle \mathrm {TPR} ={\frac {\mathrm {TP} }{\mathrm {P} }}={\frac {\mathrm {TP} }{\mathrm {TP} +\mathrm {FN} }}=1-\mathrm {FNR} }

      • miss rate or false negative rate (FNR)
        FNR=FNP=FNFN+TP=1TPR{\displaystyle \mathrm {FNR} ={\frac {\mathrm {FN} }{\mathrm {P} }}={\frac {\mathrm {FN} }{\mathrm {FN} +\mathrm {TP} }}=1-\mathrm {TPR} }
    • 特异度Specificity (SPC) or True Negative Rate (TNR)
      TNR=TNN=TNTN+FP=1FPR{\displaystyle \mathrm {TNR} ={\frac {\mathrm {TN} }{\mathrm {N} }}={\frac {\mathrm {TN} }{\mathrm {TN} +\mathrm {FP} }}=1-\mathrm {FPR} }

      • fall-out or false positive rate (FPR)
        FPR=FPN=FPFP+TN=1TNR{\displaystyle \mathrm {FPR} ={\frac {\mathrm {FP} }{\mathrm {N} }}={\frac {\mathrm {FP} }{\mathrm {FP} +\mathrm {TN} }}=1-\mathrm {TNR} }

    • 精确率Precision or positive predictive value (PPV)
      PPV=TPP=TPTP+FP=1FDR{\displaystyle \mathrm {PPV} ={\frac {\mathrm {TP} }{\mathrm {P'}}}={\frac {\mathrm {TP} }{\mathrm {TP} +\mathrm {FP} }}=1-\mathrm {FDR} }

      • false discovery rate (FDR)
        FDR=FPFP+TP=1PPV{\displaystyle \mathrm {FDR} ={\frac {\mathrm {FP} }{\mathrm {FP} +\mathrm {TP} }}=1-\mathrm {PPV} }
    • 召回率/命中率Recall
      TPR=TPP=TPTP+FN=1FNR{\displaystyle \mathrm {TPR} ={\frac {\mathrm {TP} }{\mathrm {P} }}={\frac {\mathrm {TP} }{\mathrm {TP} +\mathrm {FN} }}=1-\mathrm {FNR} }


    • F1 score
      is the harmonic mean of precision and sensitivity
      F1=2PrecisionRecallPrecision+Recall=2TP2TP+FP+FN{\displaystyle \mathrm {F} _{1}=2\cdot {\frac {\mathrm {Precision} \cdot \mathrm {Recall} }{\mathrm {Precision} +\mathrm {Recall} }}={\frac {2\mathrm {TP} }{2\mathrm {TP} +\mathrm {FP} +\mathrm {FN} }}}

  • ROC曲线(The Receiver Operator Characteristic Curve):用于分类器(Classifier)之间的比较,比如使用不同训练数据的同一种分类器,或者完全不同的分类器。
    机器学习的准备:过度拟合、混淆矩阵、精度测量/二元分类、ROC曲线
    X轴为false positive rate=FPN{\frac {\mathrm {FP} }{\mathrm {N} }},Y轴为true positive rate=TPP{\frac {\mathrm {TP} }{\mathrm {P} }}

    每一次运行分类器,都将在ROC坐标系中产生一个点,完美的分类器将产生点(0,1);无用的分类器将产生点(1,0)

    因此结果越接近左上角,分类器的表现越好;反之则是右下角。从坐下角到右上角的对角线,相当于随机猜测。

    AUC(Area under the curve)表示了分类器的好坏,AUC=1表示完美分类器,AUC>0.5表示结果优于随机猜测,AUC=0.5表示结果与随机猜测完全一致