第四章 训练模型

文章目录

  • 第四章 训练模型
  • 前言
  • 一、思维导图
  • 二、主要内容
    • 1、线性回归
    • 2、梯度下降
    • 3、多项式回归
    • 4、学习曲线
    • 5、正则化线性模型
    • 6、逻辑回归
  • 三、课后练习
  • 四、总结

前言

我们在之前的三章提到了很多的模型,训练了很多的模型,但是对于模型的训练我们依旧是一个黑盒的状态,不是很清楚里面到底发生了什么,这一章我们就来解析一下模型是什么训练出来完成预测的。本章分为六个小节,依旧是逐步递进的关系,从易到难,文中会穿插很多的公式,可以简单了解后跳过,如果真的需要搞懂每一个公式的意义可以先对线性代数有一定的了解。对于书中讲到的内容更多的是理解。


一、思维导图

二、主要内容

1、线性回归

  1. 定义
    训练一个线性回归模型就是一个最小化成本函数的过程,成本函数体现的就是模型预测与实际值之间的误差。
  2. 如何训练
    通过求解成本函数的数学方程我们可以获得模型。
  3. 计算复杂度
    计算复杂度体现的是完成一个模型训练的计算的复杂程度。标准的矩阵求逆的计算复杂度在2.4到3之间,随着特征的增加,特征翻倍计算复杂度也会乘与之前的5.3到8之间。

2、梯度下降

  1. 定义
    梯度下降与标准的解方程不同,是通过不断的迭代来找到成本函数的最优解。
  2. 算法约束
    1)学习率
    学习率的大小直接影响到模型的收敛速度与是否能收敛到最优解。当学习率很小的时候,模型需要很长的时间才能收敛,当学习率很大的时候则模型会在最优解之间反复横跳导致无法收敛。
    2)局部最优解
    对于成本函数不是凸函数的模型来说,我们在训练模型的时候可以会出现局部最优解,导致模型在收敛到最优解之前就已经停止训练。
    3)归一化
    梯度下降对于特征的归一化要求很高,是否归一化对于梯度下降模型训练有着很大的差异。
  3. 算法分类
    1)批量梯度下降
    批量梯度下降的定义是在算法每次迭代的时候都使用全部的训练数据来计算成本函数,该模型对于数据量庞大的情况收敛速度会非常的慢。
    2)随机梯度下降
    随机梯度下降每次迭代之后抽取一个实例来进行计算成本函数,所以到达最优解附近的速度最快,但是无法真正意义上的收敛,除非在每次迭代的过程中,逐渐降低学习率。
    3)小批量梯度下降
    小批量梯度下降处于随机梯度下降和批量梯度下降之间,每次迭代会抽取一部分的实例来进行计算成本函数,由于它的随机性,他与随机梯度下降一样,无法真正意义的收敛。
  4. 训练结果
    所有的梯度下降算法训练出来的模型都是几乎一样的,并且是采用同样的方式进行预测,只是针对于不同的数据集选择不同的算法训练。

3、多项式回归

  1. 定义
    当简单的一条直线无法拟合你的训练集的时候,我们这个时候就需要用到多项式,此时得到的线性模型不再是一条直线,而是一条曲折的曲线,阶数越高曲线越曲折。

4、学习曲线

  1. 定义
    为了判断模型是否过拟合或者欠拟合训练数据,所以提出了学习曲线的概念。它表示的随着训练集和验证集的数据增大训练误差的变化。
  2. 学习曲线的使用
    当训练集误差与验证集误差很相近并且汇与一个很高值时,说明模型欠拟合与训练集。当训练集误差与验证集误差之间有一个很大的差距,并且训练集误差都很小时,说明模型过拟合于训练集。
  3. 模型的泛化误差
    1)误差
    由于模型的预测错误导致的错误称为误差。
    2)方差
    由于模型过于敏感而倒是的错误称为方差。
    3)不可避免的误差
    由于数据集的噪音而导致的错误。
    4)误差与方差的权衡
    从上面的定义我们可以推算出,当误差降低的时候模型对特征不敏感方差肯定会提高,当方差降低的时候模型对特征很敏感误差肯定会提高,我们就需要在其中找到权衡。

5、正则化线性模型

  1. 定义
    为了解决模型过拟合于训练数据,所以提出了需要对模型进行正则化。
  2. 正则化线性模型的分类
    1)岭回归
    岭回归的核心算法就是在成本函数的基础上加上一个权重来约束模型,从而降低一些不重要特征的权重。
    2)Lasso回归
    Lasso回归的思想与岭回归相同,在成本函数加权重来约束模型,不同的是Lasso回归是直接选择放弃掉一些不重要的特征,比较适用于本身知道训练集中有个别特征是不重要的情况。
    3)弹性网络
    弹性网络介于岭回归和Lasso回归之间,它通过超参数混合比来控制约束函数,当混合比为0时,相当于当前模型为岭回归,当混合比为1时,相当于模型为Lasso回归。
    4)提前停止
    对于使用的是梯度下降算法的训练方式,我们可以使用提前停止的方式来约束模型。意在训练一开始给定一个很大的迭代次数,当成本函数持续一段时间保持在一个很低的水平,我们就可以提前停止训练,然后回滚模型到上一个出现的最优解。

6、逻辑回归

  1. 定义
    使用回归算法来执行分类任务的时候,我们就用到了逻辑回归。逻辑回归的预测不在是返回预测的数理数值,而是返回预测是数理逻辑值,有这个值来决定分类。
  2. 训练
    由于逻辑回归没有一个闭式方程,所以无法是用解标准方程的方式来训练模型,只能通过梯度下降的方式来完成训练,好在逻辑回归的成本函数是一个凸函数,不会使得函数收敛到一个局部最优解。
  3. 决策边界
    通俗易懂的说,当使用花瓣的长度来预测花的种类时,处于长度极值两端的数据可以自信的完成分类,但是处于长度灵界点的实例就无法很准确的做出预测,此时的这个临界值就称之为决策边界。
  4. softmax回归
    softmax回归用于处理逻辑回归的多分类问题,在训练softmax回归模型时,不再是求成本函数,而是求交叉熵,当模型性能能好时,模型的熵应该等于或接近于实例的熵交叉熵很小,当模型性能不好使,交叉熵就会偏大。

三、课后练习

1 .如果训练集具有数百万个特征,那么可以使用哪种线性回归训练算法?
如果训练集有数百万的特征,那么可以使用随机梯度下降或是小批量梯度下降训练算法,如果内存允许的情况下还可以使用批量梯度下降。不可以使用标准方程或SVD的方式,因为这两个算法会随着特征的增加计算复杂度快速增加。

2.如果训练集里特征的数值大小迥异,哪种算法可能会受到影响?受影响程度如何?你应该怎么做?
如果训练集特征数值大小迥异,那么梯度下降算法会受到影响,算法将需要很长的时间才能收敛到最优值,为了解决这个问题我们一般会对特征进行归一化。并且如果特征未进行归一化,那么对于正则化模型,正则化会惩罚权重的特征从忽略掉一下权重小的特征。

3.训练逻辑回归模型时,梯度下降会卡在局部最小值中吗?
逻辑回归模型不会卡在局部最小值,因为逻辑回归模型的成本函数是一个凸函数。

4.如果你让它们运行足够长的时间,是否所有的梯度下降算法都能得出相同的模型?
理论上来说,如果成本函数是一个凸函数,并且有一个合适的学习率,那么所有的梯度下降算法都将会得到一个近似的模型。但是由于小批量梯度下降和随机梯度下降算法并没有真正意义上的收敛,所以即使有很长的时间,也无法得到一个相同的模型。

5.假设你使用批量梯度下降,并在每个轮次绘制验证误差。如果你发现验证错误持续上升,可能是什么情况?你该如何解决?
这种情况有两种可能1、如果此时训练集的误差也在持续上升,则说明学习率过高,算法在发散,需要降低学习率。2、如果此时的训练集的误差没有持续上升,则说明你的模型过拟合于训练集,需要立刻停止训练,把模型参数回滚到上一次出现的误差最小值上。

6.当验证错误上升时立即停止小批量梯度下降是个好主意吗?
由于小批量梯度下降与随机梯度下降算法的随机性,所以并不是每一次的迭代都能获得一个很好的结果,误差上升就立即停止训练会导致函数收敛在一个次优解上。最好的是让验证误差持续一段时间上升的时候,停止训练,然后回滚模型。

7.哪种梯度下降算法(在我们讨论过的算法中)将最快到达最佳解附近?哪个实际上会收敛?如何使其他的也收敛?
随机梯度下降算法可以最快的达到最优解附近,因为他每次迭代只会考虑一个示例。在给定很长时间的情况下只有批量梯度下降算法能收敛到最优解。要想使随机梯度下降小批量梯度下降能够收敛到最优解,只能通过不断的降低学习率的方式。

8.假设你正在使用多项式回归。绘制学习曲线后,你会发现训练误差和验证误差之间存在很大的差距。发生了什么?解决此问题的三种方法是什么?
验证误差与训练误差存在很大的差距,说明模型过拟合于训练集。解决这个问题有三个方法1:、选择一个较小自由度的模型。2、对模型添加正则化来约束模型3、往训练集中添加更多的数据。

9.假设你正在使用岭回归,并且你注意到训练误差和验证误差几乎相等且相当高。你是否会说模型存在高偏差或高方差?你应该增加正则化超参数α还是减小它呢?
当训练误差几乎等于验证误差并且相当高时,说明模型欠拟合你训练集,此时的模型存在很高的偏差,我们应该降低正则化超参数来接降低对模型的约束。

10.为什么要使用:
a.岭回归而不是简单的线性回归(即没有任何正则化)?
添加了一点正则化话的模型往往比简单的线性回归变现更好,所以使用岭回归而不是简单的线性回归。
b.Lasso而不是岭回归?
对于岭回归来说lasso回归添加了惩罚,导致一些特征的权重直接为0意在忽略掉这些特征,起到了特征选择的作用。如果你个人觉得所有的特征中有一部分特征是没有用的,那可以使用lasso回归,如果不确定还是使用岭回归。
c.弹性网络而不是Lasso?
因为lasso回归很极端的忽略掉了一些特征,只适用于一些很特殊的情况,弹性网络是介于岭回归和lasso回归之间,用一个超参数r来调控。所以是一个比lasso回归岭回归更优的选择。

11.假设你要将图片分类为室外/室内和白天/夜间。你应该实现两个逻辑回归分类器还是一个Softmax回归分类器?
由于softmax是一个多类分类器,无法处理多输出分类问题,并且室内室外和白天黑夜是属于多输出问题,所以应该是训练两个逻辑回归分类器。

四、总结

由于暂时只涉及到线性模型的训练,所以本章也就只谈到了对于线性模型的训练。总结一下就是:

  1. 线性模型的训练方式
    求解闭式方程、梯度下降
  2. 怎么判断训练出来的模型是否拟合数据
    查看学习曲线
  3. 解决过拟合问题
    正则化模型
  4. 线性模型解决分类问题
    逻辑回归

对文章有任何疑惑或者想要和博主一起学机器学习一起进步的朋友们可以添加 群号:666980220。需要机器学习实战电子版或是思维导图的也可以联系我。祝你好运!

项目地址: github

边境的悍匪—机器学习实战:第四章 训练模型相关推荐

  1. 机器学习实战——第四章(分类):朴素贝叶斯

    前言 首先感谢博主:Jack-Cui 主页:http://blog.csdn.net/c406495762 朴素贝叶斯博文地址: https://blog.csdn.net/c406495762/ar ...

  2. 尚学堂java实战第四章课后习题

    尚学堂java实战第四章课后习题 文章中的题目答案仅供参考 选择题答案: 1.B 解析:一个java类必然存在构造器,即使没有定义构造器,也会存在一个默认的无参构造器. 2.D 3.AC 解析: A( ...

  3. 李弘毅机器学习:第四章—梯度下降法

    李弘毅机器学习:第四章-梯度下降法 什么是梯度下降法? Review: 梯度下降法 Tip1:调整学习速率 小心翼翼地调整学习率 自适应学习率 Adagrad 算法 Adagrad 是什么? Adag ...

  4. 动手学机器学习(第二版)-第四章训练模型

    第四章 训练模型 线性模型(Linear Regression) 线性模型的一般形式如下 y^=θ0+θ1x1+θ2x2+-+θnxn\hat{y} = \theta_0 + \theta_1 x_1 ...

  5. 零基础学Python课后实战第四章

    零基础学Python课后实战第四章 实战一:输出王者荣耀的游戏角色 实战二:模拟火车订票系统 实战三:电视剧的收视率排行榜 tips 实战一:输出王者荣耀的游戏角色 列表的创建.遍历列表 代码 pri ...

  6. 《机器学习实战》第二章学习笔记:K-近邻算法(代码详解)

    <机器学习实战>数据资料以及总代码可以去GitHub中下载: GitHub代码地址:https://github.com/yangshangqi/Machine-Learning-in-A ...

  7. 机器学习实战:第一章

    根据方教授的建议和要求,在暑假里简单自学<机器学习实战>,记录学习过程和代码. 记 第一章是对机器学习的一些概念介绍,定义了若干专业术语.列举了很多机器学习的各类实例.给出了一个" ...

  8. 机器学习实战第15章pegasos算法原理剖析以及伪代码和算法的对应关系

    Pegasos原文是: http://ttic.uchicago.edu/~nati/Publications/PegasosMPB.pdf 还是挺长的,论文结构是: 第1~6页:主要原理 第7~15 ...

  9. 机器学习实战(四)逻辑回归LR(Logistic Regression)

    目录 0. 前言 1. Sigmoid 函数 2. 梯度上升与梯度下降 3. 梯度下降法(Gradient descent) 4. 梯度上升法(Gradient ascent) 5. 梯度下降/上升法 ...

  10. android movie 资源释放,Android 资讯类App项目实战 第四章 电影模块

    前言: 正在做一个资讯类app,打算一边做一边整理,供自己学习与巩固.用到的知识复杂度不高,仅适于新手.经验不多,如果写出来的代码有不好的地方欢迎讨论. 以往的内容 第四章 电影模块 本章内容最终效果 ...

最新文章

  1. python实现三种以上判断条件_Python小课笔记--Python控制流:if逻辑判断
  2. 成功解决win系统电脑中网络仅看到自己计算机图文教程
  3. 14K Star,「程序员做饭指南」冲上热榜
  4. jquery 鼠标移动 div内容上下或左右滚动
  5. python rabitmq_python使用rabbitmq实例二,工作队列
  6. MySQL数据约束和关联查询
  7. 可逆与不可逆算法,对称加密与非对称加密算法总结
  8. java日期算前一天_java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)...
  9. k8s核心技术-Helm(安装和配置仓库)---K8S_Google工作笔记0045
  10. 一个性能较好的JVM参数配置(转)
  11. pycharm的安装及破解
  12. 2022年终总结-知识沉淀、疫情、展望未来
  13. miui11开发版升级Android10,小米9透明版MIUI11开发版系统刷机包(最新固件系统升级包MIUI11.9.12.31开发版安卓10)...
  14. Hadoop分布式集群的安装与部署实训总结报告
  15. cad提取边界命令_cad如何提取文本的轮廓线
  16. Java实现三角形打印
  17. 电视服务器绑上电池信号强吗,路由器上面绑电池,可以增加WiFi信号,真的有作用吗?...
  18. Oculus Spatializer Plugin (OSP)
  19. Ardublock的安装
  20. 小米造车,造的不是商业模式,是趋势

热门文章

  1. Liunx-安装SonarQuble
  2. Qcon 演讲纪实:详解如何在实时视频通话中实现AR功能
  3. jieba分词关键词抽取
  4. dlna android电视,DLNA怎么用?DLNA连接智能电视和电脑的方法分享
  5. 国内外Java学习论坛汇总
  6. Unity 自定义Package
  7. 2021-11-25【数据结构/严蔚敏】【Dijkstra】【代码实现算法7.15】
  8. MSF之meterpreter权限维持
  9. esp分区引导修复失败_UEFI引导损坏启动不了怎么修复教程
  10. 如何使用微PE工具箱制作U盘PE