多变量线性回归
模型的特征为(x1,x2,...,xn)
符号说明
n表示特征的数量
x(i)代表第i个实例,即特征矩阵中第i行
因此多变量的假设h为:
hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn
其中x0=1
此时特征矩阵$X$维度是m∗(n+1),上述公式简化为:
hθ(x)=θTX
多变量梯度下降
在多变量线性回归中,我们也构建一个代价函数,则这个代价函数是所有建模误差的平方和,即:
J(θ0,θ1...θn)=2m1i=1∑m(hθ(x(i))−y(i))2
针对多变量梯度下降与单变量机理一样,挨个对每个θ求导
计算代价函数
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
其中:hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn
引入x0=1,得到通用的公式如下:
θj:=θj−αm1i=1∑m((hθ(x(i))−y(i))⋅xj(i))
特征缩放
最简单的方法:
xn=snxn−un
原始每个值减均值除标准差
学习率
梯度下降算法的每次迭代受到学习率的影响,如果学习率a过小,则达到收敛所需的迭代次数会非常高;如果学习率a过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
通常可以考虑尝试些学习率:
α=0.01,0.03,0.1,0.3,1,3,10
分别扩大三倍
正规方程
正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:
∂θj∂J(θj)=0
假设我们的训练集特征矩阵为 X(包含了 x0=1)并且我们的训练集结果为向量 y,则利用正规方程解出向量
θ=(XTX)−1XTy
上标T代表矩阵转置,上标-1 代表矩阵的逆。
设矩阵A=XTX,则:(XTX)−1=A−1
梯度下降与正规方程的比较:
梯度下降 |
正规方程 |
需要选择学习率α
|
不需要 |
需要多次迭代 |
一次运算得出 |
当特征数量n大时也能较好适用 |
需要计算(XTX)−1 如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为O(n3),通常来说当n小于10000 时还是可以接受的 |
适用于各种类型的模型 |
只适用于线性模型,不适合逻辑回归模型等其他模型 |
总结一下,只要特征变量的数目并不大,标准方程是一个很好的计算参数$\theta $的替代方法。具体地说,只要特征变量数量小于一万,我通常使用标准方程法,而不使用梯度下降法。
正规方程不可逆性及公式推导
θ=(XTX)−1XTy
如果(XTX)不存在逆矩阵,及它是一个奇异矩阵,那么我们要用到伪逆
导致不可逆的原因:
在你想用大量的特征值,尝试实践你的学习算法的时候,可能会导致矩阵X′X的结果是不可逆的。 具体地说,在m小于或等于n的时候,例如,有m等于10个的训练样本也有n等于100的特征数量。要找到适合的(n+1) 维参数矢量θ,这将会变成一个101维的矢量,尝试从10个训练样本中找到满足101个参数的值,这工作可能会让你花上一阵子时间,但这并不总是一个好主意。因为,正如我们所看到你只有10个样本,以适应这100或101个参数,数据还是有些少
推导过程:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
其中:hθ(x)=θTX=θ0x0+θ1x1+θ2x2+...+θnxn
X维度是m∗n
θ是n∗1
y是m∗1
将向量形式转为矩阵形式如下:
J(θ)=21(Xθ−y)T(Xθ−y)=21(θTXT−yT)(Xθ−y)=21(θTXTXθ−θTXTy−yTXθ−yTyy)
接下来对J(θ)偏导,需要用到以下几个矩阵的求导法则:
dBdAB=ATdXdXTAX=2AXdXdXTA=A
有如下:
dθd(θTXTXθ)=2XTXθdθd(θTXTy)=XTy
因此
∂θ∂J(θ)=21(2XTXθ−XTy−(yTX)T−0)=21(2XTXθ−XTy−XTy−0)=XTXθ−XTy
令
∂θ∂J(θ)=0
则有θ=(XTX)−1XTy