1.introduction(介绍)

主要讲解一些机器学习中简单的模型评价,模型选择,模型改进的方法。主要分为性能评价理论基础改进措施三部分

content

  • 1.introduction(介绍)
  • 2.How to evaluate algorithm's performance(性能评价)
  • 3.theoretical foundation(理论依据)
    • 3.1诊断偏差和方差
    • 3.2正则化和偏差,方差
    • 3.3学习曲线
  • 4.improved method(改进方法)
  • 5.Additional words(额外的话)
  • 6.reference

2.How to evaluate algorithm’s performance(性能评价)

一般情况下我们会选择训练集测试集,按照70%和30%的比例进行分配。使用训练集来训练模型,使用测试集来评价训练的泛化性能,避免出现过拟合的情况。但是仔细想想,我们训练集训练的是系数θ\thetaθ,对于模型是否得当,用什么来评价呢?很自然的,我们会想到再来一个数据集用来评价模型怎么样,这就是进化版的性能评价训练集(training set)交叉验证集(cross validation set)和测试集(Test set),一般按照60%,20%,20%来分配。

下面举一个例子说明一下引入交叉验证集的作用。

对与线性回归的问题,假设我们需要选择多项式的次数,即对于

如果把模型和θ\thetaθ都放进测试集训练,训练出来的结果泛化性能不好,我们无法确定是θ\thetaθ选择的不好还是多项式次数选择的不好,加入交叉验证集后,我们这样评价性能:
首先针对各个模型训练得到不同的θ\thetaθ向量,计算他们在交叉验证集中的代价函数JCV(θ)J_{CV}(\theta)JCV​(θ),选择最小的JCV(θ)J_{CV}(\theta)JCV​(θ)作为我们要选择的模型,然后在测试集上验证性能怎么样。如下图所示,我们在交叉验证集上选择了假设函数为h(θ)=θ0+θ1x+⋯+θ3x3h(\theta)=\theta_0+\theta_1x+\cdots+\theta_3x^3h(θ)=θ0​+θ1​x+⋯+θ3​x3,然后在测试集上计算Jtest(θ(4))J_{test}(\theta^{(4)})Jtest​(θ(4))评价模型选择的怎么样。

3.theoretical foundation(理论依据)

3.1诊断偏差和方差

知道我们的算法是偏差问题还是方差问题是很重要的,这为我们进行下一步的优化奠定了基础。
首先我们定义:偏差问题是由欠拟合导致的,方差问题是由过拟合导致的。即进行模型优化的第一步是判断模型到底是欠拟合还是过拟合。

通过分析,我们可以得到这样一张图

解释一下这个图。对于Jtrain(θ)J_{train}(\theta)Jtrain​(θ)曲线,显然多项式的次数越高,越能把数据集拟合的好,在训练集上的代价函数的值会越小;对于JCV(θ)J_{CV}(\theta)JCV​(θ),在开始欠拟合的时候代价函数会比较大,在后面过拟合的时候代价函数也很大,只有恰好拟合的时候代价函数才会比较小。
如何通过JCV(θ)J_{CV}(\theta)JCV​(θ)和Jtrain(θ)J_{train}(\theta)Jtrain​(θ)来判断我们的算法是欠拟合还是过拟合呢?根据图我们可以得到结果:当JCV(θ)J_{CV}(\theta)JCV​(θ)和Jtrain(θ)J_{train}(\theta)Jtrain​(θ)都很大的时候,算法处于欠拟合;当JCV(θ)J_{CV}(\theta)JCV​(θ)大,Jtrain(θ)J_{train}(\theta)Jtrain​(θ)小的时候,算法处于过拟合状态

3.2正则化和偏差,方差

正则化系数λ\lambdaλ对偏差方差问题有什么影响呢?正则化是对非零项的θ\thetaθ施加惩罚,λ\lambdaλ大的话,对非零项的θ\thetaθ施加惩罚较大,即对各个项有惩罚,就会导致算法倾向于欠拟合,λ\lambdaλ小的话,对非零项的θ\thetaθ施加惩罚较小,算法更容易处于过拟合。

同理我们可以画出JCV(θ),Jtrain(θ)−−λJ_{CV}(\theta),J_{train}(\theta)--\lambdaJCV​(θ),Jtrain​(θ)−−λ的关系图

3.3学习曲线

所谓学习曲线就是指代价函数JCV(θ)J_{CV}(\theta)JCV​(θ)和Jtrain(θ)J_{train}(\theta)Jtrain​(θ)随着training set size变化的曲线。对于欠拟合和过拟合会呈现出不同的特性。
对于欠拟合,我们可以得到下面的曲线

Jtrain(θ)J_{train}(\theta)Jtrain​(θ)肯定是随着训练样本的增多而变多,JCV(θ)J_{CV}(\theta)JCV​(θ)随着训练样本的增多而变小,最后会很接近Jtrain(θ)J_{train}(\theta)Jtrain​(θ),且保持在较高的值。对于这种情况,增加样本数量是没用的
对于过拟合,我们可以得到下面的曲线

和欠拟合不同的点是他的JCV(θ)J_{CV}(\theta)JCV​(θ)和Jtrain(θ)J_{train}(\theta)Jtrain​(θ)会有较大的差距,因为算法的泛化性能不好,所以用在交叉验证集会有较大的值。在这种情况下,增加训练集会使得效果变好。

4.improved method(改进方法)

我们可以怎样来改进欠拟合和过拟合的不足呢?
对于欠拟合,我们可以

  • 增加额外的特征
  • 增加更高的多项式次数
  • 减小λ\lambdaλ

对于过拟合,我们可以

  • 减小特征数目
  • 减小多项式的次数
  • 增加样本数
  • 增大λ\lambdaλ

虽然前面主要是用线性回归来推导的,但是也适用于神经网络。一般情况下,我们把节点少,层数少的网络和线性回归中低次幂作为对照,要注意发没发生欠拟合的情况,把节点多,层数多的网络和线性回归中高次幂作为对照,要注意有没有发生过拟合的情况。

5.Additional words(额外的话)

最后给出吴恩达在课上的一段话:
So if you like you can to think of this as a way of avoiding whats sometimes called premature optimization in computer programming. And this idea that says we should let evidence guide our decisions on where to spend our time rather than use gut feeling, which is often wrong.
想要表达的意思就是小步快走,在前期不要花太多时间去构建一个完美无缺的模型,而是使得模型尽可能地简单,以方便你尽可能快的去尝试模型是否可以起作用。在简单的模型上进行迭代,优化,让事实来指导我们。回过头来看真是感慨万千,重要的不是想着要做多好,而是开始做。

6.reference

吴恩达机器学习

机器学习算法性能评价,改进的理论基础以及改进措施相关推荐

  1. 吴恩达机器学习6——机器学习算法改进、系统设计

    吴恩达机器学习6 一.机器学习算法改进 1. 机器学习算法评价 1.1 评估模型 1.2 模型选择和交叉验证集 2. 偏差与方差 2.1 诊断偏差和方差 2.2 正则化和偏差/方差 2.3 学习曲线 ...

  2. 「AI科技」机器学习算法之K-means算法原理及缺点改进思路

    https://www.toutiao.com/a6641916717624721933/ 2019-01-03 08:00:00 K-means算法是使用得最为广泛的一个算法,本文将介绍K-mean ...

  3. 域对抗自适应算法的设计、不足与改进(Domain Adversarial Learning)

    ©作者 | 江俊广 单位 | 清华大学 研究方向 | 迁移学习 本文主要介绍域自适应(Domain Adaptation)中的对抗域自适应方法(Domain Adversarial Learning) ...

  4. 基于python的简单KNN算法(K- Nearest Neighbor)的实现与改进

    最近在自学python的数据分析,还想稍微蹭一蹭深度学习,于是不可避免地接触到了最简单的机器学习算法--KNN算法.该方法的思路非常简单直观:如果一个样本在特征空间中的K个最相似(即特征空间中最邻近) ...

  5. 机器学习优化中的交叉熵及改进形式

    机器学习优化中的交叉熵及改进形式   [摘要]目前分类问题广泛的应用到我们的实际生活中[1],因而我们应该研究如何分类,研究它的算法.交叉熵通常在机器学习的分类问题中用作损失函数来判断分类模型的优劣, ...

  6. DL之CNN:计算机视觉之卷积神经网络经典算法简介、重要进展、改进技巧之详细攻略(建议收藏)

    DL之CNN:计算机视觉之卷积神经网络经典算法简介.重要进展.改进技巧之详细攻略(建议收藏) 目录 CNN经典算法细讲 1.CNN历年冠军算法 1.1.LeNet-5 1.2.AlexNet 1.3. ...

  7. Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题

    Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题 目录 输出结果 实现代码 代码下载 输出结果 实现代码 %单幅图象的暗原色先验去雾改进算法,能够很好地改进天空 ...

  8. 图像去雾算法_Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题...

    Matlab:单幅图象的暗原色先验去雾改进算法,能够很好地改进天空或明亮部分色彩失真问题 目录 输出结果 实现代码 代码下载 输出结果 ​ 实现代码 %单幅图象的暗原色先验去雾改进算法,能够很好地改进 ...

  9. 花朵授粉算法(FPA)文章复现(动态调整p值+动态全局改进异花授粉+增强局部改进自花授粉+动态边界处理)

    花朵授粉算法(FPA)文章复现(动态调整p值+动态全局改进异花授粉+增强局部改进自花授粉+动态边界处理)--HSFPA 复现内容包括:文章改进FPA算法实现.23个基准测试函数.文中相关因子分析.与F ...

  10. 机器学习算法小结与收割offer遇到的问题

    机器学习是做NLP和计算机视觉这类应用算法的基础,虽然现在深度学习模型大行其道,但是懂一些传统算法的原理和它们之间的区别还是很有必要的.可以帮助我们做一些模型选择.本篇博文就总结一下各种机器学习算法的 ...

最新文章

  1. Mac下Git与Github的简单使用
  2. keepalived(5)——lvs和arrp集成操作(1)
  3. Android常用的工具类
  4. 程序员养生攻略,你值得拥有
  5. Homebrew 安装使用
  6. python字典popitem和pop_python字典popitem_python 字典之pop() and popitem()
  7. Apple Cached Service 导致 iPhone app store无法下载程序
  8. AC日记——最小路径覆盖问题 洛谷 P2764
  9. 同一个页面Button OnClientClick事件 和服务器验证控件提交问题
  10. 数据结构/排序/归并排序/二路归并排序
  11. 系统更新win10服务器出错,Win10系统Windows Update更新出现0x80080005错误代码怎么办...
  12. python考试报名官网安徽_2019年3月安徽宿州学院全国计算机等级考试报名通知
  13. VMware Workstation15.5下载安装教程(win10)
  14. java2d方法_Java SunGraphics2D.fillRect方法代码示例
  15. oracle怎么确定安装成功,怎么判断oracle是否安装成功
  16. java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法 ? stop() 和 suspend() 方 法为何不推荐使用?
  17. 如何确定试管婴儿胚胎质量
  18. 中国蚁剑的下载以及安装教程
  19. CMake I add_custom_command命令详解(构建)
  20. python图片目标检测_python+opencv实现目标检测中图片怎么插入

热门文章

  1. 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证....
  2. 高程3总结#第23章离线应用与客户端存储
  3. spring security实战 3-使用授权码模式( Authorization Code grant)保护资源
  4. Redis 集群(学习笔记十)
  5. maven 项目搭建
  6. PHP_SELF,SCRIPT_NAME,SCRIPT_FILENAME,PATH_INFO,REQUEST_URI的区别
  7. iOS MapViewDemo地图小样例
  8. 只会编程的程序员没有前途
  9. ASP.NET 2.0使用Web Part创建应用程序之一(共二)
  10. 前端保存之前输入的值_前端基础进阶(一):内存空间详细图解