知组识谱 | 浅谈机器学习模型的偏差与方差

2023-02-02 16:59:05, Calibra 杭州凯莱谱精准医疗检测技术有限公司


机器学习已经成为代谢组学数据分析和挖掘中非常重要的工具,经典多元统计和机器学习(ML)方法如(广义)线性回归、逻辑回归(LR)、主成分分析(PCA)、偏最小二乘判别分析(PLS-DA)、正交(O)PLS-DA、支持向量机、随机森林(RF)等常被用于数据降维、生物标志物筛选、疾病风险预测等领域,其中一个常见的临床应用场景是基于已有队列的代谢组学数据(训练集),去训练多个机器学习模型,然后再使用验证集或测试集,对模型性能进行测试,输出值可以是对某一个指标的预测,亦或是预测某个个体患病的风险等,再从多个模型中根据一定的性能衡量标准(如泛化误差)确定基于当前训练集的最优模型。对模型性能的评价,通常做法是定义一个误差函数,通过将观测值与预测值的误差最小化,确定模型的最终参数,比如定义健康状态为0,患病状态为1,确定模型参数的过程,就是将训练集中所有标记为健康人的预测值尽可能接近于0,同时将所有标记为患病人群的预测值尽可能接近于1,满足上述两个条件且误差最小的模型一般被视为“最优模型”。

实际应用场景中,我们一般不对训练集误差的大小特别关注,训练误差的大小仅对给定当前训练数据集有意义,衡量的是模型针对于训练集的学习能力,而测试误差反映了学习算法/模型对未知的验证/测试集的预测能力,是我们应该关注的。简单但不严谨的理解,训练集可以认为是考前模拟卷,测试集是真正的考试卷,模拟考试成绩好,真正考试成绩不一定好,但模拟考试成绩不好,真正考试成绩就别报太大希望。测试误差小的模型往往具有更好的预测能力,是更有效或更优的模型,将模型对未知数据的预测能力往往称为泛化能力,泛化能力通过泛化误差来衡量。优化模型的目的是为了解决训练集应用领域中的一般化问题,并不是单纯地将训练集的损失最小化,而是希望在解决更一般的问题时,比如对后续未知样本患病风险进行预测时,该模型仍然能表现很好。

例如,现有因变量Y (如某一指标或患病风险)和p个自变量X1,X2….Xp (如一个人的多项生化指标,年龄,性别,体重指数(BMI)等),假定Y与X=( X1,X2….Xp)存在某种关系如下:Y=ƒ (X)+ε。

ƒ 表示某一函数或有监督模型(比如LR或SVM等),ε 表示随机误差,与X无关且ε满足N (0, σ2) 的高斯分布,将某一个体的X代入模型 ƒ 可得到该个体的预测值

即使一个训练好的机器学习模型在测试集上往往也达不到100%的准确率,通常会产生一定的误差,这就是上文提到的泛化误差,泛化误差衡量了一个机器学习模型的一个泛化能力,泛化误差越小,模型的泛化能力越强,对于后续样本的预测准确度越高,反之亦然。泛化误差的期望:

由上式可知,泛化误差的期望可以分解为噪声 (Noise),方差 (Variance) 和偏差 (Bias2)。

偏差:描述的是模型预测值的期望与真实值之间的差距,刻画了模型本身的学习/预测能力,偏差越大,越偏离真实数据,模型的预测能力越差。简单来说,就是在样本上拟合的好不好。要偏差低,就需要复杂化模型,如增加模型的参数,但这样容易过拟合。

方差:预测值的方差,描述的是预测值的变化范围,离散程度,也就是离预测值期望值的距离,方差越大,数据的分布越分散,方差刻画了数据扰动对模型学习性能的影响。要方差低,就需要简化模型,减少模型的参数,但这样容易欠拟合。

噪声:表达了当前任务上任何模型/学习算法所能到达的期望预测误差的下界,即学习问题本身的难度,可通俗理解为模型/学习算法所能达到的最小误差。无论使用哪种算法,都无法消除噪声,也是学习算法/模型无法解决的问题,数据的质量决定了模型学习的上限。

以射箭为例,一个模型对一个样本进行预测,射中靶心位置代表预测准确,偏离靶心越远代表预测误差越大。偏差则是衡量射击的蓝点离靶心红圈的远近,射中位置 (蓝点) 离靶心红圈越近则偏差越小,离靶心红圈越远则偏差越大;而方差用来衡量射箭时手是否稳,即代表射中位置的蓝点是否聚集,蓝点越集中则方差越小,蓝点越分散则方差越大。通俗意义上,偏差大小可以衡量 “准”,方差大小可以衡量“稳”,方差可以很小,但是都偏离靶心很远,即低方差,高偏差,如左下图(稳而不准);偏差可以很小,都在靶心红圈周围,但比较分散,即低偏差,高方差(准而不稳),我们的预期模型都希望是低偏差,低方差(又稳又准)。

改自Andrew Ng(吴恩达)的《Machine Learning》

对于模型的欠拟合和过拟合直观表示,以下图分类问题为例,O和红X分别代表两类样本,希望能建立学习模型对两类样本进行准确区分。若使用线性模型并不能很好的区分(下左图),很多红色X分到了属于O一类,预测值将有大量错误,此时模型偏差过大,即为模型欠拟合;如使用非常复杂(如高次项)的非线性模型(下右图),所有样本的预测值全都正确,模型没有偏差,但数据中的噪音也被模型学习到,一旦数据有轻微波动将会导致预测结果的波动,方差过大,模型过拟合;而下中图是较为合适的模型,使用复杂程度不高的非线性模型,绝大多数样本都被正确预测。

摘自Andrew Ng(吴恩达)的《Machine Learning》

模型刚开始训练时,由于训练不足会发生欠拟合,此时偏差较大;当训练程度加深之后,偏差逐渐减小,但训练数据的扰动也被模型学习到了,便会发生过拟合,方差会逐渐增大,训练数据轻微扰动都会使得模型发生显著变化,因此模型欠拟合时偏差过大,模型过拟合时方差过大,通常会选择泛化误差曲线最低点对应的模型作为当前训练数据的最优模型。

摘自http://francescopochetti.com/bias-v-s-variance-tradeoff/

由于噪音是数据本身引入的,无法优化,因此降低模型的泛化误差,只能从降低偏差和方差入手,从上图可知方差和偏差存在权衡问题,此起彼伏,因此在实际建模过程中存在偏差方差平衡问题(Bias-Variance Tradeoff)。当前机器学习策略下,通常采用交叉验证的方式来进行偏差方差权衡,常见的交叉验证方式如下:

(1) Hold-out cross validation 保留交叉验证

如将现有数据集,随机采样70%作为训练子集、30%作为验证集,先用训练集训练模型,再用交叉验证集测试模型,随机过程可重复数百次以上,最后选取验证集平均误差小的模型,作为当前最有效模型。这种交叉验证的方式,最终模型和参数的选择很大程度上依赖于训练数据和验证数据的划分,对于本身比较小的数据集,划分一部分数据做验证集,会减少训练模型可用的数据集,增加过拟合风险。

(2) 留1交叉验证

对于比较小的数据集,有时无法单独划分出验证集,可以选用留1交叉验证,每次用n-1个样本做训练集,剩余1个样本做验证,计算误差,重复n次,会得到n个误差,取误差均值用来衡量当前模型的泛化误差。

(3) K折交叉验证

与留1交叉验证类似,K折交叉验证是将n个样本的数据集划分成K份,每份是n/K个样本,用(K-1)份数据集作为训练数据,剩余1份(n/K)个数据作为验证集,得到当前验证集的误差,由于每份都会作为1次验证集,最终会得到K个误差。当然K折划分可以重复m次,取K*m个误差均值用来衡量当前模型的泛化误差。以常用的10折交叉验证为例,10折交叉验证会将样本随机分为10份,每次留其中1份作为数据测试,用剩下9份做模型训练。当K值大的时候,一般偏差小,方差大,K值小的时候,偏差大,方差小,因此K对于模型优化影响较大,通常选择K=5或10较多。与保留交叉验证相比,K折交叉验证中每个1样本都能作为测试集和验证集,而保留交叉验证中由于随机采样,部分样本可能只作为测试集或验证集出现。

参考文献  

1. Andrew NG 《Machine Learning》

2. 李航,统计学习方法(第2版)

3. 周志华,机器学习

4.《一文弄懂机器学习中偏差和方差》

https://cloud.tencent.com/developer/news/368964

● 往期推荐

质量小讲堂 | 卫健委临检中心室间质评开展过程中的注意事项

谱写真相 | 面对抑郁症,我们能做些什么?

学术成果 | 肠道微生物多组学探索儿童哮喘表型差异机制

新品发布 | 丙戊酸、卡马西平和苯妥英检测试剂盒 (液相色谱-串联质谱法)获批上市


  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018
  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018

Copyright ©2007-2024 ANTPEDIA, All Rights Reserved