《图解机器学习-杉山将著》读书笔记---CH5

CH5 稀疏学习

重点提炼

提出稀疏学习的缘故:

虽然带有约束条件的最小二乘学习法结合交叉验证法,在实际应用中是非常有效的回归方法,但是,当参数特别多时,计算参数以及预测值需要大量时间。此时,我们要解决这个问题。

稀疏学习思路:

把大部分参数都设置为0,这样就能快速计算参数以及预测值。

L1约束的最小二乘学习法:

公式

求解得到参数theta

代码实现的流程图

通过稀疏学习进行特征选择

1.“一个特征一个特征地依次减少的向后删除法”以及“一个一个特征地依次增加的向前选择法”提出的原因:在d各特征值中做特征选择,就需要事先对2^d次维组合的优劣进行评估,计算时间是以输入维数d为基数指数级增长的。所以会提出前向选择法以及后向删除法。

2.通过稀疏学习进行特征选择的优势:比起“一个特征一个特征地依次减少的向后删除法”以及“一个一个特征地依次增加的向前选择法”,l1约束的稀疏学习做特征选择,可以在一定程度上考虑到各个特征之间的相互联系,在实际应用中,往往能得到更好的特征组合。

3.举例:

lp约束的最小二乘学习法

1.lp约束的最小二乘学习法中的约束条件:是更为普遍的条件,是p大于等于0的lp范数约束方法

2.公式:

3.最优解:当p=1时,是稀疏解存在的唯一凸形

l1+l2约束的最小二乘学习法/弹性网回归学习法

1.提出的原因:l1约束的最小二乘学习法的局限性:

① 当参数b>训练样本数n时,l1约束最小二乘学习法的非0参数个数最多为n

② 当参数b<训练样本数n时,l1约束最小二乘学习法的通用性能比l2约束的最小二乘学习法稍差

2.解决方法:利用l1+l2范数的凸结合来进行约束

P49

通过运行代码学习

初始化50个参数

当t-t0的绝对值<0.001时这个循环就结束

结果:与p42中l2约束的最小二乘学习法结合交叉验证方法得到的拟合曲线结果没有太大差别。可是在这过程中,l1约束的最小二乘学习法不用像p42中的l2约束+交叉验证要跑完所有的循环,而只需要设定一个收敛值,小于这个收敛值就可以跳出循环了。

为什么书中说参数大多是0?现在还不理解,因为代码变量追踪,t中并没有很多参数<0.001即等于0

P49

补充知识来理解书上内容

Matlab 中pinv函数

Matlab 中diag函数

时间: 2024-10-11 14:00:50

《图解机器学习-杉山将著》读书笔记---CH5的相关文章

【机器学习】周志华 读书笔记 第三章 线性模型

1. 基本形式 f(?) = ω1 X1 + ω2 X2 十...+ωdXd + b , 2.线性回归 均方误差有非常好的几何意义--它对应了常用的欧几里得距离或简称"欧 氏距离" (Euclidean distance). 基于均方误差最小化来进行模型求解的方法称为"最小二乘法" (least squ町e method). 在线性回归中,最小A乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小. 3.对数几率回归 若将y视为样本x 作为正例的可能性,则

《C#图解教程》读书笔记之三:方法

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.方法那些事儿 (1)方法的结构:方法头-指定方法的特征,方法体-可执行代码的语句序列: (2)方法的调用:参数.值参数.引用参数.输出参数.参数数组: ①参数: 形参-本地变量,声明在参数列表中:形参的值在代码开始之前被初始化: 实参-实参的值用于初始化形参: ②值参数: 为形参在栈上分配内存,将实参的值复制到形参: ③引用参数: 不为形参在栈上分配内存,形参的参数名作为实参变量的别名指向同一位置,必须使用ref关

《C#图解教程》读书笔记之五:委托和事件

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执行它所"持有"的方法.如果从C++的角度来理解委托,可以将其理解为一个类型安全的.面向对象的函数指针. (2)如何使用委托? ①声明委托类型(delegate关键字) ②使用该委托类型声明一个委托变量 ③为委托类型增加方法 ④调用委托执行方法 (3)委托的恒定性: 组合委托.为委托+=增加

《C#图解教程》读书笔记之四:类和继承

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.万物之宗:Object (1)除了特殊的Object类,其他所有类都是派生类,即使他们没有显示基类定义. (2)一个派生类只能有一个基类,叫做单继承. 二.基类那点事儿 (1)如何在派生类中访问基类成员?使用base关键字,如base.Field1: (2)如何屏蔽基类中某个方法或成员?在派生类定义的成员定义前使用new关键字: (3)如何使用基类的引用?这里可以借鉴里氏替换法则,创建指向派生类的基类对象. 三.小

《C#图解教程》读书笔记之六:接口和转换

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.接口那点事儿 (1)什么是接口? 一组函数成员而未实现的引用类型.只有类和结构能实现接口. (2)从IComparable接口看接口实例: 假设有如下一段代码,它使用Array类的一个静态方法Sort对一个未排序的int类型数组进行排序,并输出排序后的结果. using System; class Program { static void Main() { var myInt = new[] { 20, 4, 1

《C#图解教程》读书笔记之一:C#和.NET框架

一.在.NET之前的编程世界 C#语言是在微软公司的.NET框架上开发程序而设计的,首先作者给大家纠正了一下C#的正确发音:See Sharp(而不是很多人说的什么C井之类的,每次听到C井我都只能呵呵一笑). 1.1 20世纪90年代末的Windows编程 这时大多数程序员使用VB.C或C++,一些C/C++程序员使用纯Win32API,但纯Win32API不是面向对象的,而且使用它的工作量很大,比MFC还大.大多数程序员在使用MFC(Microsoft Foundation Class,微软基

《图解tcp/ip》读书笔记(二)

<图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主要描述了以太网.无线通信.ppp.公共网络以及其他的一些数据链路一些细节性的技术. 由于之前已经学习过相关计算机网络的课程,因此,就不再详细的记录整个阅读内容了,很多让我突破以前思维定式的一些知识,我挑一些列在下面. 其实这些知识花几分钟.几个小时,就可以得到,或者查阅互联网会得到比这本书更新的技术,但是,有

《C#图解教程》读书笔记之二:存储、类型和变量

一.类型初窥:掀起你的盖头来 (1)C程序是一组函数和数据类型,C++程序是一组函数和类,而C#程序是一组类型声明: (2)类型是一种模板:模板本身不是数据结构,但它详细说明了由该模板构造的对象的特征: (3)C#提供了16种预定义类型:13种简单类型(数值类型:int,float,double,decimal等:非数值类型:bool,char),3种非简单类型(object,string,dynamic): 所有的预定义类型都直接映射到底层的.NET类型.C#的类型名称其实就是.NET类型的别

《机器学习实战》读书笔记2:K-近邻(kNN)算法

声明:文章是读书笔记,所以必然有大部分内容出自<机器学习实战>.外加个人的理解,另外修改了部分代码,并添加了注释 1.什么是K-近邻算法? 简单地说,k-近邻算法采用测量不同特征值之间距离的方法进行分类.不恰当但是形象地可以表述为近朱者赤,近墨者黑.它有如下特点: 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 适用数据范围:数值型和标称型 2.K-近邻算法的工作原理: 存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知道样本集中