在上一篇博客中我们通过解析解法算出来了
但是上面公式中的对称阵是N维乘以N维的,复杂度为O(n*n*n),虽然很精准但是很慢。为此我们引入梯度下降法
我们首先大致画出MSE的图像,MSE是一个开口向下,有最小值的凸函数,它的图像如下图。
其中θ为模型w0~wn,纵轴为MSE的值。
由图可知,该图像上点的梯度会随着位置变化,当在θ ̂(MSE最小)时,梯度为零。
由图可知,在图中我们初始了一个θ,将这个θ代入梯度下降法公式,我们便可以求出下一个时刻的θ
其中梯度下降法的公式为:
其中:α为计算机的学习率(不变,由人工设定),g为(θ=θt)时的梯度
为此,要让我们计算机用梯度下降法求最小MSE只需执行以下4个步骤即可;
1:求初始化θ,设定学习率α
2:求梯度g
3:代入公式,判断g是否等于0
4:当g等于0时,停止
接下来我们对MSE函数求导,找到g的关系。
为此,在日常的算法中,我们结合两种方法,一般我们采用小批量的随机梯度下降法
接下来,我们用代码分别实现批量梯度下降法和随机梯度下降法。
批量梯度下降法:
import numpy as np
import matplotlib.pyplot as plt
#模拟数据
#模拟100行1列X的数据
X = 2* np.random.rand(