StanFord ML 笔记 第八部分

2024-05-28 20:08
文章标签 笔记 部分 ml 第八 stanford

本文主要是介绍StanFord ML 笔记 第八部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


第八部分内容:

    1.正则化Regularization

  2.在线学习(Online Learning)

  3.ML 经验


1.正则化Regularization

  1.1通俗解释

    引用知乎作者:刑无刀

    解释之前,先说明这样做的目的:如果一个模型我们只打算对现有数据用一次就不再用了,那么正则化没必要了,因为我们没打算在将来他还有用,正则化的目的是为了让模型的生命更长久,把它扔到现实的数据海洋中活得好,活得久。

    俗气的解释1:      让模型参数不要在优化的方向上纵欲过度。《红楼梦》里,贾瑞喜欢王熙凤得了相思病,病榻中得到一枚风月宝鉴,可以进入和心目中的女神XXOO,它脑子里的模型目标函数就是“最大化的爽”,所以他就反复去拟合这个目标,多次XXOO,于是人挂掉了,如果给他加一个正则化,让它爽,又要控制爽的频率,那么他可以爽得更久。

    俗气的解释2:      假如马化腾心中的商业模型优化目标是让腾讯发展得更好,他的模型只有一个特征,就是张小龙,根据他的目标以及已有样本,它应该给张小龙赋予更大的权重,就可以一直让模型的表现朝这个目标前进,但是,突然有一天马化腾意识到:这样下去不行啊,他的权重大得没边的话,根本不可持续啊,他要是走了,他要是取代我了。于是马化腾就需要在优化这个目标的时候给这个唯一的特征加一个正则化参数,让权重不要过大,从而使得整个模型能够既朝着设定目标走,又不至于无法持续。

    俗气的解释3:      我们这群技术男在公司里,如果模型目标是提高自身能力并最终能够在公司有一席之地,理想的优化方法是提高各种牛逼算法,各种高大上的计算平台的熟悉程度,尽量少开无谓的会议,少接领导扯淡的需求,但是如果只是这些的话,很可能在这个公司呆不太久,因为太关注自己的特征权重了,那么如果这个公司其实非常适合提升自己的能力,那么要能在这里呆久点,就得适当限制自己这些特征的权重绝对值,不要那么绝对坚持用到牛逼算法,偶尔也处理处理领导的扯淡需求,平衡一下,你的模型才能泛化得更广。

  1.2用协方差解释

    引用知乎作者:维吉特伯

    其中

\bm{y}
\bm{\beta} 是列向量,
\bm{X} 是矩阵,矩阵的每一行对应一个输入实例。把平方误差和(residual sum of squares, RSS)作为损失函数:

RSS(\bm{\beta}) = \sum_{i=1}^{N}(y_i-\bm{x_i^T}\bm{\beta})^2   

    假设要拟合一个线性的模型

\bm{y}=\bm{X}\bm{\beta}

    写成矩阵形式就是

RSS(\bm{\beta}) = \bm{(y-X\beta)^T(y-X\beta)}

    把

RSS(\bm{\beta})
\bm{\beta} 求偏导,并令偏导为0,

\frac{\partial{RSS(\bm{\beta})}}{\partial{\bm{\beta}}}=\bm{X^T(y-X\beta)}=0

    可以得出最小化损失

RSS(\bm{\beta})的解:

\bm{\beta}=\bm{(X^TX)^{-1}y}

    然后再对损失添加正则化项(为了简化推导就用岭回归吧,添加

\bm{\beta} 的平方项),下面我就直接写成向量形式啦:

RSS(\bm{\beta}, \lambda)=\bm{(y-X\beta)^T(y-X\beta)} + \lambda\bm{\beta^T\beta}

    同样,再对

\bm{\beta} 求偏导,并令偏导为0

\frac{\partial{RSS(\bm{\beta}, \lambda)}}{\partial{\bm{\beta}}}=\bm{-X^T(y-X\beta)+\lambda\beta}=0

    得出解为:

\bm{\beta^{bridge}} = (\bm{X^TX} + \lambda\bm{I})^{-1}\bm{X^Ty}

    然后,对

\bm{X} 进行奇异值分解(SVD):

\bm{X=UDV^T}

    再拿训练得到的

\bm{\beta^{bridge}} 再拟合一下训练数据,再套用一下奇异值分解:

\begin{split}\bm{X}\bm{\beta^{bridge}}& = \bm{X}(\bm{X^TX} + \lambda\bm{I})^{-1}\bm{X^Ty}\\ & = \bm{UD}(\bm{D^2}+\lambda\bm{I})^{-1}\bm{DU^Ty}\\ & = \sum_{j=1}^{p}\bm{u_j}\frac{d^2_j}{d^2_j+\lambda}\bm{u_j^Ty}\end{split}

    对比一下没有正则化项的情况:

\begin{split}\bm{X}\bm{\beta}& = \bm{X}(\bm{X^TX})^{-1}\bm{X^Ty}\\ & = \bm{UU^Ty}\\ & = \sum_{j=1}^{p}\bm{u_j}\bm{u_j^Ty}\end{split}

    发现什么了吗,正则化之后,

\bm{X\beta^{bridge}}
\bm{X\beta} 之间相差了一个系数
\frac{d_j^2}{d_j^2+\lambda}

    因为

\lambda \geq 0 ,所以
\frac{d_j^2}{d_j^2+\lambda} \leq 1

    这意味着加入正则化项的岭回归拟合的结果被缩小了

\frac{d_j^2}{d_j^2+\lambda} 倍。那么,这个
d_j^2 的意义是什么呢?

    再对输入作进一步假设来简化问题。如果输入

\bm{X} 的均值为0,也就是对
\bm{X} 进行预处理使得:

\bm{X = X^{raw} - \bar{X}}

    那么,

\bm{X} 的协方差就可以通过
 \bm{S = X^TX/N} 计算,并且根据之前的奇异值分解
\bm{X=UDV^T} ,有

\bm{X^TX=VD^2V^T}

    这实际上也可以看作是

\bm{X^TX} 的特征分解。

    所以

d_j^2 就是
\bm{X^TX} 的第
j 个特征值。

      因此系数

\frac{d_j^2}{d_j^2+\lambda} 可以看作根据协方差矩阵的特征值对不同成分进行收缩(个人理解为进行了一次隐式的特征选择),并且对特征值小的成分收缩更为剧烈(可以理解为通过把那些方差小的成分舍弃掉了,有点类似主成分分析,把那些重要的成分留下,次要的去除掉)。除了
d_j^2 之外,
\lambda 也会影响收缩的程度。
\lambda 值越大,收缩的越剧烈(需要更大的
d_j^2 来补偿
\lambda ),最终模型复杂度越低 。附上来自《The Elements of Statistical Learning》的图。

    这样通过正则化项,就去减小了那些没用(次要)的特征带来的影响,防止过拟合。

  1.3Ng视频的讲解

    http://blog.csdn.net/stdcoutzyx/article/details/18500441

  1.4个人总结

    A.加入先验概率,正如我们都知道骰子每个概率是1/6,但是实验10次都是正面,我们能说正面概率为百分之百吗?加入前面的先验1/6效果就好多了。

    B.在似然函数后面加上了aXXT,后面的XXT就是协方差,前面的a是比例,协方差的意思就是太离谱的数据权重就小,a的作用和高斯的均值一样。

2.在线学习

   批量学习:一次性给样本

   在线学习:多次性给样本

参考:https://www.zhihu.com/question/20700829(正则化的话题,很多知乎大神的回答)

这篇关于StanFord ML 笔记 第八部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1011564

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个