多维变量线性回归
代表第 个训练实例,是特征矩阵中的第行,是一个向量。
代表特征矩阵中第 行的第 个特征,也就是第 个训练实例的第
多变量线性回归函数
支持多变量的假设 表示为:
这个公式中有个参数和个变量,为了使得公式能够简化一些,引入,则公式转化为:
此时模型中的参数是一个维的向量,任何一个训练实例也都是维的向量,特征矩阵的维度是 。 因此公式可以简化为:
多变量梯度下降
多变量回归代价函数:
多变量线性回归的批量梯度下降算法为:
即:
求导后得到:
当时,
特征缩放
如果不进行特征缩放,则如图所示梯度下降算法需要多次迭代才可以收敛,比较复杂。
解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。如图:
缩放原则和方法
- 或者都是可以的
- 最简单的方法是令:,其中 是的平均值,是的值**
学习率
绘制迭代次数( 轴)和代价函数(
出现下面两种情况都是因为学习率
总结:
梯度下降算法的每次迭代受到学习率的影响,如果学习率 过小,则达到收敛所需的迭代次数会非常多;如果学习率
通常可以考虑尝试这些学习率:
正规方程
在数学中计算函数最小值通常先计算导数为0的点,即:
同样,也可以通过求偏导数来找出代价函数 最小的参数,即:
假设训练集特征矩阵为 (其中 )并且我们的训练集结果为向量 ,则利用正规方程解出向量
梯度下降与正规方程比较
梯度下降 | 正规方程 |
特征数量大于一百万则必定使用梯度下降 | 适用于特征数量较小的(通常适用于特征数量小于10000) |
多次迭代 | 一次算出 |
适用于各种模型 | 只适用于线性模型 |
正规方程的python实现:
import numpy as np
def normalEqn(X, y):
theta = np.linalg.inv(X.T@X)@X.T@y
return theta
正规方程中矩阵不可逆
- 当两个特征线性相关时,则
- 当训练样本数量小于等于特征数量时,则 不可逆