《图解机器学习-杉山将著》读书笔记---CH4
CH4 带有约束条件的最小二乘法
重点提炼
提出带有约束条件的最小二乘学习法的缘故:
左图中可见:一般的最小二乘学习法有个缺点----对于包含噪声的学习过程经常会过拟合
右图:有了空间约束之后,学习到的曲线能避免过拟合,得到想要的学习结果(x-y关系)。
带有约束条件的最小二乘学习法具体方法
1.部分空间约束的最小二乘学习法
① 公式
在上面普通最小二乘学习法公式基础上添加一个约束条件:
② 对线性模型进行带有约束条件的最小二乘学习,得到参数theta
③ 优点:只用了参数空间的一部分
④ 缺点:由于正交投影矩阵P的设置有很大的自由度,所以在实际应用中操作较难
2.L2约束的最小二乘学习法----圆形
① 公式
在普通最小二乘学习法公式基础上添加一个约束条件:
这里用到的二范数,所以此种方法叫做L2,L2约束的最小二乘学习法是以参数空间的原点为圆心,在一定半径范围的圆内进行求解。
② 利用拉格朗日对偶问题,通过求最优解问题,得到参数theta
③ 优点:比起部分空间约束的最小二乘学习法,L2约束的最小二乘学习法在操作上相对容易,避免了空间约束方法中有很大自由度去设置矩阵P
3.一般L2约束的最小二乘学习法----椭圆形
① 公式
在普通最小二乘学习法公式基础上添加一个约束条件:,可以把参数限制在椭圆形状的数据区域内
② 参数的解
如何选择模型?
1.L2约束的最小二乘学习法中选择高斯核模型的参数影响:
带宽h太小 |
函数会呈锯齿状 |
带宽h太大 |
函数过于平滑 |
正则化参数太小 |
过拟合现象明显 |
正则化参数太大 |
结果趋于直线 |
所以要选择合适的带宽以及正则化参数
2.模型选择的含义
采用不同的输入训练样本,来决定机器学习算法中包含的各个参数值,叫做模型选择。
3.模型选择的一般流程
最重要的是第三步泛化误差,即对未知的测试样本求预测误差
4.交叉验证法求泛化误差
① 提出原因:可以通过交叉验证求得最小的泛化误差,从而确定最佳的模型参数;交叉验证法可以对泛化误差进行较为精确的评估,防止强过拟合
② 思路:把训练样本的一部分拿出来作为测试样本
③ 算法流程:
带有约束条件的最小二乘学习法结合交叉验证法,在实际应用中是非常有效的回归方法!
P33
通过运行代码学习
1.“对线性模型进行部分空间约束的最小二乘法学习,其中线性模型基函数是三角多项式”
公式中的约束矩阵P即代码中的PP,在这里是手动进行设置的,也可以通过后续ch13节中的pca基于数据进行设置。满足的条件是:
,其中第一行到第十一行这部分子矩阵上的对角线上值为1,其它都为0
普通最小二乘法学习结果
受约束的最小二乘法学习结果
与x-y训练数据做比较
结果显示,通过约束设置,使得过拟合得到了一定程度的减轻。
P33
补充知识来理解书上内容
Matlab 中 diag函数
X = diag(v):向量v在方阵X的主对角线上
例:
v=[1 2 3];
diag(v)
ans =
1 0 0
0 2 0
0 0 3
P36
通过运行代码学习
“对高斯核模型进行l2约束的最小二乘学习”
下面的k与K分别是训练集以及测试集中的基函数,这里因为用了高斯核,所以
无约束的最小二乘法中,参数解,所以有:
因此就得到了输出观测值:
在L2约束的最小二乘法中,参数解,所以
得到了L2约束后的输出观测值y
可视化结果:绿色是无约束的最小二乘法后输出的预测值y,红色是L2约束的最小二乘法输出的预测值y,蓝色圈是真实的训练数据的输出值y。
可见红色部分即L2参数约束后,有效防止了过拟合。
P36
补充知识来理解书上内容
Matlab 中repmat函数
Matlab 中eye函数
eye(n)会生成n*n的矩阵,且正对角线上都是1,其它都是0
P42
通过运行代码学习
“对高斯核模型的l2约束的最小二乘学习法进行交叉验证---得到最小的泛化误差---从而选择最佳的高斯核模型参数”
带宽h设为0.03、0.3、3三种可能;正则化参数lameda设为0.0001、0.1、100三种可能
把50个训练集平均分为m=5等份
下面这步之后,训练集还是被平分为5份,只是顺序全部随机化了
1.当h=0.03时
(1)对编号为2、3、4、5的40个作为训练集得到参数,再得到编号为1作测试集的y,再计算泛化误差
① Lameda=0.0001时计算误差
② Lameda=0.1时计算误差
③ Lameda=100时计算误差
(2)对编号为1、3、4、5的40个作为训练集得到参数,再得到编号为2作测试集的y,再计算泛化误差
④ Lameda=0.0001时计算误差
⑤ Lameda=0.1时计算误差
⑥ Lameda=100时计算误差
(3)对编号为1、2、4、5的40个作为训练集得到参数,再得到编号为3作测试集的y,再计算泛化误差
⑦ Lameda=0.0001时计算误差
⑧ Lameda=0.1时计算误差
⑨ Lameda=100时计算误差
(4)对编号为1、2、3、5的40个作为训练集得到参数,再得到编号为4作测试集的y,再计算泛化误差
⑩ Lameda=0.0001时计算误差
11 Lameda=0.1时计算误差
12 Lameda=100时计算误差
(5)对编号为1、2、3、4的40个作为训练集得到参数,再得到编号为5作测试集的y,再计算泛化误差
13 Lameda=0.0001时计算误差
14 Lameda=0.1时计算误差
15 Lameda=100时计算误差
2.当h=0.3时
(1)对编号为2、3、4、5的40个作为训练集得到参数,再得到编号为1作测试集的y,再计算泛化误差
16 Lameda=0.0001时计算误差
17 Lameda=0.1时计算误差
18 Lameda=100时计算误差
(2)对编号为1、3、4、5的40个作为训练集得到参数,再得到编号为2作测试集的y,再计算泛化误差
19 Lameda=0.0001时计算误差
20 Lameda=0.1时计算误差
21 Lameda=100时计算误差
(3)对编号为1、2、4、5的40个作为训练集得到参数,再得到编号为3作测试集的y,再计算泛化误差
22 Lameda=0.0001时计算误差
23 Lameda=0.1时计算误差
24 Lameda=100时计算误差
(4)对编号为1、2、3、5的40个作为训练集得到参数,再得到编号为4作测试集的y,再计算泛化误差
25 Lameda=0.0001时计算误差
26 Lameda=0.1时计算误差
27 Lameda=100时计算误差
(5)对编号为1、2、3、4的40个作为训练集得到参数,再得到编号为5作测试集的y,再计算泛化误差
28 Lameda=0.0001时计算误差
29 Lameda=0.1时计算误差
30 Lameda=100时计算误差
3.当h=3时
(1)对编号为2、3、4、5的40个作为训练集得到参数,再得到编号为1作测试集的y,再计算泛化误差
31 Lameda=0.0001时计算误差
32 Lameda=0.1时计算误差
33 Lameda=100时计算误差
(2)对编号为1、3、4、5的40个作为训练集得到参数,再得到编号为2作测试集的y,再计算泛化误差
34 Lameda=0.0001时计算误差
35 Lameda=0.1时计算误差
36 Lameda=100时计算误差
(3)对编号为1、2、4、5的40个作为训练集得到参数,再得到编号为3作测试集的y,再计算泛化误差
37 Lameda=0.0001时计算误差
38 Lameda=0.1时计算误差
39 Lameda=100时计算误差
(4)对编号为1、2、3、5的40个作为训练集得到参数,再得到编号为4作测试集的y,再计算泛化误差
40 Lameda=0.0001时计算误差
41 Lameda=0.1时计算误差
42 Lameda=100时计算误差
(5)对编号为1、2、3、4的40个作为训练集得到参数,再得到编号为5作测试集的y,再计算泛化误差
43 Lameda=0.0001时计算误差
44 Lameda=0.1时计算误差
45 Lameda=100时计算误差
所有循环经历后得到的误差:是一个3*3*5的矩阵
求5组训练集上的泛化误差均值,并选出其中最小误差值
得到对应的最佳参数h=0.3,lameda=0.1,计算最佳参数时的参数,以及真正测试集的输出结果,可视化拟合结果:
P42
补充知识来理解书上内容
Matlab 中floor函数
Matlab 中randperm函数
Matlab 中数值关系符号
Matlab 中mean函数
mean (A, 3) 是对矩阵A中第三维求均值
Matlab 中min函数
min(A,[],2)返回一个列向量,其第i个元素是A矩阵的第i行上的最大值
《图解机器学习-杉山将著》读书笔记---CH4的更多相关文章
- 《图解机器学习-杉山将著》读书笔记---CH1
CH1 什么是机器学习 重点提炼 机器学习的种类: 常分为:监督学习.无监督学习.强化学习等 监督学习是学生从老师那获得知识,老师提供对错指示 无监督学习是在没有老师的情况下,学生自习 强化学习是在没 ...
- 《图解机器学习-杉山将著》读书笔记---CH5
CH5 稀疏学习 重点提炼 提出稀疏学习的缘故: 虽然带有约束条件的最小二乘学习法结合交叉验证法,在实际应用中是非常有效的回归方法,但是,当参数特别多时,计算参数以及预测值需要大量时间.此时,我们要解 ...
- 《图解机器学习-杉山将著》读书笔记---CH3
CH3 最小二乘学习法 重点提炼 提出最小二乘学习法的缘故: 最小二乘学习法公式 对不同模型进行最小二乘法学习,得到最小二乘公式中的参数theta: 1.线性模型 代入3.1公式,对参数求偏导,偏 ...
- 《图解机器学习-杉山将著》读书笔记---CH2
CH2 学习模型 重点提炼 学习模型作用: 使特定函数与数据集相近似 学习模型类型: 1.线性模型 (1)最简单的线性模型,缺点:只能表现线性的输入输出函数,不能很好地解决实际问题 (2)基于参数的线 ...
- 机器学习介绍(introduction)-读书笔记-
一,什么是机器学习 第一个机器学习的定义来自于 Arthur Samuel.他定义机器学习为,在进行特定编程的情况下,给予计算机学习能力的领域.Samuel 的定义可以回溯到 50 年代,他编写了一个 ...
- LogisticRegression Algorithm——机器学习(西瓜书)读书笔记
import numpy as np from sklearn.datasets import load_breast_cancer import sklearn.linear_model from ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- 《C#图解教程》读书笔记之一:C#和.NET框架
本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.在.NET之前的编程世界 C#语言是在微软公司的.NET框架上开发程序而设计的,首先作者给大家纠正了一下C# ...
- 《C#图解教程》读书笔记之二:存储、类型和变量
本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.类型初窥:掀起你的盖头来 (1)C程序是一组函数和数据类型,C++程序是一组函数和类,而C#程序是一组类型声 ...
随机推荐
- oracle中 =: 和 := 分别是什么意思
oracle中 =: 和 := 分别是什么意思 =:应该相当于 a = :b 表明b是个绑定变量,需要执行时进行变量绑定:= 相当于一般编程语言中的 赋值 a := 1 即将 数字1赋值给变量 a
- springboot 实现 aop
pom.xml 导入 springboot aop 依赖 <dependency> <groupId>org.springframework.boot</groupId& ...
- java三大循环结构
用于处理需要重复执行的操作: 根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体: while:事先不需要知道循环执行多少次: do while:同上,只是至少要执行一次( ...
- HDU 1236
水题~~但我做了很久: 题意:是中国人都懂了 思路:结构体排序: 以后要多用用重定义的排序手段,!!!!!多用!!多用!!多用!! #include<iostream> #include& ...
- CF351E Jeff and Permutation
CF351E Jeff and Permutation 贪心好题 考虑每个对能否最小化贡献和 先不考虑绝对值相同情况 发现,对于a,b假设|a|<|b|,那么有无贡献只和b的正负有关!如果a在b ...
- python基础十之装饰器
1,装饰器的形成 编程原则:开放封闭原则. 开放:对扩展是开放的 封闭:对修改是封闭的 因为修改是封闭的,所以为了对函数进行功能的扩展,就使用装饰器! 2,装饰器的定义 # wrapper就是一个装饰 ...
- Vant-UI移动端时间选择框
使用Vant input框时有时需要调用时间选择,时间选择框要结合弹出层使用 <div class="van-cell van-field"> <span cla ...
- jQuery 工具类函数-使用$.extend()扩展Object对象
除使用$.extend扩展工具函数外,还可以扩展原有的Object对象,在扩展对象时,两个对象将进行合并,当存在相同属性名时,后者将覆盖前者,调用格式为: $. extend (obj1,obj2,… ...
- classpath*与classpath
classpath*:的出现是为了从多个jar文件中加载相同的文件. classpath:只能加载找到的第一个文件.
- 2019-1-25-win10-uwp-禁用-ScrollViewer-交互
title author date CreateTime categories win10 uwp 禁用 ScrollViewer 交互 lindexi 2019-01-25 21:45:37 +08 ...