机器学习的准备:过度拟合、混淆矩阵、精度测量/二元分类、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)则代表了算法的准确率
算法输出(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)
-
敏感度/召回率,Sensitivity or True Positive Rate (TPR)
eqv. with hit rate, Recall- miss rate or false negative rate (FNR)
- miss rate or false negative rate (FNR)
-
特异度,Specificity (SPC) or True Negative Rate (TNR)
- fall-out or false positive rate (FPR)
- fall-out or false positive rate (FPR)
-
精确率, Precision or positive predictive value (PPV)
- false discovery rate (FDR)
- false discovery rate (FDR)
-
召回率/命中率,Recall
-
F1 score
is the harmonic mean of precision and sensitivity
-
准确率,Accuracy (ACC)
-
ROC曲线(The Receiver Operator Characteristic Curve):用于分类器(Classifier)之间的比较,比如使用不同训练数据的同一种分类器,或者完全不同的分类器。
X轴为false positive rate=,Y轴为true positive rate=每一次运行分类器,都将在ROC坐标系中产生一个点,完美的分类器将产生点(0,1);无用的分类器将产生点(1,0)
因此结果越接近左上角,分类器的表现越好;反之则是右下角。从坐下角到右上角的对角线,相当于随机猜测。
AUC(Area under the curve)表示了分类器的好坏,AUC=1表示完美分类器,AUC>0.5表示结果优于随机猜测,AUC=0.5表示结果与随机猜测完全一致