多元线性回归梯度下降算法
梯度下降算法有两种实现方式:批量梯度下降和随机梯度下降。批量梯度下降是指每次迭代都使用全部样本进行参数更新,而随机梯度下降是指每次迭代只使用一个样本进行参数更新。梯度下降算法是一种优化算法,通过迭代的方式最小化代价函数。
多元线性回归模型是指具有多个自变量和一个因变量的线性回归模型,数学表达式为:
y=θ0+θ1x1+θ2x2+...+θnxn y = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + ... + \theta_n x_n y=θ0+θ1x1+θ2x2+...+θnxn
其中,yyy是因变量,x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn是自变量,θ0,θ1,θ2,...,θn\theta_0, \theta_1, \theta_2, ..., \theta_nθ0,θ1,θ2,...,θn是模型参数,nnn是自变量的个数。
代价函数是用来评估模型预测结果与真实结果之间的差距,其数学表达式为:
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2 J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
其中,mmm是样本数量,hθ(x(i))h_\theta(x^{(i)})hθ(x(i))是模型对第iii个样本的预测结果,y(i)y^{(i)}y(i)是第iii个样本的真实结果。
梯度下降算法是一种优化算法,通过迭代的方式最小化代价函数。其具体实现过程为:
- `初始化模型参数θ\thetaθ;
- 不断重复以下步骤,直到满足停止条件:计算代价函数J(θ)J(\theta)J(θ)的梯度∇J(θ)\nabla J(\theta)∇J(θ);更新模型参数θ\thetaθ,即θ:=θ−α∇J(θ)\theta := \theta - \alpha \nabla J(\theta)θ:=θ−α∇J(θ),其中α\alphaα是学习率。
梯度下降算法有两种实现方式:批量梯度下降和随机梯度下降。批量梯度下降是指每次迭代都使用全部样本进行参数更新,而随机梯度下降是指每次迭代只使用一个样本进行参数更新。
import numpy as np
# 定义梯度下降函数
def gradient_descent(X, y, theta, alpha, num_iters):
m = y.size
J_history = np.zeros(num_iters) # 用于保存每次迭代的代价函数值
for i in range(num_iters):
h = X.dot(theta) # 计算预测值
theta -= alpha * (1 / m) * X.T.dot(h - y) # 更新参数
J_history[i] = compute_cost(X, y, theta) # 计算代价函数值
return theta, J_history
# 定义代价函数
def compute_cost(X, y, theta):
m = y.size
h = X.dot(theta) # 计算预测值
J = (1 / (2 * m)) * np.sum((h - y) ** 2) # 计算代价函数值
return J
# 生成随机数据集
np.random.seed(0)
m = 100 # 样本数量
n = 5 # 特征数量(不包括常数项)
X = np.random.randn(m, n)
theta_true = np.random.randn(n + 1) # 真实的模型参数(包括偏置项)
X = np.hstack((np.ones((m, 1)), X)) # 添加常数项,即添加一列全为1的特征
y = X.dot(theta_true) + np.random.randn(m) * 0.5 # 添加噪声
# 初始化参数
theta = np.zeros(X.shape[1])
# 运行梯度下降算法
theta, J_history = gradient_descent(X, y, theta, alpha=0.01, num_iters=1000)
# 输出模型参数
print("真实的模型参数: ", theta_true)
print("模型参数: ", theta)
# 计算均方误差
y_pred = X.dot(theta)
mse = np.mean((y_pred - y) ** 2)
print("均方误差: ", mse)

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)