梯度下降法matlab
时间: 2023-07-13 14:30:39 浏览: 114
梯度下降法在 Matlab 中的实现可以通过以下步骤:
1. 定义损失函数:首先需要定义一个损失函数,例如:
```matlab
function J = loss_function(x, y, theta)
m = length(y);
J = (1/(2*m)) * sum((x*theta - y).^2);
end
```
其中,x 是输入的特征矩阵,y 是对应的标签向量,theta 是要优化的参数向量,m 是样本数量。
2. 初始化参数:初始化参数向量 theta,例如:
```matlab
theta = zeros(size(x, 2), 1); % 初始化为 0 向量
```
3. 定义梯度函数:计算损失函数关于参数向量 theta 的梯度,例如:
```matlab
function grad = gradient(x, y, theta)
m = length(y);
grad = (1/m) * x' * (x*theta - y);
end
```
其中,x 是输入的特征矩阵,y 是对应的标签向量,theta 是要优化的参数向量,m 是样本数量。
4. 梯度下降迭代:根据梯度下降算法更新参数向量 theta,例如:
```matlab
alpha = 0.01; % 学习率
num_iters = 1000; % 迭代次数
for i = 1:num_iters
grad = gradient(x, y, theta);
theta = theta - alpha * grad;
J = loss_function(x, y, theta);
fprintf('迭代次数:%d,损失函数值:%f\n', i, J);
end
```
其中,alpha 是学习率,num_iters 是迭代次数。每次迭代,首先计算梯度 grad,然后根据梯度下降算法更新参数向量 theta,并计算损失函数 J 的值。
5. 预测:使用训练好的模型进行预测,例如:
```matlab
y_pred = x_test * theta;
```
其中,x_test 是测试集的特征矩阵,y_pred 是预测的标签向量。
这就是梯度下降法在 Matlab 中的实现步骤。
阅读全文