首页 > 代码库 > 机器学习的简单逻辑回归的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