[ML笔记]多元线性回归

才发现这篇文档在草稿箱里呆了一个多星期了,上周因为公司的一个事情,第二周的Coursera课程没有完成~~|||

引言

引言被笔者吃了。

多元特征(Multiple Feature)

[ML笔记]多元线性回归

内容 含义
训练样本个数
n 特征个数,比如有θ1,θ2,θ3,θ4n=4
x(i) 第i个训练样本的所有输入特征,可以认为是一组特征向量
x(i)j 第i个训练样本第j个特征的值,即特征向量第j个值


多元假设函数表达式如下
hθ(x)=θ0+θ1x1+θ2x2+θ3x3+....+θnxn

使用矩阵来表示这个表达式可以表示为:
hθ(x)=[θ0θ1θ2...θn][x0x1x2...xn]=θTx
我们规定x(i)0=1(i1,......m),因此上式等式可以成立。

多元特征的梯度下降

上上一篇讲梯度下降的博文,推导了θ0θ1的计算方法,这里就不再赘述,不懂的朋友看文章,这里直接给出θj的计算方法:
repeat util convergence: {

  θj:=θjα1mm1((hθ(x(i))y(i))x(i)j)j:=0,..,n
   
}

因为x(i)0=1(i1,......m),所以这个算法和旧算法一致,
[ML笔记]多元线性回归

梯度下降方法:特征缩放

特征缩放原理

如果两个特征变量,在不同维度之间的取值范围相差较大的化,会使我们在使用梯度下降算法的时候,因维度差异造成代价函数收敛发生震荡,而导致收敛速度较慢。如下图所示,
[ML笔记]多元线性回归
为了解决这个问题,我们引入特征缩放,将特征值通过某些算法,将特征值锁到一个相似的取值范围内,以加快收敛速度,这个取值范围比如
1x(i)1  0.5x(i)0.5
都是可以的,那么最后收敛过程可能如上图右所示。

特征缩放算法

有两种技术可以帮助我们解决该问题:均值归一化和特征缩放。
特征缩放:直接将输入值除以输入变量范围的最大值(如最大值-最小值),来将输入取值范围缩小到1。
均值归一:将输入值减去取值平均值,然后除以输入变量范围差值,或者是除以输入变量标准差。公式如下,
xi:=xiμisi
其中,μi指输入变量x的平均值,si是指输入变量范围差值

梯度下降之α(Learning Rate)

上上篇博文中提到过有关Learning Rate需要注意的地方,这里再提出来一次

如果learning rate 太小了,梯度下降就会很慢;
如果learning rate太大,那么梯度下降可能掠过最小值,就可能出现无法收敛,甚至出现发散的现象。

关于Learning Rate的选择的正确做法:

实时观察代价函数变化,如果代价函数变小了,则learning rate取得合适,如果代价函数变大了,则应该减小learning rate的值。

我们通常可以通过代价函数的变化函数图观察我们的Learning Rate是否选择合适,例如,正常的轮廓图如下,
[ML笔记]多元线性回归

代价函数随着迭代次数累计,结果慢慢减小,后续逐渐趋于平稳,直至不再变化,则说明已经收敛完成。
但如果轮廓图表现如下,则说明我们的Learning Rate选择并不合适,需要减小Learning Rate的值。
[ML笔记]多元线性回归

特征值与多项式回归

我们可以通过一些小技巧,来改进我们假设函数和特征的形式,将多种特征合并成一个,比如,我们假设合并特征x1,x2为一个新特征x3

一般来说,样本的假设函数通常都不是一个单变量线性(直线)函数,大多数的假设函数实际是一条曲线,我们可通过假设样本数据的二次,三次或者是平方根函数(或任何其他形式)来改变我们假设函数的行为或者曲线。

比如,
常规线性假设函是:hθ(x)=θ0+θ1x1

二次假设函数我们可以设计成:hθ(x)=θ0+θ1x1+θ2x21
或者是hθ(x)=θ0+θ1x1+θ2x21+θ3x31

在三次假设函数这个案例中,我们可以创建两个新特征,x2x3,其中,
x2=x21,x3=x31,,那假设函数又转换为线性回归:
hθ(x)=θ0+θ1x1+θ2x2+θ3x3

或者我们在设特征幂次的时候,可<1,即开根,也是可以的,
比如hθ(x)=θ0+θ1x1+θ2x121

需要提醒的是,如果使用这种方式选择特征,特征缩放算法尤为重要。