1 公式推导
我们先给定一个线性回归的方程
损失函数:要求得最优变量就要使得计算值与实际值的偏差的平方最小
随机梯度下降算法对于系数需要通过不断的求偏导求解出当前位置下最优化的数据,公式中的θ会向着梯度下降最快的方向减少,从而推断出θ的最优解。对损失值求导:
给定一个下降系数(也可以叫学习率、下降的幅度)
2 实例
本文中的实例的:求解的最优解
上一部分参见https://blog.csdn.net/selinaqqqq/article/details/89362553
#上一篇文章中的实例进行梯度下降
def Logistic_Regression(x, y, lr, num_iter):
intercept = np.ones((x.shape[0], 1)) # 初始化截距为 1
x = np.concatenate((intercept, x), axis=1)
w = np.zeros(x.shape[1]) # 初始化参数为 1
l_list = [] # 保存损失函数值
for i in range(num_iter): # 梯度下降迭代
z = np.dot(x, w) # 线性函数
h = sigmoid(z) # sigmoid 函数
g = gradient(x, h, y) # 计算梯度
w -= lr * g # 通过学习率 lr 计算步长并执行梯度下降
z = np.dot(x, w) # 更新参数到原线性函数中
h = sigmoid(z) # 计算 sigmoid 函数值
l = loss(h, y) # 计算损失函数值
l_list.append(l)
return l_list
lr = 0.01 # 学习率
num_iter = 30000 # 迭代次数
l_y = Logistic_Regression(x, y, lr, num_iter) # 训练