机器学习中如何评价模型的好坏

机器学习中如何评价模型的好坏

Week 2 主要学习机器学习中的基础知识
Targets for this week:

  • 数据拆分:训练数据集&测试数据集
  • 评价分类结果:精准度、混淆矩阵、精准率、召回率、F1 Score、ROC曲线等
  • 评价回归结果:MSE、RMSE、MAE、R Squared
    Let’ s go !

数据拆分

在机器学习中,通常将所有的数据划分为三份:训练数据集、验证数据集和测试数据集。它们的功能分别为:

  • 训练数据集(train dataset):用来构建机器学习模型
  • 验证数据集(validation dataset):辅助构建模型,用于在构建过程中评估模型,为模型提供无偏估计,进而调整模型超参数
  • 测试数据集(test dataset):用来评估训练好的最终模型的性能

为了划分这几种数据集,可以选择采用留出法、K-折交叉验证法或者自助法等多种方法。这些方法都对数据集有一些基本的假设,包括

  • 数据集是随机抽取且独立同分布的
  • 分布是平稳的,不会随时间发生变化
  • 始终从同一个分布中抽取样本

黄金法则:请勿对测试数据集进行训练。

留出法

留出法(hold-out)直接将数据集划分为互斥的集合,如通常选择 70% 数据作为训练集,30% 作为测试集。
机器学习中如何评价模型的好坏_第1张图片
Sklear实现
机器学习中如何评价模型的好坏_第2张图片

K-折交叉验证法

所以在实际应用中,可以选择 K-折交叉验证(k-fold cross-validation)的方式来评估模型,其偏差低、性能评估变化小。

K-折交叉验证法将数据集划分为 k 个大小相似的互斥子集,并且尽量保证每个子集数据分布的一致性。这样,就可以获取 k 组训练 - 测试集,从而进行 k 次训练和测试。
机器学习中如何评价模型的好坏_第3张图片
SKlearn中的实现,12即数据集大小总数据量,3为K-fold数量,当设置shuffle为True时,则每次选择的数据都为随机数据,建议每次都设置为随机数据来消除偏差暗示。
机器学习中如何评价模型的好坏_第4张图片

评价分类结果

混淆矩阵 Confusion Matrix

机器学习中如何评价模型的好坏_第5张图片

预测值0 预测值1
真实值0 TN FP
真实值1 FN TP

对于二分类问题来说,所有的问题被分为0和1两类,混淆矩阵是2*2的矩阵:

  • TN:真实值是0,预测值也是0,即我们预测是negative,预测正确了。
  • FP:真实值是0,预测值是1,即我们预测是positive,但是预测错误了。
  • FN:真实值是1,预测值是0,即我们预测是negative,但预测错误了。
  • TP:真实值是1,预测值是1,即我们预测是positive,预测正确了。

精准率precision,召回率recall,精准度accuracy

  • 精准率Precision:precision = TP/(TP+FP)
    为什么管它叫精准率呢?在有偏的数据中,我们通常更关注值为1的特征,比如“患病”,比如“有风险”。在100次结果为患病的预测,平均有40次预测是对的。即精准率为我们关注的那个事件,预测的有多准。通常在FP的影响>FN的影响的情况下
  • 召回率Recall:recall=TP/(TP+FN)
    所谓召回率是:所有真实值为1的数据中,预测对了的个数。每当有100个癌症患者,算法可以成功的预测出8个 。也就是我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。通常在FN的影响>FP的影响的情况下使用
  • 精准度Accuracy: (TP+TN)/All
    精准度不一定能反映出该模型的好坏,因为可能预测的全部为positive活着negative
  • F1 Score
    F 1 = 2 ∗ p r e c i s i o n ∗ p r e s i c i s o n ∗ r e c a l l p r e c i s i o n + r e c a l l F1 = 2* precision*\frac{presicison*recall}{precision+recall} F1=2precisionprecision+recallpresicisonrecall
    调和平均可以惩罚极端情况。一个具有 1.0 的精度,而召回率为 0 的分类器,这两个指标的算术平均是 0.5,但是 F1 score 会是 0。F1 score 给了精度和召回率相同的权重,它是通用 Fβ指标的一个特殊情况,在 Fβ中,β 可以用来给召回率和精度更多或者更少的权重。(还有其他方式可以结合精度和召回率,例如二者的几何平均,但是 F1 score 是最常用的。) 如果我们想创建一个具有最佳的精度—召回率平衡的模型,那么就要尝试将 F1 score 最大化。
    此外还有F2分数和F0.5分数。F1分数认为召回率和精确率同等重要,F2分数认为召回率的重要程度是精确率的2倍,而F0.5分数认为召回率的重要程度是精确率的一半。计算公式为:
    F β = ( 1 + β 2 ) ∗ p r e c i s i o n ∗ p r e s i c i s o n ∗ r e c a l l β 2 p r e c i s i o n + r e c a l l F \beta = (1+ \beta^2)* precision*\frac{presicison*recall}{\beta^2precision+recall} Fβ=(1+β2)precisionβ2precision+recallpresicisonrecall

ROC曲线

T r u e P o s i t i v e R a t e = T P T P + F N TruePositive Rate = \frac{TP}{TP+FN} TruePositiveRate=TP+FNTP
F a l s e P o s i t i v e R a t e = F P T P + F N FalsePositive Rate = \frac{FP}{TP+FN} FalsePositiveRate=TP+FNFP
ROC(receiver oprating characteristic)接受者操作特征,其显示的分类器的真正率和假正率之间的关系,ROC曲线有助于比较不同分类器的相对性能,ROC曲线的面积为AUC(area under curve),其面积越大则分类的性能越好,理想的分类器auc=1.

机器学习中如何评价模型的好坏_第6张图片
机器学习中如何评价模型的好坏_第7张图片

评价回归结果 MSE、RMSE、MAE、R Squared

  1. MSE 均方差误差
    Mean Square Error:
    机器学习中如何评价模型的好坏_第8张图片
    用 真实值-预测值 然后平方之后求和平均。和线性回归的L2损失函数相同,越接近于0说明模型拟合的越好。

  2. MAE 平均绝对误差
    机器学习中如何评价模型的好坏_第9张图片

  3. RMSE 均方根误差
    机器学习中如何评价模型的好坏_第10张图片
    这不就是MSE开个根号么。有意义么?其实实质是一样的。只不过用于数据更好的描述。
    例如:要做房价预测,每平方是万元,我们预测结果也是万元。那么差值的平方单位应该是千万级别的。那我们不太好描述自己做的模型效果。于是干脆就开个根号就好了。我们误差的结果就跟我们数据是一个级别的,在描述模型的时候就说,我们模型的误差是多少万元。

  4. R-Square
    上面的几种衡量标准针对不同的模型会有不同的值。比如说预测房价 那么误差单位就是万元。数子可能是3,4,5之类的。那么预测身高就可能是0.1,0.6之类的。没有什么可读性,到底多少才算好呢?不知道,那要根据模型的应用场景来。看看分类算法的衡量标准就是正确率,而正确率又在0~1之间,最高百分之百。最低0。很直观,而且不同模型一样的。那么线性回归有没有这样的衡量标准呢?答案是有的。那就是R Squared也就R方
    机器学习中如何评价模型的好坏_第11张图片
    机器学习中如何评价模型的好坏_第12张图片
    对公式的理解:
    分子是我们的模型预测产生的错误,分母是使用y等于y的均值这个模型所产生的错误。
    自己的模型预测产生的错误 / 基础模型预测生产的错误,表示自己的模型没有拟合住的数据,因此R2可以理解为,自己的模型拟合住的数据。
    R2越接近于1,说明模型回归的效果最好。

你可能感兴趣的:(机器学习,数据分类,数据评价指标)