【机器学习】机器学习模型训练与测试评估

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Daycym/article/details/84206786

模型训练

  • 模型选择

对于特定任务最优建模方法的选择或者对特定模型最佳参数的选择

  • 交叉验证
    在训练数据集上运行模型(算法)并且在测试数据集上测试效果,迭代 更新数据模型的修改,这种方式被称为“交叉验证”(将数据分为训练集测试集),使用训练集构建模型,并使用测试集评估模型提供修改建议。

模型的选择会尽可能多的选择算法进行执行,并比较每个算法的执行结果

模型测试

模型的测试一般从以下几个方面来进行比较:准确率、召回率、精确率、F值、ROC、AUC

  • 混淆矩阵

在这里插入图片描述

  • 准确率

准确率(Accuracy) = 提取出的正确样本数/总样本数
A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \frac{TP+TN}{TP+TN+FP+FN}

  • 召回率

召回率(Recall) = 正确的正例样本数/样本中正例样本数 ——覆盖率
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN}

  • 精确率

精确率(Precision) = 正确的正例样本数/预测为正例的样本数
P r e c i s o n = T P T P + F P Precison = \frac{TP}{TP+FP}

  • F值

F值 = Precision * Recall * 2 / (Precision + Recall)
即正确率和召回率的调和平均值
F = 2 1 P r e c i s i o n + 1 R e c a l l F = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}}

  • ROC

ROC描述的是分类混淆矩阵中FPR-TPR两个量之间的相对变化情况,ROC曲线的纵轴是“真正例率(TPR)”,横轴是“假正例率(FPR)”。

如果二元分类输出的是对正样本的一个分类概率值,当去不同阀值时会得到不同的混淆矩阵,对应于ROC曲线上的一个点。那么ROC曲线就反映了FPR和TPR之间权衡的情况,通俗地来说,即在TPR随着FPR递增的情况下,谁增长得更快,快多少的问题。

TPR增长得越快,曲线越往上屈,AUC就越大,反映了模型的分类性能就越好。当正负样本不平衡时,这种模型评价方式比起一般的精确度评价方式的好处尤其显著。

在这里插入图片描述

  • AUC

AUC的值越大表示模型越好

AUC被定义为ROC曲线下的面积,显然这个面积的数值不会大于1,又由于ROC曲线一般都处于 y = x y = x 这条直线的上方,所以AUC取值范围在0.5和1之间。

使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果好,而AUC作为数值可以直观的评价分类器的好坏,值越大越好。

AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阀值都能得出完美预测。绝大数预测的场合,不存在完美分类器;
AUC = 0.5,跟随机猜测一样,模型没有预测价值;
0.5 < AUC < 1,由于随机猜测,妥善设定阀值,有预测价值;
AUC < 0.5,比随机猜测还差,但只要总是反预测而行,比随机猜测好。

模型评估

  • 回归算法评估方式
指标 描述 scikit-learn函数
Mean Square Error(MSE, RMSE) 平均误差 from sklearn.metrics import mean_squared_error
Absolute Error(MAE, RAE) 绝对误差 from sklearn.metrics import mean_absolute_error,median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score
  • 分类算法评估方式
指标 描述 scikit-learn函数
Precision 精确度 from sklearn.metrics import precision_score
Recall 召回率 from sklearn.metrics import recall_score
F1 F1值 from sklearn.metrics import f1_score
Confusion Matrix 混淆矩阵 from sklearn.metrics import confusion_matrix
ROC ROC曲线 from sklearn.metrics import roc
AUC ROC曲线下的面积 from sklearn.metrics import auc

猜你喜欢

转载自blog.csdn.net/Daycym/article/details/84206786