决定下一步做什么(Deciding What to Try Next)

确保在设计机器学习系统时,能够选择一条最合适、最正确的道路。

具体来讲,将重点关注的问题是:假如你在开发一个机器学习系统,或者想试着改进一个机器学习系统的性能。

你应如何决定接下来应该选择哪条道路?

1. 获得更多的训练实例——通常有效,但代价较大,下面的方法也可能有效,可
考虑先采用下面的几种方法。 
2. 尝试减少特征的数量 
3. 尝试获得更多的特征 
4. 尝试增加多项式特征 
5. 尝试减少归一化程度 λ 
6. 尝试增加归一化程度 λ

不应该随机选择上面的某种方法来改进算法

而是运用一些机器学习诊断法来帮助我们知道上面哪些方法对算法是有效的。

——————————————————————————————————————


评估学习器性能:

将数据分成训练集和测试集, 通常70%作为训练集, 30%作为测试集。

—————————————————————————————————————————————————————————

模型选择和交叉验证集(Model Selection and Train_Validation_Test Sets)

使用交叉验证集来帮助选择模型。 
即:使用 60%作为训练集, 20%作为交叉验证集,20%作为测试集 。

模型选择的方法为:

1. 使用训练集训练出 10 个模型

2. 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)

3. 选取代价函数值最小的模型

4. 用步骤 3 中选出的模型对测试集计算得出泛化误差(代价函数的值)——仅是为了得出泛化误差,此步对模型选择无用。

—————————————————————————————————————————————————————————


偏差/方差诊断( Diagnosing Bias vs. Variance)

偏差大,欠拟合;

方差大,过拟合。

是一个很有效的指示器,指引可以改进算法的方法和途径。

结论:

交叉验证集误差和训练集误差近似时:偏差/欠拟合 ;

交叉验证集误差远大于训练集误差时:方差/过拟合。

—————————————————————————————————————————————————————————

正则化和偏差/方差(Regularization and Bias_Variance)

在训练模型的过程中, 一般会使用一些正则化方法来防止过拟合。

选择一系列的想要测试的 λ 值,通常是 0-10 之间的呈现 2 倍关系的值。

(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10 共 12 个)。

我们同样把数据分为训练集、交叉验证集和测试集。

选择 λ 的方法为: 
1. 使用训练集训练出 12 个不同程度归一化的模型;

2. 用12个 模型分别对交叉验证集计算的出交叉验证误差;

3. 选择得出交叉验证误差最小的模型;

4. 运用步骤 3 中选出模型对测试集计算得出泛化误差。——仅是为了得出泛化误差,此步对模型选择无用。

结论:

当 λ 较小时,训练误差较小(过拟合)而交叉验证误差较大 ;

随着 λ 的增加,训练误差不断增加(欠拟合),而交叉验证误差则是先减小后增加 。

—————————————————————————————————————————————————————————

学习曲线(Learning Curves)

经常使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。

学习曲线是学习算法的一个很好的合理检验(sanity check)。

学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。

即,如果我们有 100 行数据,我们从 1 行数据开始,逐渐学习更多行的数据。

思想:

当训练较少数据时, 训练的模型将能够非常完美地适应较少的训练数据, 但是训练出来的模型却不能很好地适应交叉验证集数据或测试集数据。

如何利用学习曲线识别高偏差/欠拟合?

作为例子,试用一条直线来适应下面的数据,可以看出,无论训练集有多么大误差都不会有太大改观:

如何利用学习曲线识别高方差/过拟合?

假设我们使用一个非常高次的多项式模型,并且正则化非常小.

可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。

小结:

在高偏差/欠拟合的情况下,增加数据到训练集不一定能有帮助;

在高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果。

—————————————————————————————————————————————————————————

决定下一步做什么(Deciding What to Do Next)

六种可选方案:

1. 获得更多的训练实例——解决高方差

2. 尝试减少特征的数量——解决高方差

3. 尝试获得更多的特征——解决高偏差

4. 尝试增加多项式特征——解决高偏差

5. 尝试减少正则化程度 λ——解决高偏差

6. 尝试增加正则化程度 λ——解决高方差

神经网络的方差和偏差:

使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小;

使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。

通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。

对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数。

为了更好地作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络训练神经网络, 然后选择交叉验证集代价最小的神经网络。

机器学习07应用机器学习的建议相关推荐

  1. 机器学习算法一览,应用建议与解决思路

    机器学习算法一览,应用建议与解决思路 作者:寒小阳  时间:2016年1月.  出处:http://blog.csdn.net/han_xiaoyang/article/details/5046933 ...

  2. 机器学习——07树回归

    机器学习--07树回归 参考资料 AIlearning Machine-Learning-in-Action 机器学习实战(美)哈林顿(Harrington,P.)著:李锐等译.-北京:人民邮电出版社 ...

  3. 程序设计-在校整理-07 基于机器学习算法的DGA域名识别(NB、XGboost、MLP初探)

    [在校整理-07 基于机器学习算法的DGA域名识别(NB.XGboost.MLP初探)](注:仅供参考学习使用) 一.课题内容和要求 二.理论基础 2.1 DGA域名生成算法 2.2 DGA算法原理 ...

  4. python机器学习库_Python机器学习库 Top 10,你值得拥有!

    随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习 ...

  5. 机器学习 可视化_机器学习-可视化

    机器学习 可视化 机器学习导论 (Introduction to machine learning) In the traditional hard-coded approach, we progra ...

  6. 机器学习与分布式机器学习_我将如何再次开始学习机器学习(3年以上)

    机器学习与分布式机器学习 重点 (Top highlight) I'm underground, back where it all started. Sitting at the hidden ca ...

  7. 机器学习与分布式机器学习_机器学习应运而生

    机器学习与分布式机器学习 Human mortality is not a deterministic process (unless you happen to be living in a sci ...

  8. Azure机器学习——创建Azure机器学习服务

    创建Azure机器学习服务 一.Azure订阅 二.创建Azure机器学习服务(工作区) 在Azure portal界面创建Azure机器学习工作区 使用Python SDK创建Azure机器学习工作 ...

  9. 机器学习指南_机器学习-快速指南

    机器学习指南 机器学习-快速指南 (Machine Learning - Quick Guide) 机器学习-简介 (Machine Learning - Introduction) Today's ...

最新文章

  1. CVPR 2020目标跟踪多篇开源论文(上)
  2. 今天来个爪哇去边框的小代码
  3. 复制、移动和删除:cp, rm, mv
  4. eclipse占用内存过大_Java性能调优学习(三)-jmap+mat分析内存溢出问题实战
  5. 华为员工 iPhone 发文遭罚;百度遭约谈勒令整改;锤子 1577 万元被法院保全 | 极客头条...
  6. android如何开发ui服务,Android UI-对Activity工作流程的理解(一)
  7. Win11系统如何打开地雷游戏 Win11打开扫雷游戏的教程
  8. webstrom 汉化方法
  9. 方舟生存进化服务器怎么开?方舟生存进化架设服务器教程
  10. OpenCV-绘制同心圆
  11. matlab距离平方和公式推导,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?...
  12. 深入解析Superdome 2:惠普关键业务平台再加强?
  13. 随笔 2021-11-23
  14. 耳鸣头晕是怎么回事?
  15. win10睡眠状态下唤醒花屏
  16. 陌陌Android客户端一面
  17. 纯HTML编写仿淘宝粉丝福利购页面-优惠券、商品列表、图片悬浮等布局
  18. 【20200129】win10 win7双系统安装成功后,win7提示未激活怎么办?
  19. ue5不能打包的打包方法
  20. 微软云 azure 数据迁移之oracle11g dataguard

热门文章

  1. python 示例_带有示例的Python date timetuple()方法
  2. stl vector 函数_vector :: crend()函数以及C ++ STL中的示例
  3. dbms数据库管理系统_基本数据库管理系统(DBMS)能力问题和解答
  4. call和ret(f)指令
  5. 基本图形怎么改字体_PPT做得慢怎么办?掌握这6个技巧,你也能快速做出精美的PPT...
  6. 套接字编程--1(UDP协议编程,端口号,传输层协议,网络字节序)
  7. 用结构体写一个简单的通讯录
  8. 类的成员函数可以访问属于该类的任意对象的私有变量
  9. Linux下C语言使用openssl库进行MD5校验
  10. 1051 复数乘法 (15 分)