多元线性回归

       上一篇博客中我们讨论了一个特征变量的线性回归,还是用南京夫子庙房价的例子来说,我们
预测房价仅仅使用面积是不够的,比如房龄、朝向、几室几厅、厕所数量等都是房价的影响因素,
也就是可以作为标记房价的特征~~~

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归

       为了标记特征和样本,我们规定,n 表示特征数,x上标 i 表示第 i 个样本,而 x 上标 i 下标 j 则表示

第 i 个样本的第j个特征。

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_迭代_02


假设我们现在有四个特征,如上图,

现在我们的假设函数就可以表示成:

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_迭代_03

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_正规方程_04


并且这时候给第一个参数加一个为1的 X0,叫做偏置项,得到一个多特征的假设函数。

多变量的梯度下降:

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_05

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_特征放缩_06


在加了偏置项的基础上,对每一个 θ 求导并更新就会总结成一个公式~~~

特征放缩(重要):

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_07


在实际中,我们不同特征的尺度大小,取值范围可能可能相差很大~~~

        例如,我们有两个特征,分别是房子的面积以及房子的卧室数。房子的面积取值范围大约

是0~300,而卧室数的取值范围在0~5。这样的话,如果我们把它们关于代价函数的等高线图绘

制出来的话,就是上图左侧的狭长同心椭圆。

        这时候如上图两个变量尺度不一样的话就康托图就是一个狭长的椭圆在逼近收敛的时候就会

产生震荡,因为横轴方向的参数只要略微变化等高线图中显示的损失函数就会剧烈变化,从而影响

收敛准确。如果两个变量尺度差不多就会接近同心圆,收敛的方向就会比较线性~~~

        特征放缩也能加快收敛的速度,使尽量少的迭代次数收敛到最小值点。

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_机器学习_08

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_09


目的:我们特征放缩的目标是把所有的特征放到同一个数量级下面

方法:均值标准化(重要)
        
我们通常可以选择使用特征值减去它的均值,然后再除以它们的最大值。

学习率 α :

前面我们讨论了如何特征缩放,我们梯度下降还需要一个参数, 步长 α ~~~

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_正规方程_10

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_11


右图中,我们横轴表示迭代的次数,纵轴表示代价函数的值,我们可以看出正常情况下,随着迭代的

增加,我们的损失函数在不断地减小,说明我们的 α 是正常工作的。后面下降的越来越慢~~~

        越往后,代价函数的值减小的越少。因为越接近最小值点,梯度就越小,也就是梯度下降更新规则中

的微分项越小,这就使得 θ 更新的越小,进而使得整个代价函数 J(θ) 的变化就越小。

        梯度下降算法是数值型的迭代算法,没办法确切地收敛到实际的最小值点,因此我们需要有个限制条件

避免无限地迭代下去。所以,我们通过观察连续两次迭代间,代价函数变化情况来判断是否已经收敛。比如

如果两次迭代间,代价函数 J(θ) 的变化幅度小于某个很小的值的时候,我们就认为梯度下降已经收敛了。不

过这个很小的值可以根据应用选取,比如可以选择10^-3之类的。

        如果不是有效的梯度下降框架迭代次数和J(θ) 的图会是其他类型的:

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_正规方程_12

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_机器学习_13


如果像上图第一个随着迭代增加代价函数也增加,就说明代价函数发散了,这种情况是步长 α 太大了,导致

跨过了最小值点,以前上一个博客我们讨论过,这时候我们就需要减小步长 α 。

        要自己不断尝试,然后才能选出最好的学习率 α 。

特征和多项式回归:

        在了解了线性回归的基础上,如果有多个特征,那么回归图形可能就不是直线,可能是一个曲线,也可能

是超平面。这时候我们的假设函数就是一个非线性函数。

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_正规方程_14


以上图为例,宽和高的乘积是面积,面积可以表示一个特征,人们更关心的是面积,这时候我们就可以对特征进行

个数上的压缩,上面宽乘以高的式子可以看做特征的多项式。用特征的多项式可以生成更多的新特征。

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_15

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_迭代_16


如果只有一个特征我们可以用特征的平方,三次方等构造新的特征项,每增加一个特征模型就越复杂,对数据的拟合

程度越高。正规方程:

        

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_机器学习_17


梯度下降是迭代的思想,正规方程用矩阵解析也能找到合适的 θ 。

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_机器学习_18

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_迭代_19

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_20

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_正规方程_21


python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_22

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_特征放缩_23

解释正规方程:

1、假设函数应该是y = X*theta 

2、theta = y/X。或者theta = X^-1 * y

3、如果不是方阵,线性代数的基本知识,压根无法求逆

4、变换,得到

python进行回归方程显著性检验的结果分析 python多元线性回归显著性_多元线性回归_24

在这一篇博客中,最重要的是特征的放缩~~~希望大家能够有不同的理解。