有好几天没有写笔记了,因为慢慢感觉到自己学习的态度有些变化,所以赶紧停下来转变一下心态。我认为记笔记的初衷首先是为了理解知识,其次是为了便于复习,但写着写着突然有种赶进度的感觉,觉得自己越来越不注重自己知识的掌握,而是用今天看了几集来衡量自己是否努力。因此这一篇是对前面知识的理解与补充,写得较为简略,因为这些文章的初衷也不是为了写而写,而是便于自己学习查阅。
监督学习
回归
分类
学习过程
-
将训练集中的房屋价格喂给学习算法
-
学习算法工作,输出一个函数,用h表示
-
h表示hypothesis,代表的是学习算法的解决方案或者函数。
-
h根据输入的x值得到y值,因此h是x到的y的一个函数映射
-
可能的表达式:hθ(x)=θ0+θ1x,只有一个特征或者出入变量,称为单变量线性回归问题
无监督学习
聚类
代价函数
hθ(x)=θ0+θ1x
解释
-
m:训练样本的个数
-
hθ(x)=θ0+θ1x:假设函数
-
θ0和θ1:表示两个模型参数,即直线的斜率和y轴上的截距
目标
选择出可以使得建模误差的平方和能够最小的模型参数
梯度下降
梯度下降用于求函数最小值,
-
背后的思想:开始随机选取一个参数的组合(θ0,θ1,…,θn)计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。
-
持续这么做,直到一个局部最小值(local minimum),因为并没有尝试完所有的参数组合,所以不能确定得到的局部最小值是否是全局最小值(global minimum)
批量梯度下降
公式
理解:需要同步更新两个参数
具体描述:对θ赋值,使得J(θ)按照梯度下降最快的方向进行,一直迭代下去,最终得到局部最小值。
学习率:α是学习率它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
-
学习率太小:收敛速度慢需要很长的时间才会到达全局最低点
-
学习率太大:可能越过最低点,甚至可能无法收敛
梯度下降的线性回归
将梯度下降和代价函数相结合。通过梯度下降来最小化代价函数。
对线性回归问题运用批量梯度下降算法
关键在于求出代价函数的导数,即:
这种梯度下降的算法称之为批量梯度下降算法,主要特点:
-
在梯度下降的每一步中,我们都用到了所有的训练样本
-
在梯度下降中,在计算微分求导项时,我们需要进行求和运算,需要对所有m个训练样本求和
多维特征
对原模型增加了更多特征(类比于多元线性回归)
支持多变量的假设 h表示为:
为了简化公式,引入,公式转化为:
特征矩阵X 的维度是m∗(n+1),公式简化为:
变量:
n:代表的是特征的数量
x(i):代表第i个训练实例,是特征矩阵中的第i行,是一个向量vector
:表示的是第i个训练实例的第j个特征;i表示行,j表示列
多变量梯度下降
与单变量线性回归类似,在多变量线性回归中,构建一个代价函数,这个代价函数是所有建模误差的平方和,即:
其中:
算法过程:
特征缩放
面对多维度特征问题,我们需要保证这些特征具有相近的尺度,帮助梯度下降算法更快地收敛。
例子:以房价问题为例,假设仅用两个特征,房屋的尺寸和数量,以两个参数分别为横纵坐标,假设尺寸在0-2000平方英尺,数量在0-5之间。
解决办法:将所有的特征的尺度尽量缩放到-1到1之间,令:
其中un为平均值,sn为标准差
简单地说,就是代价函数的等高线图像很扁,会导致梯度下降算法需要很多次迭代才能收敛。
均值归一化
-
常用学习率:α=0.01,0.03,0.1,0.31,3,10α=0.01,0.03,0.1,0.31,3,10
-
如果采用多项式回归模型,在运行梯度下降法之前,特征缩放很有必要。
正规方程
梯度下降的缺点:需要多次迭代才能达到局部最优解,因此我们可以选用正规方程,一次运算就能得出最优解(本质:最小二乘法)
正规方程具有不可逆性
正规方程就是通过求解下面例子中的方程找出使得代价函数最小参数θ:
-
不可逆矩阵不能使用正规方程求解
-
梯度下降和正规方程的比较:
参数 θ求解过程