首页 > 代码库 > 机器学习的简单逻辑回归的Advanced Optimization

机器学习的简单逻辑回归的Advanced Optimization

Learning Course: One variable logistic regression optimization

单变量(只有一个特征)的用于分类的逻辑回归的cost function的最小值求解, here:

x=[x1;x2]; y={0,1};

theta=[theta(1);theta(2)]

由于分类中的y值需为0-1之间的数值,因此这里的cost function不同于线性回归的cost function。

hθ(x)=g(θTx), where g(x)= 1/(1-exp(-x)); thus hθ(x) = 1/(1-exp(-θTX));

Thus Cost(hθ(x),y)=?ylog(hθ(x))?(1?y)log(1?hθ(x)), 

因为当实际y =1时,上述方程 cost = ?ylog(hθ(x)), 因此在预测y值接近1时,方程值趋近于0,即使cost value趋近于零,反之,预测值接近于0时,cost value趋近于无穷大;对于y=0的推理也是同理。

然后 repeat θj :=θj - alpha*?(J(θ))/?(θj);

因此此处的优化即使找到一个theta使得cost function,即我们的目标方程的最小值。

 

以下用一个简化的例子来计算目标方程的最小值

例如 cost function 为 J(theta) = (theta(1)-5)^2+(theta(2)-5)^2

先构建出我们的目标函数

function [jVal,gradiant] = costfunction(theta)
jVal = (theta(1)-5)^2+(theta(2))-5)^2;
gradiant = zeros(2,1);
gradiant(1) = 2*(theta(1)-5);
gradiant(2) = 2*(theta(2)-5);
end

 然后我们使用optimization的函数

options = optimset(‘GradObj‘,‘on‘,‘MaxIter‘,100);
initialTheta = zeros(2,1);
% MaxIter定义最大迭代步数,100即定义为100步
% GradObj指定义的梯度 [optTheta,fval,exitFlag] = fminunc(@costfunction,initialTheta,options); % optTheta export our optimal Theta value % fval export our final objective function value % exitFlag 返回算法的终止标志;
% 大于零时为计算收敛,等于零时表示超过最大迭代次数(所以该增加maxiters),小于零时代表不收敛
% options是一个结构,里面有控制优化过程的各种参数

  这里对 ‘on‘的理解我不是特别明白,根据解释

<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Hiragino Sans GB"; color: #323333 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; text-indent: 32.0px; font: 16.0px "Hiragino Sans GB"; color: #556c88 } span.s1 { } span.s2 { color: #323333 } span.s3 { color: #556c88 } td.td1 { width: 201.0px; margin: 0.5px 0.5px 0.5px 0.5px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080 } td.td2 { width: 255.0px; margin: 0.5px 0.5px 0.5px 0.5px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080 } td.td3 { width: 48.0px; margin: 0.5px 0.5px 0.5px 0.5px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080 } td.td4 { width: 137.0px; margin: 0.5px 0.5px 0.5px 0.5px; border-style: solid; border-width: 1.0px 1.0px 1.0px 1.0px; border-color: #808080 #808080 #808080 #808080 }</style>

Hessian

If ‘on‘, function uses user-defined Hessian, or Hessian information (when using HessMult), for the objective function. If ‘off‘, function approximates the Hessian using finite differences.

L

fmincon, fminunc

 

 

这里的fminunc函数是matlab或者octave里已定义的函数,其功能是无约束(x的值域无约束)最优化问题求解,fminisearch和fminuc都可用于最小值求解,以下为简单总结:

1.以上两个函数都用于非线性多元函数最小值求解(因此注意求解的x的维度)

2. fminisearch适合阶次低,但是断点多的函数

3. fminunc适合高阶连续函数,因此当阶数大于等于2时,使用fminunc效果更好,但注意函数需连续。

以下为fminunc函数的一般调用格式:

x = fminunc(fun,x0);

x为返回的使函数值最小的x值,x0为优化的初始值,fun为我们定义的目标函数,也可以用@fun来调用定义函数,如下

x = fminunc(@fun,x0);

本篇博客的目的是为了总结吴恩达老师的机器学习课程,以便帮助自己更好的学习,如有错误之处,还请指出讨论以便改正。

 

机器学习的简单逻辑回归的Advanced Optimization