多元线性回归

之前的单变量线性回归只有一个输入变量,既自变量,但在实际运用中往往不止一个特征,如下图所示: 

  • n为特征的个数
  • x^{(i)}为第i个训练集的输入变量,既第i个全部特征
  • x_{j}^{(i)}为第i个训练集所有特征的第j个特征,比如x_{3}^{(2)}=2

  

在这个例子中,n=4,有4个特征, 分别是房屋面积,卧室的年限,房子的层数和房子的年限,x^{(2)}=(1416,3,2,40)^{T}为训练集的第2个输入变量,既第二个全部的特征,x_{3}^{(2)}=2为第二个输入变量中的第三个特征,为房子的层数是2层,故在这个例子中,假设函数(hypothesis function):

h_{\theta }(x)=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+\theta _{3}x_{3}+\theta _{4}x _{4}

以此类推,当训练集的输入变量有n个特征时,假设函数(hypothesis function):

h_{\theta }(x)=\theta _{0}+\theta _{1}x_{1}+\cdots +\theta _{n}x _{n}

x_{0}作为1x表示成向量为

x=\begin{pmatrix} 1\\ x_{1}\\ \vdots \\ x_{n} \end{pmatrix}=\begin{pmatrix} x_{0}\\ x_{1}\\ \vdots \\ x_{n} \end{pmatrix}

\theta表示为向量为

\theta =\begin{pmatrix} \theta _{0}\\ \theta _{1}\\ \vdots \\ \theta _{n} \end{pmatrix}

因此假设函数h_{\theta }(x)

h_{\theta }(x)=\theta ^{T}x

由此可知代价函数(cost function)为

J(\theta _{0},\theta _{1},\cdots ,\theta _{n})=\frac{1}{2m}\sum_{i=0}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}

采用多元梯度下降法和正规方程的方法来求得代价函数的最小值。

1、多元梯度下降法

在一元线性回归中,利用梯度下降法不停的更新\theta值,使

\theta _{j}:=\theta _{j}-\alpha \frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}}

同理,在多元线性回归中需不停的更新\theta

\theta _{j}:=\theta _{j}-\alpha \frac{\partial J(\theta _{0},\theta _{1},\cdots ,\theta _{n})}{\partial \theta _{j}}:= \theta _{j}-\alpha \cdot\frac{1}{m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})\cdot x_{j}^{(i)}

因为我们使x_{0}=1,所以该式对\theta _{0}也成立。

1.1、特征放缩

如果训练集中每个特征的值范围相差很大,就会导致代价函数(cost function)的呈下图这种情况,以两个特征为例,其中x_{1}代表房屋面积,范围是0~2000,x_{2}代表卧室的数量,范围是1~5

这时在该代价函数J(\overrightarrow{\theta })使用梯度下降法就会导致下降过程很缓慢,甚至还可能会出现来回波动。

在这种情况下,一种有效的方法就是进行特征放缩,这就可以让梯度下降法下降得更平缓且迅速,如下图所示

使所有特征的范围都处于0~1之间,既

x_{1}:=\frac{x_{1}}{2000}

x_{2}:= \frac{x_{2}}{5}

x_{j}\in [0,1]

一般来说,我们会利用特征放缩将x_{j}的范围控制在[-1,1],既 

-1\leqslant x_{j}\leqslant 1

但是与这个范围接近即可,[-3,3]或者[-\frac{1}{3},\frac{1}{3}]都是可行的,根据实际情况而定。

在特征放缩中,有时也会进行均值归一化的工作, 具体操作为有一个特征x_{j},在训练集中,该特征的平均值为\mu _{j},我们用x_{j}-\mu _{j}来替换x_{j},使特征x_{j}的平均值为0,最后再进行放缩,既表示为:

x_{j}:= \frac{x_{j}-\mu _{j}}{s_{j}}

其中s_{j}为训练集中特征x_{j}的范围,也可以是特征x_{j}的标准差,但在这里使用特征x_{j}的范围就足够了,最后特征x_{j}的范围为

-0.5\leq x_{j} \leq 0.5

当然只要比这个范围差的不多均可。

1.2、学习率\alpha

如果学习率选择不当,可能会导致代价函数不收敛,从而无法得到最小值,可以通过绘制迭代次数和代价函数的曲线来判断学习率是否选择正确和梯度下降是否正常工作,如下图所示,横坐标代表迭代次数,既梯度下降的次数,纵坐标表示代价函数J(\overrightarrow{\theta })

当曲线递减,且趋于平缓的时候,表示梯度下降正常工作,选取较平缓时J(\overrightarrow{\theta })作为最小值。

或者采用自动收敛测试,既在进行梯度下降的过程中,如果J(\overrightarrow{\theta })的值小于一个很小的值\varepsilon,则可以判断该代价函数J(\overrightarrow{\theta })已经收敛,但要选择合适的阀值\varepsilon是很困难的,使用J(\overrightarrow{\theta })关于迭代次数的曲线图会更加的直观。

以下情况都需要减小\alpha的值:

\alpha的值也不能太小,不然可能会导致J(\overrightarrow{\theta })收敛的很缓慢。

总结:

  • 如果学习率\alpha选择的太小,迭代次数就会增加,收敛的速度会变慢
  • 如果学习率\alpha选择的太大,代价函数J(\overrightarrow{\theta })可能不会在每次迭代都下降,甚至有可能不收敛反而越来越大。
  • 所以我们一般选择学习率\alpha会尝试

\cdots\ 0.001\ , \0.003\ ,\0.01\ , \0.03\ , \0.1\ , \0.3\ \cdots

2、正则方程法

对于某些线性回归问题,除了梯度下降法可以得到代价函数J(\overrightarrow{\theta })的最小值,我们也可以用正则方程的方法。如下图所示的训练集有4个训练样本,m=4,输入变量包含四个特征,n=4,并把x_{0}全部都设为1。

X是包含了训练集中所有输入变量的矩阵,y是目标变量的向量。

因为输入变量可能包含多个特征,故一般形式为为:

x^{(i)}=\begin{pmatrix} 1\\ x_{1}^{(i)}\\ \vdots \\ x_{n}^{(i)} \end{pmatrix}

所以矩阵X可以表示为 

X=\begin{pmatrix} 1 & x_{1}^{(1)} &\cdots & x_{n}^{(1)}\\ 1 & x_{1}^{(2)} & \cdots & x_{n}^{(2)}\\ 1 & \vdots & \ddots & \vdots \\ 1 & x_{1}^{(m)} & \cdots & x_{n}^{(m)} \end{pmatrix}=\begin{pmatrix} (x^{(1)})^{T}\\(x^{(2)})^{T} \\ \vdots \\(x^{(m)})^{T} \end{pmatrix}

 目标变量y可以表示为向量 

y=\begin{pmatrix} y^{(1)}\\ y^{(2)}\\ \vdots \\ y^{(m)} \end{pmatrix}

其中Xm\times (n+1)阶矩阵,ym维列向量,当\theta

\theta =(X^{T}X)^{-1}X^{T}y

 此时代价函数J(\overrightarrow{\theta })取得最小值。

但是X^{T}X​​​​​​​可能不可逆, 从线性代数的角度出发,可能是以下两种情况

  • 只有当\left | X^{T}X \right |=0的时候才不可逆,既X^{T}X每一列向量都线性相关,说明有一个或多个特征可以通过其他特征得出,包含了多余的特征。
  • 特征太多,当n>m的时候,这时可以删掉一些特征,或者采用正则化的方法。

不过即使X是不可逆的,有些线性库依然可以求出\theta值,比如Octave的pinv函数,结果仍是正确的

​​​​​​​

\\​​​​​​​\\ \\

正则方程法和梯度下降法的比较

梯度下降法法:

缺点:

  • 需要对学习率\alpha进行选择
  • 需要进行多次的迭代,可能会影响效率

优点:

  • 即使在特征很多的情况下,既n很大的情况下也能正常工作

正则方程法:

缺点:

  • 需要去计算(X^{T}X)^{-1}
  • X^{T}X​​​​​​​可能不可逆
  • 当有很多特征的情况下,效率会很低

优点:

  • 无需选择学习率\alpha和迭代

一般当n\leq 1000时,用正则方程法没有问题,当n> 10000时运用正则方程法就需要衡量一下梯度下降法是否效率更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值