[Machine Learning] 多变量线性回归(Linear Regression with Multiple Variable)-特征缩放-正规方程

  我们从上一篇博客中知道了关于单变量线性回归的相关问题,例如:什么是回归,什么是代价函数,什么是梯度下降法。

  本节我们讲一下多变量线性回归。依然拿房价来举例,现在我们对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(x0 ,x1 ,...,xn )。

 

  增添更多特征后,我们引入一系列新的注释:

  假设函数 h 表示为:

 

  这个公式中有 n+1个参数和 n 个变量,为了使得公式能够简化一些,引入x0 = 1,则公

 

式转化为:

  此时模型中的参数是一个 n+1维 的向量,任何一个训练实例也都是 n+1维的向量,特
征矩阵X的维度是m*(n+1)。因此公式可以简化为:

 

 

   和单变量线性回归类似,在多变量线性回归中,构建一个代价函数,也是所有建模误差的平方和,即:。其中

  使用梯度下降算法为:

  代码示例:

def computeCost(X, y, theta):
    inner = np.power(((X * theta.T) - y), 2)
    return np.sum(inner) / (2 * len(X))

 

  在多变量中有个问题,就是每个变量的取值范围不是一样的,比如 一套房子的房间数量大概是 0-5, 而尺寸大约为 0-200平方米,如果以上述的两个取值范围代入代价函数进行计算的话,整个计算权重就会偏移,所以我们把所有变量的取值范围归一到 [-1,1]之间,那么 把变量的取值范围归一的步骤就叫 特征缩放。对于有些数据可能需要平方或者是三次方的操作,我们也可以归一化,把三次方去掉,从而转化为线性回归。特征缩放 可以加快梯度下降。

 

  对于学习率,梯度下降算法的每次迭代受到学习率的影响,如果学习率𝑏过小,则达到收敛所需的迭代次数会非常高;如如果学习率𝑏过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

  通常可以考虑尝试这些学习率:

  a= 0.01 , 0.03 , 0.1 , 0.3 , 1 , 3 , 10

 

   对于某些线性回归问题,可以使用正规方程来解算。

  

 

  正规方程解出向量 :

 

  注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺为单位的尺寸和米为单位的尺寸两个特征,也有可能是特征数量大于训练集的数量),正规方程方法是不能用的。

 

 

 

正规方程的推算过程:

 

 

 

 

posted @ 2019-11-26 21:45  叶念西风  阅读(335)  评论(0编辑  收藏  举报
叶念西风 - 个人博客 & 电脑Run - 维修帮助软件教程安装