使用fminunc找逻辑回归(logistic)代价函数的最小值

本文介绍了如何利用MATLAB的fminunc函数找到逻辑回归(Logistic Regression)代价函数的最小值。通过实例展示了单变量和多变量函数的优化过程,以及在含参函数中的应用。最后,演示了在二元逻辑回归问题中,使用fminunc找到最优参数theta的过程,结果与预期一致,证实了非线性优化在神经网络训练中的作用。
摘要由CSDN通过智能技术生成

在看完UFLDL自编码器autoencoder的代码后,发现其中的训练过程并不是使用训练的手段找到最优的参数theta,而是使用了minFunc寻找代价函数的最小值,并返回优化后的参数theta。其中的minFunc函数的说明里头提到了这个函数提供的各种选项和matlab提供的fminunc函数非常像,所以就去看了下matlabhelp

这里贴出fminunc函数help中最基本的翻译:

fminunc试图找到一个多变量函数的最小值,从一个估计的初试值开始,这通常被认为是无约束非线性优化问题。

x =fminunc(fun,x0)      试图从x0附近开始找到函数的局部最小值,x0可以是标量,向量或矩阵

x =fminunc(fun,x0,options)      根据结构体options中的设置来找到最小值,可用optimset来设置options

x =fminunc(problem)         为problem找到最小值,而problem是在Input Arguments中定义的结构体

 

Create thestructure problem by exporting a problem from Optimization Tool, as describedin Exporting Your Work.

 

[x,fval]= fminunc(...)    返回目标函数fun在解x处的函数值

[x,fval,exitflag]= fminunc(...)     返回一个描述退出条件的值exitflag

[x,fval,exitflag,output]= fminunc(...)       返回一个叫output的结构体,它包含着优化的信息

[x,fval,exitflag,output,grad]= fminunc(...)     返回函数在解x处的梯度的值,存储在grad中

[x,fval,exitflag,output,grad,hessian]= fminunc(...)            返回函数在解x处的Hessian矩阵的值,存储在hessian中

 

对这些说明理解的不是很透彻,然后做了几个简单的实验,如下:

 

定义函数fun1

function y = fun1(x)

y = (x - 2)^2;

end

显然fun1x=2处取得最小值0

 

clear

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
下面是使用 MATLAB 建立 logistic 回归函数的一个简单示例。 假设我们有一个训练集 X 和目标变量 y,其中 X 是一个 m 行 n 列的矩阵,y 是一个 m 行 1 列的向量。我们的目标是建立一个 logistic 回归模型,用于预测 y 的值。 首先,我们需要定义一个 sigmoid 函数,它是 logistic 回归模型中的关键部分: ``` function g = sigmoid(z) %SIGMOID Compute sigmoid function % g = SIGMOID(z) computes the sigmoid of z. g = 1.0 ./ (1.0 + exp(-z)); end ``` 接下来,我们可以定义一个 cost 函数,它用于计算 logistic 回归模型的代价函数: ``` function [J, grad] = costFunction(theta, X, y) %COSTFUNCTION Compute cost and gradient for logistic regression % J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the % parameter for logistic regression and the gradient of the cost % w.r.t. to the parameters. m = length(y); % number of training examples J = 0; grad = zeros(size(theta)); z = X * theta; hypothesis = sigmoid(z); J = (-y' * log(hypothesis) - (1 - y)' * log(1 - hypothesis)) / m; grad = (X' * (hypothesis - y)) / m; end ``` 最后,我们可以使用 fminunc 函数来优化参数 theta,使得代价函数最小: ``` % Initialize fitting parameters initial_theta = zeros(size(X, 2), 1); % Set options for fminunc options = optimset('GradObj', 'on', 'MaxIter', 400); % Run fminunc to obtain the optimal theta [theta, J, exit_flag] = fminunc(@(t)(costFunction(t, X, y)), initial_theta, options); ``` 这样,我们就可以得到一个训练好的 logistic 回归模型,可以用于预测新的数据点的分类。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值