机器学习笔记——模型选择与正则化

  • 一、模型选择
    • 1.方差与偏差
    • 2.过拟合与欠拟合
    • 3.模型选择的平衡
    • 4.欠、过拟合解决方法
  • 二、正则化
    • 1.正则化线性回归
    • 2.正则化对数回归
    • 3.训练集规模对误差的影响
    • 4.模型性能评估
  • 三.范数与正则化
    • 1.总体描述
    • 2.L0与L1范数
    • 3.L2范数
    • 4.核范数

一、模型选择

1.方差与偏差

  • 我们设定h(x)h(x)h(x)为近似值,y(x)y(x)y(x)为真实值。我们有如下式子:
  • 近似值的bias我们设定为所有样本近似值与真实值之间差值的期望。近似值的var我们设定为所有样本近似值与近似值的期望之间差距的期望的平方(有点绕…,其实去掉平方的标准差更好理解)。
  • 我们可以看到bias与近似值h(x)h(x)h(x)、真实值y(x)y(x)y(x)相关。而variance只与近似值h(x)h(x)h(x)相关。

2.过拟合与欠拟合

  • 当特征过多或者变量阶数过高导致的模型很复杂时,很容易出现过拟合的情况。

  • 我对过拟合的理解如下:越复杂的模型其学习模仿能力越强,而模型学习模仿的对象只能是训练集。但训练集只是用来近似模拟真实数据分布,并不能代表一般性,甚至不好的训练集与真实分布相差很远。因此复杂的模型只是模仿训练集很像,如果训练集的代表性不强的话得到的模型就会与真实分布相差甚远,也就是出现了过拟合的现象。

  • 线性回归中出现的过拟合现象:

  • 逻辑回归中出现的过拟合现象:

  • 对上面三张图进一步分析,其实一大群蓝色圆圈中的红叉很可能是数据收集有误,并不一定代表反例,而过拟合情况就把这两个异常点过于看重导致分类边界不具备一般性。

  • 其实过拟合是不可以避免的,因为刚开始我们是不知道该选择多复杂的模型的。针对小数据集我们一开始就故意过拟合,然后再去诊断修正。即便是很大的数据集一开始也是要从小数据集开始。过拟合代表着充分利用了训练集数据,把训练集数据中每一细枝末节都学习到了。

3.模型选择的平衡

  • 过拟合现象发生时,我们会发现训练误差会非常小,那么如果我们有多个模型得到了多组训练误差,训练误差的大小比较能作为我们模型选择的依据吗?
  • 显然是不可以的。我们将训练集随机分成两部分,训练集training set)用于最优化参数,验证集validation set)用于模型选择。
  • 如下图所示我们将初始训练集分为了两部分。蓝色代表训练集,绿色代表验证集。需要注意的是划分的时候训练集与验证集需要保证同分布,可以使用分层采样的方法。
  • 分析以下两张图,一张是4阶多项式模型,一张是30阶多项式模型。可以看出30阶多项式模型更加完美的贴合于训练集(蓝色数据点),在图的左半部分明显波动离谱与验证集之间存在较大误差也就是发生了过拟合现象。

  • 以下展示的是训练误差与验证误差随着多项式阶数变化的曲线图:
  • 可以看出:只要学习率η\etaη选择的适当(即可以快速正确收敛)训练误差总会越来越小的。但验证误差可能会先降低后升高。上图仅仅代表的是变化趋势,实际获得的图不会这么平滑简单。
  • 训练误差小对我们来说没有用处。而验证误差则可以代表一部分该模型适应新数据的能力,因此我们要选择的是验证误差最小的模型。
  • 模型越复杂其bias越低但variance越高。而最终我们想要的泛化误差由三部分组成:bias、variance、noise。在noise不可调控的情况下我们想要使得bias与variance的总和最小,因此需要寻得二者之间的平衡(trade-off)。

4.欠、过拟合解决方法

  • 针对欠拟合我们需要做的就是提高模型的复杂程度。具体包含两个方面:1.增加更多的特征维度,但这条对于一般问题来说增加数据比较难以实现。2.提高多项式的阶数。
  • 针对过拟合并不是说模型一定不合适,而是相对于我们掌握贫乏的数据来说模型过于复杂。最好的解决方法就是收集并增加数据,不会影响bias,不用修改模型就可以解决问题,因为数据集越大训练集的特征就会越接近于真实。
  • 除此之外就是降低模型的复杂度。可以通过减少部分特征或者正则化来实现。正则化在小幅度增加bias的前提下大幅度降低variance,也会降低总体的泛化误差。
  • 总结来说机器学习数据为王。我们机器学习的目的其实就是利用有限的数据通过学习一定模型尽可能地去模拟逼近真实规律。所以我们掌握地数据大概率就是最大可能,因此更多使用正则化地方法处理过拟合。

二、正则化

1.正则化线性回归

  • 一个越复杂的模型通过学习过程计算出的参数θ\thetaθ可能会很大,尤其是高阶的θ\thetaθ。参数过大会使xxx对于hθ(x)h_\theta(x)hθ​(x)影响很大,因此我们要通过减小θ\thetaθ来平滑曲线。
  • 如上图所示,加入了正则化地线性回归,优化的目标函数由损失函数L(θ)L(\theta)L(θ)变为了J(θ)J(\theta)J(θ)。
  • R(θ)R(\theta)R(θ)为对参数进行的运算,我们这里接触到的计算方法是二范数的平方:R(θ)=∣∣θ∣∣22R(\theta)={||\theta||}^2_2R(θ)=∣∣θ∣∣22​其实正则化项不只有这一种形式,还可为一范数:R(θ)=∣∣θ∣∣1R(\theta)={||\theta||}_1R(θ)=∣∣θ∣∣1​,这就是我们熟知的可用于特征选择的LASSO算法。还可以为R(θ)=λ1∣∣θ∣∣22+λ2∣∣θ∣∣1R(\theta)=\lambda_1{||\theta||}^2_2+\lambda_2||\theta||_1R(θ)=λ1​∣∣θ∣∣22​+λ2​∣∣θ∣∣1​,这就是弹性网算法。
  • 对于正则化参数λ\lambdaλ,取值范围是[0,+∞)[0,+\infty)[0,+∞)。该值越大,所有参数的值越小,模型越简单,曲线越平滑。当λ=+∞\lambda=+\inftyλ=+∞时,会使所有的参数值趋向于0。
  • 需要注意的是仔细观察Σ\SigmaΣ求和从1开始,也就是说正则化的过程θ0\theta_0θ0​并不参与。因为其对于xxx没有影响。
  • 具体到梯度下降过程中获得下述式子。我们可以看作先把参数θj\theta_jθj​衰减一定比例然后再进行梯度下降。这就是我们了解的权重衰减。机器学习包中有这个函数,传入的参数就是正则化参数λ\lambdaλ。
  • 正则化参数λ\lambdaλ决定了参数值的大小与过拟合的矫正程度,那么我们应该如何选择正则化参数呢?分析如下图像可得(图像的纵坐标要使用L(θ)L(\theta)L(θ)计算而不是J(θ)J(\theta)J(θ)):λ\lambdaλ的值越大过拟合程度越低,欠拟合程度越高,也就是说训练误差会不断增大。而验证误差在λ∗\lambda^*λ∗处会出现拐点,我们想要找的便是这个拐点。
  • 针对线性回归的另一种解法正规方程,我们也有正则化后的公式表达:

2.正则化对数回归

  • 我们可以分析得到,对数回归的正则化原理上与线性回归相同,只不过他们拥有不同的损失函数而已。线性回归使用的是平方损失函数,而对数回归使用的是交叉熵损失函数。J(θ)J(\theta)J(θ)的结构、梯度下降的方法都如出一辙。
  • 我们同样可以得到如下的函数图像:
  • 那么问题来了,我们是否可以使用其他的Lval(θ)L_{val}(\theta)Lval​(θ),也就是验证集validation上的损失评价函数。当然是可以的,我们完全可以在这里使用0-1损失等其他评估方式,因为在验证集上只进行模型选择评估,而当时我们选择训练集使用交叉熵损失的原因主要是方便梯度下降优化。

3.训练集规模对误差的影响

  • 一般情况下,当训练集的规模增大的时候,训练误差也会跟着增大后趋于稳定,验证误差会随之减小后趋于稳定。形象的理解是:学生做的题越多,做题时出现的错题就会越多,但是考试时出现的错题就会变少。因此合适的模型,增大训练集的规模可以减小验证误差,解决过拟合。
  • 但对于上图来说,即使在训练集数据很少的情况下,我们也能看出所选择直线模型非常不适合该数据集的分布,也就是出现了欠拟合的情况。即便增加训练集的规模,也不会对模型的训练产生好的影响。
  • 综上出现过拟合现象时,增大训练集规模可以收获很好的效果。而当出现欠拟合现象时,增大训练集规模并不会有好的收益。

4.模型性能评估

  • 对于我们掌握的带标注的数据,训练集我们用来优化参数,验证集我们用来选择模型,但在训练集与验证集上的误差都不可以代表在新的测试数据上的性能。
  • 因此我们将带标注的数据分为三类,除了已知的训练集与验证集以外,我们再单独分出一类测试集(Testing Set),不用于学习调参只用于模拟训练出的模型处理新数据的能力。
  • 但这三部分的划分一直都是个难题。不同划分比例,涉及到模型训练的好坏、模型选择的优劣、以及测试集能否很好代表处理新数据能力等等问题。我们常见的分类标准为6:2:2或者7:1.5:1.5。我们的原则是在验证集与训练集保证基本功能的基础上,尽可能扩大训练集。
  • 有一条原则就是训练集一定不可以参与到模型调参中。但验证集可以偶尔参与。存在一种方法:训练集训练出多个模型,验证集筛选出一个最优的模型,然后针对该模型用训练集+验证集再次参数优化。
  • 除此之外我们还可以使用交叉验证的方法。

三.范数与正则化

1.总体描述

  • 正则化不仅可以解决过拟合的问题,还可以约束我们的模型的特性。这样就可以将人对这个模型的先验知识融入到模型的学习当中,强行地让学习到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。
  • 正则化后的目标函数中,损失函数的选择决定了这是一种什么模型。如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是exp-Loss,那就是牛逼的 Boosting了;如果是log-Loss,那就是Logistic Regression了。
  • 规则化项可以是模型参数向量的范数,在论文中常见的都聚集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。

2.L0与L1范数

  • L0范数是指向量中非0的元素的个数。如果我们用L0范数来正则化一个参数矩阵W的话,就是希望W的大部分元素都是0,换句话说,让参数W是稀疏的。
  • L1范数是指向量中各个元素绝对值之和。L1范数又名“稀疏规则算子”,同样可以使得参数W变稀疏。
  • 既然L0范数与L1范数都可以让参数变稀疏。那么到底什么是变稀疏?变稀疏又有什么样的好处呢?
  • 参数的稀疏化可以实现特征选择。一般来说,xi的大部分特征都是和最终的输出yi没有关系或者不提供任何信息的,在最小化目标函数的时候考虑xi这些额外的特征,虽然可以获得更小的训练误差,但在预测新的样本时,这些没用的信息反而会被考虑,从而干扰了对正确yi的预测。也就是说因为多考虑训练了无用的特征导致训练模型过拟合。
  • 稀疏正则化化算子的引入就是为了完成特征自动选择的光荣使命,它会学习地去掉这些没有信息的特征,也就是把这些特征对应的权重置为0。
  • 那既然L0与L1均可以实现参数稀疏化而特征选择,那为什么在实际正则化时我们使用L1而不是L0呢?一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解

3.L2范数

  • L2范数是指向量各元素的平方和然后求平方根。在回归里面,有人把有它的回归叫岭回归(Ridge Regression),有人也叫它权值衰减(weight decay)。
  • L2范数的使用具体有两大好处:在学习理论角度来说,L2范数可以防止过拟合,提升模型的泛化能力。在数值计算角度来说,L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。
  • 在不加L2范数正则项时,我们可以通过正规方程发求得参数表达式如下。如果当我们的样本X的数目比每个样本的维度还要小的时候,矩阵XTX将会不是满秩的,也就是XTX会变得不可逆,所以w*就没办法直接计算出来了。
  • 但如果加上L2正则项,就变成了下面这种情况,就可以直接求逆了。

4.核范数

  • 核范数||W||*是指矩阵奇异值的和,*核范数是用来约束Low-Rank(低秩)。rank(w)的凸近似就是核范数||W||**。那么什么是低秩呢?
  • 从物理意义上讲,矩阵的秩度量的就是矩阵的行列之间的相关性。如果矩阵的各行或列是线性无关的,矩阵就是满秩的,也就是秩等于行数。如果矩阵表达的是结构性信息,例如图像、用户-推荐表等等,那么这个矩阵各行之间存在这一定的相关性,那这个矩阵一般就是低秩的。
  • 如果X是一个m行n列的数值矩阵,rank(X)是X的秩,假如rank (X)远小于m和n,则我们称X是低秩矩阵。低秩矩阵每行或每列都可以用其他的行或列线性表出,可见它包含大量的冗余信息。利用这种冗余信息,可以对缺失数据进行恢复,也可以对数据进行特征提取。

机器学习笔记——模型选择与正则化相关推荐

  1. python网格搜索核函数_机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明...

    算法 数据结构 机器学习笔记--模型调参利器 GridSearchCV(网格搜索)参数的说明 GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个 ...

  2. Scikit-Learn 机器学习笔记 -- 模型训练

    Scikit-Learn 机器学习笔记 – 模型训练 参考文档: handson-ml import numpy as np from matplotlib import pyplot as plt# ...

  3. 运用高斯核模型进行最小二乘回归_数据科学 | 第8讲:模型选择与正则化

    点击上方"蓝字"带你去看小星星 模型选择,是指利用统计方法,从众多自变量中,选择显著的.最能解释因变量变化的那一部分自变量参与建模.在统计建模中,模型选择是重要的也是核心的步骤之一 ...

  4. 【图解例说机器学习】模型选择:偏差与方差 (Bias vs. Variance)

    目录 一个例子:多项式回归中的阶数选择 防止过拟合 增加训练数据 正则化 偏差与方差 理论推导 偏差与方差的折中关系 附录 机器学习的过程大致分为三步:1)模型假设,比如我们假设模型是线性回归,还是多 ...

  5. 吴恩达机器学习笔记(五)正则化Regularization

    正则化(regularization) 过拟合问题(overfitting) Underfitting(欠拟合)–>high bias(高偏差) Overfitting(过拟合)–>hig ...

  6. 系统学习机器学习之模型选择

    1 问题 模型选择问题:对于一个学习问题,可以有多种模型选择.比如要拟合一组样本点,可以使用线性回归,也可以用多项式回归.那么使用哪种模型好呢(能够在偏差和方差之间达到平衡最优)? 还有一类参数选择问 ...

  7. 逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)...

    1.过拟合的问题(Over-fitting) 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0),但是可能会不能推广到新的数据. (1)下图是一个回归问题 ...

  8. 机器学习笔记(三)——正则化最小二乘法

    一. 模型的泛化与过拟合 在上一节中,我们的预测函数为: f(x;ω)=ωTx f(x;\omega) = \omega^Tx 其中, x=[x1],ω=[ω1ω0] x=\begin{bmatrix ...

  9. 大道至简——浅谈机器学习分类模型选择

    机器学习的基本分类模型: KNN,决策树,naive bayes,逻辑回归,SVM,adaboost KNN:一种直接的学习方法,通过相似的近邻投票分类.模型不确定性有三:距离度量(相似性度量),特征 ...

最新文章

  1. java dh密钥交换_java-信息安全(八)-迪菲-赫尔曼(DH)密钥交换
  2. python官方文档中文下载-python中文官方文档 PDF 下载
  3. Tomcat中两个不同项目共享Session
  4. 移植Python2到TQ2440
  5. 程序 峰谷值 提取_医学影像组学特征值(Radiomics Features)提取之Pyradiomics(一)理论篇...
  6. php万年历月份处理_php实现万年历的完整代码
  7. spingboot集成webSocket
  8. Android 绑定类型服务---使用信使(Messenger)
  9. 磁盘碎片整理工具:Diskeeper 2010简体中文专业豪华版+有效激活
  10. Vijos P1303 导弹拦截【最长上升子序列+DP】
  11. iOS底层探索之KVO(二)—KVO原理分析
  12. Codeforces Round #574 (Div. 2)
  13. 千万58招聘人员的选择值得信赖-米苏 58自动循环发帖器
  14. 常见绿盟扫描主机漏洞及修复方案
  15. 人工智能AI系列 - 视频图像搜索
  16. 双向电平转换芯片TXB0304应用笔记
  17. Linux出现“E45: ‘readonly‘ option is set (add ! to override)”的解决方法。
  18. js判断时间是否为今天日期(判断日期与当前日期相差多少天)
  19. Lazada开店步骤Lazada开店需要条件
  20. 浏览器兼容性总结: IE 火狐 谷歌 360 搜狗

热门文章

  1. 春天又来了,做好自己的一年之计
  2. Python操作SIM800C发送中文短信
  3. Ubuntu内网穿透搭建网站:设置跳转本地网页服务 6/17
  4. 复盘:一份完整的活动运营策划方案是这样的
  5. 复旦MBA:热情从未消退,让这场云端盛会点燃你的斗志
  6. 短距离无线通讯-NFC
  7. jeesite集群和负载均衡配置
  8. ADRC,自抗扰控制器,扩张状态观测器,ESO,模型预测控制算法MPC
  9. 学习笔记:《机器人SLAM导航核心技术与实战》序言
  10. 国内外黑客大会资料下载网址