[哔哩哔哩视频地址](http://www.bilibili.com/video/av9559261/)
更有效的线性回归形式
如图所示为房屋特征和房屋售价的数据集,可以看到房屋有很多的特征量,例如:大型,户型,等,用x1到xn表示,其中每一个样本数据都可以看作为矩阵中的某一行,对于这种多特征量的情况,假设函数就不能用以下这个表示方式了:
hnθ=θ0+θ1x
当有很多特征量的时候,按照简单的方式这样写
hnθ=θ0x0+θ1x1+θ2x2+......+θnxn
化简过程
x转化为一个一维的向量,由于是从x0开始的,所以为(n+1)x1的一维向量
θ同理。
最终化简结果为
hnθ = θTx
θT 表示一个矩阵的倒置,也就是沿向下的对角线翻转180度,例如矩阵A
1 2
3 4
那么AT等于
1 3
2 4
有了hnθ = θTx,同样可以倒推出
hnθ=θ0x0+θ1x1+θ2x2+......+θnxn
梯度下降实用技巧
特征缩放
特征缩放可以理解为平时我们常说的归一化,使得变量x的范围落在区间[-1,1]里,一方面对多个范围差别很大的特征量可以更直观的表示,另一方面当使用梯度下降算法时可以更快的收敛,即迭代次数少。
但要注意的是,特征缩放的使用是有范围的,当-3<x<3 or -1/3<x<1/3属于可接受的范围,如果-100<x<100 or -0.0001<x<0.0001,特征缩放带来的误差较大,不可使用。
特殊地,平均标准化Mean normalization就是基于特征缩放实现的,使得期望E为0;
原理:X' = (X-μ)/(Max-Min),μ为均值
学习率
α决定每次下降的步长,α的选取决定了gradient decent algorithm是否正常工作(α选择不当J会发散,或者J收敛速度太慢,需要迭代许多次)
理论上讲,只要α充分的小,相应的代价函数J在每次迭代都会减小直至收敛;算法实现上,如果α太小,J每次下降的太少,需要迭代的次数过多,时间复杂度太高又不可行;综上,α的正确选取对于梯度下降算法能否正常工作至关重要,可以给α从0.001,0.01,0.1,1依次幅值,找到对应的区间再去试探合适的α。
多项式回归
如果一个方程,自变量的指数大于1,那么所有拟合这个方程的点就符合多项式回归。
多项式回归有个很重要的因素就是指数(degree)。如果我们发现数据的分布大致是一条曲线,那么很可能符合多项式回归,但是我们不知道degree是多少。所以我们只能一个个去试,直到找到最拟合分布的degree。
正规方程
我们一直在使用的线性回归的算法是梯度下降法,为了最小化代价函数J,我们使用的迭代算法需要经过很多步才能得到全局最小值。而正规方程可以一步到位。所有最小化代价的函数,就是找出代价函数在那个点的时候导数为0,也就是斜率为0。
假设有一个代价函数:J(θ)=aθ2+bθ+c
找出能使代价函数最小化的θ,也就是求出J关于θ的导数,当该导数为0的时候,θ最小。
当θ不是一个实数,而是一个n+1维的向量。并且代价函数J是这个向量的函数。那么如何最小化代价函数J? 实际上,微积分告诉我们一种方法,对每个参数θ求J的偏导数,然后把它们全部置0,如果这样做,并且求出θ0到θn的值,这就得到了最小化函数J的θ值。经过对J 函数求导最终得出以下公式(求导过程还在研究中):
推导过程(非数学意义推导)摘自这里
假设我们有m个样本。特征向量的维度为n。因此,可知样本为{(x(1),y(1)), (x(2),y(2)),... ..., (x(m),y(m))},其中对于每一个样本中的x(i),都有x(i)={x1(i), xn(i),... ...,xn(i)}。令 H(θ)=θ0 + θ1x1 +θ2x2 +... + θnxn,则有
导数可逆性
以下原因导致矩阵不可逆
- 特征之间存在某种约束。例如特征x2是特征x1的3倍
- 特征数量大于样本数量。例如有10个样本,每个样本有100个特征,这个工作可能会需要很久。
- 矩阵不可逆向运,也就是行列式为0