Matlab中fminuch函數的使用方法
1.介紹
fminunc是matlab中的一個優化求解器,可以找到無約束函數的最小值。
2.輸入
參數的初始值,例如J(θ)函數的θ的初值
對應的函數和梯度值
例子:
求解邏輯迴歸的最佳參數
1. 計算代價函數和梯度值
function [J, grad] = costFunction(theta, X, y)
m = length(y);
J = 0;
h = sigmoid(X*theta);
J = -1/m*sum((y.*log(h)+(1-y).*log(1-h)));
grad = zeros(size(theta));
grad = (1/m)*X'*(h-y)
end
2.調用fminuch函數
options = optimset('GradObj', 'on', 'MaxIter', 400);
[theta, cost] = (@(t)(costFunction(t, X, y)), initial_theta,options);
在這段代碼片段中,首先定義了與fminunc一起使用的設置選項。將GradObj選項設置爲on,它告訴fminunc我們定義的函數返回成本和梯度。 這允許fminunc到在最小化功能時使用梯度下降。 此外,我們設定了MaxIter選項爲400,所以fminunc將運行最多400步