机器学习笔记(三)模型的评估和选择

一、 什么是好的模型

机器学习通常从以下去定义模型的优劣

  1. 准确
  2. 可解释
  3. 效率
  4. 可扩展

从图中我们可以更加清晰的了解什么是好的模型
在这里插入图片描述

二、 过拟合与欠拟合

  1. 所谓过拟合,简单的说就是我们设计的学习模型对训练样本的学习能力太强大了,导致对训练样本拟合的太好,但是应用到不同的未知数据却不适合,甚至表现很糟糕。即在训练样本中表现过于优秀,缺乏了模型应用的泛化能力。
  2. 而欠拟合,就是模型无法捕捉到数据中的重要差异和模式,即使在训练数据中也表现不佳时,称为欠拟合。通常是由于模型使用过于简单,不适合于数据体现出来的特征造成的。

在这里插入图片描述

三、 如何评估模型的泛化能力

1. 什么是泛化能力

泛化能力是指:机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。

2. 如何评定模型的泛化能力?

  1. 使用泛化误差本身。这是很自然的想法,训练模型的最终目的就是希望模型的泛化误差最低,当然可以使用泛化误差本身。如果泛化误差小的话还可以接受,但是通常情况下没有那么幸运,泛化误差可能很大,这个时候肯定需要将部署的模型撤回,重新训练,当然可能需要部署和训练之间往复很多次,这种方式虽然能够更好的选择模型,但是成本和效率非常的差;
  2. 使用模型在数据集上训练的拟合程度来作为评估模型的方式。但是往往获取的数据集并不是完全的干净以及有代表性,通常获取到的数据集可能很少、数据的代表性不够、包含太多的噪声或者是被一些无关特征污染,获取到的数据集或多或少都会有这些问题,那么模型对训练数据集的拟合程度不能指导泛化误差,也就是说训练的时候拟合的好并不代表模型的泛化误差就小,你甚至可以将模型在数据集上的误差减小到0,但是因为对模型训练时候的数据集往往不干净,所以这样的模型并不代表泛化能力就强。
  3. 要评估模型,以估计其泛化的质量,唯一的方法就是在新的测试集上判断模型对新样本的判别能力。在执行(有监督的)机器学习实验时,将可用数据的一部分作为训练集,一部分作为测试集,训练使用训练集创建模型,然后使用测试集进行测试。测试集的错误率称为泛化错误,通过在测试集上评估模型,您可以得到此错误的估计。通常来说,我们的测试集应该和训练集互斥,积测试集的样本尽量不出现在训练集中。

在这里插入图片描述

四、 数据集的划分(评估方法(获得测试结果))

下面介绍如何划分训练数据与测试数据。

1. 留出法

留出法直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T。在训练集训练模型,利用测试集测试误差。D=S∪T,S∩T=null。
注意:训练/测试集的划分应尽量保持数据分布的一致性,避免因为数据划分过程引入额外的偏差而对最终结果产生影响
在这里插入图片描述
留出法的不足:留出法得到的结果往往不够稳定可靠,所获得的的结果极大程度的依赖训练集与测试集的划分方法。
在这里插入图片描述
从图中我们可以直观的看出训练集测试集不同的划分方法所得到的MSE(均方误差)的不同。

通常我们也将数据集划分为三个集合,即训练集、验证集和测试集。在训练集上训练模型,在验证集上评估模型,一旦找到的最佳的参数,就在测试集上最后测试一次,测试集上的误差作为泛化误差的近似。
在这里插入图片描述

2. 交叉验证法

交叉验证一般采用k折交叉验证,先将数据及划分为K个互斥子集(即每个子集Di都尽可能保持数据分布的一致性,即从总体数据D中通过分层采样得到),每次使用k-1个子集的并集作为训练集,余下的那作为测试集;这样就可以进行k次训练和测试,最终返回的是这k个测试结果的均值。
在这里插入图片描述
简单的说就是我们将整个数据集分成了K份,每次选取其中一份作为测试集,k-1份作为训练集,得到一个结果,经过K次循环,取得K个结果,取均值
在这里插入图片描述

留一法

留一交叉验证是将K次交叉验证带到其逻辑极限,K等于N(样本数量)

留一法就是每次只留下一个样本做测试集,其它样本做训练集,如果有k个样本,则需要训练k次,测试k次。留一发计算最繁琐,但样本利用率最高。适合于小样本的情况。

3. 自助法

“自助法”每次随机从m个样本的数据集D中挑选一个样本,将其拷贝放入D1,然后再将样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m样本的数据集D1。
假设D={1,5,2,3} m=4
D‘ 长度也应该等于4 ,所以抽4次
第一次抽到了2,然后吧放回去 D’ = {2}
第二次抽到了2,然后把2放回去 D‘ = {2,2}
第三次抽到了2,然后把2放回去 D‘ = {2,2,2}
第四次抽到了3,然后把3放回去 D‘ = {2,2,2,3}
其中{1,5}没有被抽到,将其作为测试集。
根据概率,未取到的数据占比约为36.8%:
在这里插入图片描述
自助采样,初始数据集D中约有36.8%的样本未出现在D1中,将D1作为训练集,D-D1作为测试集。
在这里插入图片描述

五、 如何评估模型的性能

⚫ 不同的模型通常有不同的评估方式和评估度量。

分类模型回归模型
准确率(Accuracy)平均绝对误差(MAE)
查准率(Precision)均方误差(MSE)
查全率(Recall)均方根误差(RMSE)
F度量MAPE(平均绝对百分比误差)
ROCR方
AUC
Log Loss

(一)分类模型性能评估

1.准确率:对于给定的测试数据集,模型正确分类的样本数和总样本数之比

对于分布不均衡的数据而言,准确率并不是一个很好的度量
比如:在这里插入图片描述

2.混淆矩阵(仅考虑二分类问题):
在这里插入图片描述

1.Accuracy = (TP+TN)/(TP+TN+FP+FN)
2.Precision(查准率):TP/(TP+FP) 预测的正例中的准确率
3.Recall(查全率):TP/(TP+FN) 在所有正例当中的准确率
4.P-R曲线
在这里插入图片描述
⚫ P-R图直观的显示算法在样本总体上的查准率、查全率。在进行比较时,若一个算法学习器的P-R曲线被另一个算法的曲线完全包住,怎可断言前者优于后者,若两个算法的P-R曲线发生了交叉,则一般很难断言孰优孰劣。如果一定要比个高低,则可比较P-R曲线下面积的大小,其在一定程度上表征了查准率和查全率上取得双高的比例,但这个值往往比较难以运算。
平衡点(BEP):precision和recall相等时的取值,比较BEP的大小
5.F1度量:反映了模型的稳健性

  1. F1度量是基于查准率和查全率的调和平均。
  2. F1 = 2(precision*recall)/(precision+recall)
  3. F1 score越大越好

6 ROC曲线:受试者工作特征曲线(为解决分布不均衡的数据问题)
1)真正例率:TP/(TP+FN)
2)假正例率:FP/(FP+TN)
在这里插入图片描述
⚫ 对角线为随意猜想模型
⚫ A,B为所有正例排在所有反例之前的模型
⚫ 进行比较时,与P-R曲线类似,B被A包住,A模型更优秀
⚫如果两个模型交叉,则难以断定孰优孰劣,可以计算曲线下面积
7.AUC:为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。
  AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
  0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测
𝐴𝑈𝐶 = 12 σ𝑖=1 𝑚−1(𝑥𝑖+1 − 𝑥𝑖)(𝑦𝑖 + 𝑦𝑖+1)

(一)回归模型性能评估

回归:对数据作拟合,用一种线性方法或函数进行拟合,是连续的
分类:是离散的,分成若干个类别

①MAE(平均绝对误差):

  1. ⚫ 亦成为L1损失
  2. ⚫ 是一个非常直观的评估指标,它表示每 个样本的预测标签值与真实标签值的 L1 距离。
  3. ⚫ 分数越小越好
    在这里插入图片描述

②MSE均方误差:

  1. ⚫ 亦成为L2损失
  2. ⚫ 是最常用的回归损失函数,计算方法是 求预测值与真实值之间距离的平方和。
  3. ⚫ 分数越小越好
    在这里插入图片描述

③RMSE(均方根误差):

  1. ⚫ 不就是MSE开个根号么。有意义么?其实实质是一样的。只不过用于数据更好的描述。
  2. ⚫如要做房价预测,每平方是万元(真贵),我们预测结果也是万元。那么差值的平方单位应该是万级别的。于是干脆就开个根号就好了。我们误差的结果就跟我们数据是一个级别
    在这里插入图片描述
  3. MSE会产生放大的效果,若预测值与真实值相差很大,则MSE会非常大,若预测值与真实值相差小,则MSE会很小
  4. MSE对异常值很敏感,数据被异常值污染的话,用MAE,否则,选择MSE。

④MAPE(平均绝对百分比误差):
在这里插入图片描述
在这里插入图片描述
对于MAPE:

  1. 当真实值有数据等于0时,存在分母0除问题,该公式不可用!
  2. 是评估预测精度的最常用指标之一。MAPE 为每个绝对误差的和除以实际值。实际上,它是误差百分率的平均值。

对SMAPE:

  1. 可以较好的避免MAPE因为真实值yi小而计算结果太大的问题。

⑤R方:

  1. ⚫ 可以理解为一个预测模型,只是该模型与x无关,在机器学习领域称这种模型为基准模型(Baseline Model),适用于所有的线型回归算法。
  2. ⚫ 分子是我们的模型预测产生的错误,分母是使用y等于y的均值(Baseline)这个模型所产生的错误。
    在这里插入图片描述

SSreg为预测数据与原始数据均值之差的平方和
SSerror为预测数据与原始数据对应点的误差的平方和
SStotal为原始数据和均值之差的平方和
在这里插入图片描述
R方越大,说明对数据拟合地更好,在线性环境下使用很好
R方会受到自变量个数的影响
R方(adj) = 1-(1-R方)* (n-1)/(n-p-1)

  1. ⚫ 其中,n 是样本数量,p 是特征数量。Adjusted R-Squared 抵消样本数量对R-Squared 的影响,做到了真正的 0~1,越大越好。
  2. ⚫ 简单地说就是,用r square的时候,不断添加变量能让模型的效果提升,而这 种提升是虚假的。利用adjusted r square,能对添加的非显著变量给出惩罚, 也就是说随意添加一个变量不一定能让模型拟合度上升。

(二)回归模型性能优化

1、偏差-方差分解

在这里插入图片描述

图中心为学习目标,小黑点为不同学习算法的平均估计结果

  • 偏差(bias):度量了某种学习算法的平均估计结果所能逼近学习目标的程度,刻画了算法本身的拟合能力。
  • 方差(Variance):度量了在面对同样规模不同的训练集时,学习算法的估计结果发生变动的程度,刻画了数据扰动所造成的的影响。
  • 噪声(Noise):噪声是无法克服的,是任何学习算法在该学习目标上的所能达到的期望泛化误差下界,刻画了学习问题本身的难度。

2、偏差-方差带来的问题

在这里插入图片描述

在这里插入图片描述

  • 模型的泛化能力是由算法的能力,数据的充分性以及人物本省的难度共同决定的。给定学习任务,为了取得更好的泛化能力,则需要使偏差较小,同时有需要使方差较小,这样既能够充分拟合数据,又使得数据扰动产生的影响会比较小。
  • 但是偏差和方差之间存在冲突
    – 即增大方差会减少偏差
    – 增大偏差会减少方差
  • 所以我们需要在偏差和方差之间寻找一个平衡点,即泛化误差最小的点

3、偏差-方差问题的解决

  • 如何减低偏差:
    – ①寻找更好的特征-具有代表性
    – ②用更多的特征-增大输入向量的维度
    – ③使用更复杂的模型
    – ④减少正则化系数
    -如何减低方差:
    – ①增大数据集
    – ②减少数据特征
    – ③降低模型复杂程度
    – ④正则化方法-增大正则化系数
    – ⑤调整参数或者超参数
    – ⑥交叉验证法

4、正则化

这里附上一个大佬的网站,关于正则化的问题大佬解释的很清楚,不再说明。

⚫ (1)鲁棒性:
⚫ 概括起来就是L1对异常点不太敏感,而L2则会对异常点存在放大效果。
⚫ L1鲁棒性更好,能对数据中的异常点有很好的抗干扰能力,异常点可以安全的和高效的忽略,这对研究帮助很大。如果异常值对研究很重要,L2则是更好的选择。
⚫ 对于L2,由于是均方误差,如果误差>1的话,那么平方后,相比L-norm而言,误差就会被放大很多。因此模型会对样例更敏感。如果样例是一个异常值,模型会调整最小化异常值的情况,以牺牲其它更一般样例为代价,因为相比单个异常样例,那些一般的样例会得到更小的损失误差。
⚫ (2)稳定性
⚫ 概括起来就是对于新数据的调整,L1的变动很大,而L2的则整体变动不大。
⚫ L1方法的不稳定属性意思是,对于一个新调整的数据集,回归线可能会跳跃很大。相比较之下,最小均方解决方法是稳定的,对于任何晓得数据点的调整,回归线仅仅只稍微移动一下。

笔记内容参考:
https://www.jianshu.com/p/49ddeacbe1c6
https://blog.csdn.net/tiantianhuanle/article/details/86671966
https://zhuanlan.zhihu.com/p/24825503
https://blog.csdn.net/qq_38016957/article/details/88898934

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值