梯度下降法 matlab
时间: 2023-11-07 18:05:08 浏览: 55
梯度下降法是一种常用的优化算法,用于求解最小化目标函数的问题。在Matlab中,可以使用fminunc函数来实现梯度下降法。具体步骤如下:
1. 定义目标函数和初始参数值:
在Matlab中,首先需要定义代价函数(cost function)和初始参数值(initial theta)。代价函数用来衡量模型预测值与真实值之间的差异,初始参数值用来指定梯度下降算法的起点。
2. 设置梯度下降法的参数:
使用optimset函数来设置梯度下降法的参数,例如设置最大迭代次数(MaxIter)和是否计算梯度(GradObj)等。
3. 调用fminunc函数进行优化:
使用fminunc函数来进行优化,将代价函数和初始参数值作为输入参数,并使用设置好的梯度下降法参数来进行优化。
4. 获取最优参数值:
fminunc函数会返回优化后得到的最优参数值,可以将其作为输出。
参考代码如下:
```matlab
function theta = linearRegression()
options = optimset('GradObj', 'on', 'MaxIter', 100);
inittheta = [1 1]';
theta = fminunc(@costFunc, inittheta, options);
end
function [J, gradient] = costFunc(theta)
x = [1; 2; 3; 4];
y = [1.1; 2.2; 2.7; 3.8];
m = size(x, 1);
hypothesis = theta(1) + theta(2)*x;
delta = hypothesis - y;
J = sum(delta.^2) / (2*m);
gradient(1) = sum(delta .* 1) / m; gradient(2) = sum(delta .* x) / m;
end
```
以上是利用梯度下降法求解线性回归问题的一个简单示例。通过调用fminunc函数,可以得到最优的参数值theta,使得代价函数J最小化。