Andrew Ng 机器学习笔记 ---By Orangestar

Week_6 (1)


In Week 6, you will be learning about systematically improving your learning algorithm. The videos for this week will teach you how to tell when a learning algorithm is doing poorly, and describe the 'best practices' for how to 'debug' your learning algorithm and go about improving its performance.


1. Deciding What to Try Next

如何改进算法?

  1. 使用更多样本
  2. 尝试更少的特征参数
  3. 尝试用更多的特征参数
  4. 尝试多元参数
  5. 试着降低或者升高正则参数

但是,选择一种有效的方法是困难的

所以,我们需要评估一个机器学习算法的性能的方法

Machine learning diagnostic

定义:

2. Evaluating a Hypothesis

如何评估假设函数以及避免过拟合和欠拟合?

如何评价假设函数?

将数据分割:按照某个比例

1.常用训练集

2.测试集

基本步骤:

  • (回归问题):(线性回归)

  • (分类问题):(逻辑回归)

    差不多,用测试集评估。

    问题是:如何计算error(0/1)?

    其实和之前差不多,要定义决策界限

    用0/1错分率来定义error

总结:

3. Model Selection and Train/Validation /Test Sets

模型选择问题//训练集//验证集//测试集

  1. 模型选择:

    还需要选择一个参数d. 也就是最高次数。

    可以逐个选择,然后逐个算出测试集的误差函数。

    然后观察哪个最小。

    而且,这样选出的模型,可能仅仅是可以很好的拟合测试集,但是其他的说不定。所以,我们仅仅是用测试集来拟合样本。不公平!

    所以,我们可以用 交叉验证集!cross validation set

    现在把数据集分为3个部分:

    就是说,验证是最好的模型,可以用交叉验证集来检验!然后,就没有和测试集进行拟合,回避了测试集的嫌疑

    一般的比例为:

4. Diagnosing Bias vs. Variance

如何判断一个算法,是和方差有问题还是和偏差有问题?

用图像来直观理解

注意理解bias error 和 variance error

也就是,区分过拟合和欠拟合的情况

当然,这两种情况都是不好的!

5. Regularization and Bias / Variance

更深入地 探讨一下偏差和方差的问题 讨论一下两者之间 是如何相互影响的 以及和算法的正则化之间的相互关系

首先,我们来看一下正则项:

当然,我们需要先用交叉验证集上进行选择模型

再试着用哪一个正则项更好。来得到最小的J_train_

如图:

总结步骤:

  • for each λ go through all the models to learn some Θ.
  • without regularization or λ = 0

    以上两点很重要

6. 学习曲线learning curves

一种模型,当训练集的样本增加的时候,error是越来越大的

  • 高偏差情况high bias(欠拟合)

结论:

所以,如果模型是高偏差,再多的样本来拟合,也不太会管用

  • 高方差情况high variance(过拟合)

这种情况下,使用更多的样本是有帮助的

总结:

画出曲线,可以更容易看出是高偏差还是高方差的问题,然后来选择改进算法

7. Deciding What to Do Next Revisited

当我们发现方差或者偏差出了问题,我们应该怎么做?

  • 如何和神经网络联系/

    如果发生过拟合,可以使用正则化

    但是,计算量更大。

  • 如何选择hiding layer?

    想用多个隐藏层。可以尝试着数据分割。


总结:

Our decision process can be broken down as follows:

  • Getting more training examples: Fixes high variance

  • Trying smaller sets of features: Fixes high variance

  • Adding features: Fixes high bias

  • Adding polynomial features: Fixes high bias

  • Decreasing λ: Fixes high bias

  • Increasing λ: Fixes high variance.

Diagnosing Neural Networks

  • A neural network with fewer parameters is prone to underfitting. It is also computationally cheaper.
  • A large neural network with more parameters is prone to overfitting. It is also computationally expensive. In this case you can use regularization (increase λ) to address the over-fitting.

Using a single hidden layer is a good starting default. You can train your neural network on a number of hidden layers using your cross validation set. You can then select the one that performs best.

Model Complexity Effects:

  • Lower-order polynomials (low model complexity) have high bias and low variance. In this case, the model fits poorly consistently.
  • Higher-order polynomials (high model complexity) fit the training data extremely well and the test data extremely poorly. These have low bias on the training data, but very high variance.
  • In reality, we would want to choose a model somewhere in between, that can generalize well but also fits the data reasonably well.

week_6的更多相关文章

随机推荐

  1. (WebFlux)004、WebFilter踩坑记录

    一.背景 使用SpringWebFlux的WebFilter时,由于不熟悉或一些思考疏忽,容易出现未知的异常.记录一下排查与解决方案,给大家分享一下. 二.问题 2.1 问题描述 在测试接口方法时,出 ...

  2. Laravel-Easy-Admin 快速搭建数据后台 web管理后台

    基于PHP + Laravel + element-admin-ui 搭建的快速数据后台,只在解决系列后台增删改查等日常操作.快速搭建,在生成业务的同时可以花更多的时间关注技术本身,提高程序员自身进阶 ...

  3. 4.Git分支查看&创建&切换&合并

    查看分支 git branch -v # 查看分支,*代表当前所在的分支     创建分支 git branch hot-fix # 创建一个hot-fix分支,然后使用-v查看 # 可以看到除了ma ...

  4. Linux软件安装方式 - Tarball&RPM&YUM

    软件安装 简介 概念详解 # 概念详解 - 开放源码: 程序码, 写给人类看的程序语言, 但机器并不认识, 所以无法执行; - 编译器: 将程序码转译成为机器看的懂得语言, 就类似翻译者的角色; - ...

  5. Vue ref 和 v-for 结合(ref 源码解析)

    前言 Vue 中组件的使用很方便,而且直接取组件实例的属性方法等也很方便,其中通过 ref 是最普遍的. 平时使用中主要是对一个组件进行单独设置 ref ,但是有些场景下可能是通过给定数据渲染的,这时 ...

  6. Rock18框架之整体框架介绍

    1. 总体框架图 2.框架能解决哪些问题? 问题1: 自动化设备包含龙门架.机械手.伺服.步进等电机.IO控制.定位及纠偏.界面展示等部分.其中硬件(伺服.IO等)是需要更换的,硬件的更换不影响整套系 ...

  7. Python基础部分:2、 对计算机的认识和python解释器

    目录 一.计算机五大组成部分 1.控制器 2.运算器 3.储存器 4.输入设备 5.输出设备 二.计算机三大核心硬件 1.cpu 2.内存 3.硬盘 三.操作系统 四.编程与编程语言 1.编程语言 2 ...

  8. 从0到1搭建redis6.0.7

    redis集群搭建 一.安装redis 源码安装: 1.下载源码包: wget http://download.redis.io/releases/redis-6.0.7.tar.gz 2.解压到指定 ...

  9. spring源码解析(一) 环境搭建(各种坑的解决办法)

    上次搭建spring源码的环境还是两年前,依稀记得那时候也是一顿折腾,奈何当时没有记录,导致两年后的今天把坑重踩了一遍,还遇到了新的坑,真是欲哭无泪;为了以后类似的事情不再发生,这次写下这篇博文来必坑 ...

  10. onps栈使用说明(3)——tcp、udp通讯测试

    4. tcp客户端 在协议栈源码工程下,存在一个用vs2015建立的TcpServerForStackTesting工程.其运行在windows平台下,模拟实际应用场景下的tcp服务器.当tcp客户端 ...