机器学习(3-4)多变量线性回归

4.1 多维特征

举例房价模型

房价模型

增添了更多的特征。

此时模型中的参数是一个n+1维的向量。
公式可以简化:

4.2 多变量梯度下降

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

目标:找出使得代价函数最小的一系列参数。
多变量线性回归的批量梯度下降算法为:

开始:随机选择一系列的参数值。
计算所有的预测结果后,再给所有的参数一个新的值。如此循环直到收敛。

4.3 梯度下降法时间

特征缩放

对于多维特征问题,最好保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。

解决方法:尝试将所有特征的尺度都尽量缩放到-1到1之间。

尺度缩放

学习率

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

通常可以考虑尝试学习率:
\alpha=0.01,0.03,0.1,0.3,1,3,10

特征和多项式回归

线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据。
二次方模型:

三次方模型:

通常我们需要先观察数据然后再决定准备尝试怎样的模型。

另外,我们可以令:
x_2=x_2^2, x_3=x^3_3
从而将模型转化为线性回归模型。

采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

正规方程

对于某些线性回归问题,正规方程方法是更好的解决方案,如:

对于不可逆矩阵(通常因为特征之间不独立,如单位不同的两个同样特征,也有可能是特征数量大于训练集的数量),不能使用正规方程方法。

举个栗子:

梯度下降与正规方程的比较:

梯度下降 正规方程
需要选择学习率 不需要
需要多次迭代 一次运算得出
当特征数量n大时也能较好适用 需要计算(X^TX)^{-1}如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为O(n^3),通常来说当n小于10000时还是可以接受的
适用于各种类型的模型 只适用于线性模型,不适合逻辑回归模型等其他模型

只要特征变量数量小于1w,通常使用标准方程法而不使用梯度下降法。
对于这个特定的线性回归模型,标准方程法是一个比梯度下降法更快地替代算法。
但是对于实际上更复杂的学习算法,不得不仍然使用梯度下降法。

python实现 正规方程

import numpy as np
def normalEqn(X,y):
  theta = np.linalg.inv(X.T@X)@X.T@y
  return theta
#np.linalg.inv 求逆矩阵
#X.T@X等价于X.T.dot(X)
#先求X的转置再与X点积

正规方程推导过程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。