随机梯度下降法matlab
时间: 2023-10-01 17:07:46 浏览: 91
随机梯度下降法+matlab
以下是一个简单的随机梯度下降算法的MATLAB代码示例:
```matlab
% 随机梯度下降算法
% 输入:
% X:m * n 的矩阵,m 是样本数,n 是特征数
% y:m * 1 的向量,样本标签
% alpha:学习率
% max_iter:最大迭代次数
% 输出:
% theta:n * 1 的参数向量
function theta = stochastic_gradient_descent(X, y, alpha, max_iter)
[m, n] = size(X);
theta = zeros(n, 1);
for i = 1:max_iter
% 随机选取一个样本
sample_idx = randi(m);
x_i = X(sample_idx, :)';
y_i = y(sample_idx);
% 计算梯度
grad = (x_i * theta - y_i) .* x_i;
% 更新参数
theta = theta - alpha * grad;
end
end
```
使用示例:
```matlab
% 生成随机数据
m = 1000;
n = 10;
X = randn(m, n);
y = randn(m, 1);
% 调用随机梯度下降算法
alpha = 0.01;
max_iter = 1000;
theta = stochastic_gradient_descent(X, y, alpha, max_iter);
% 输出结果
disp(theta);
```
阅读全文