使用梯度下降求解最小二乘

使用梯度下降求解最小二乘


简介

前一篇的总结中,从矩阵的视角回顾了最小二乘,最终还得到了如下求解最小二乘的解的方程:
(1) x = ( W T W ) − 1 W T y x = (W^{T}W)^{-1}W^{T}y \tag{1} x=(WTW)1WTy(1)
这个方程本身没有什么问题,只不过也有其局限性,当数据量很大的时候, W W W也会很大,求解 W T W W^{T}W WTW本质上是一个不太现实的事情。如果只有1000个样本,那么最终需要求解 1000 × 1000 1000 \times 1000 1000×1000的矩阵的逆,如果样本有1000个,那么就得求解 10000 × 10000 10000 \times 10000 10000×10000的矩阵的逆了,对于方阵来说,求解逆矩阵本身就是一个开销比较大的事情,而且,随着矩阵的增大,逆矩阵究竟是否存在都是一个不好说的事情,假如说逆不存在,那么显然这个方法是行不通的了。在前边对于实对称矩阵的总结中说道,实对称矩阵总是可以找到 n n n个标准正交的特征向量,但是也没有说就是一定是满秩的,所以逆矩阵不存在还是很有可能的,而且前边的等式本来就是 (2) W T W x = W T y W^{T}Wx = W^{T}y \tag{2} WTWx=WTy(2)而已,所以如果逆矩阵确实不存在,那么也就只能使用等式2来求解了。虽然等式2不是见得有好的实现方法。
在数值计算领域,函数拟合,数据拟合任务,一般都会采用梯度下降算法进行求解,而如果数据量过大,不适合全量梯度下降,也可以使用随机梯度下降算法进行求解。可以说,梯度下降,真是一个万金油方法了。这篇总结文章中,会给出梯度下降求解最小二乘的一个Python实现,同时,给出梯度下降的简易实现和说明。

梯度下降算法步骤说明

在进一步之前,我们先换一种表达方式,前边等式的表达方式换成下边的形式:
(3) y = X w y = Xw \tag{3} y=Xw(3)这个时候, X X X矩阵是输入样本矩阵,每一个行向量表示样本,假设每一个样本有 n n n个纬度,而且共有 m m m个样本,那么 X X X就是一个 m × n m \times n m×n的矩阵了,而需要学习的 w w w权重向量则是一个具有 n n n个代估参数的列向量,可以定义 w i w_{i} wi w w w的第 i i i个参数,而 y y y是结果,纬度是 m m m
梯度下降算法需要定义损失函数,对于最小二乘而言,其实损失函数就是:
(4) L ( w ) = 1 m ∑ i = 1 m ( y i ′ − y ) 2 L(w) = \frac{1}{m}\sum_{i=1}^{m}(y'_{i} - y)^{2} \tag{4} L(w

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值