您的位置:首页 > 其它

机器学习07-逻辑回归-代价函数与梯度下降的优化

2017-03-29 14:22 274 查看
  一,代价函数 

  针对逻辑回归,本篇博文讲述逻辑回归里的代价函数,并给出优化后的梯度下降算法,读完本篇博文你应该可以使用逻辑回归了。如何拟合逻辑回归模型的参数θ。具体来说,我要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题。



 对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将h(x)带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convex function)。

 


这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。





 

这样构建的 Cost(hθ(x),y)函数的特点是:当实际的 y=1 且 hθ 也为 1 时误差为 0,当
y=1但 hθ 不为 1 时误差随着 hθ 的变小而变大;当实际的 y=0 且 hθ 也为 0 时代价为 0,当 y=0但 hθ 不为 0 时误差随着 hθ 的变大而变大。







   虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的 hθ(x)=g(θTX)与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。一些梯度下降算法之外的选择:
除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broyden fletchergoldfarb shann,BFGS)和有限内存局部优化法(LBFGS) fminunc 是 matlab 和 octave 中都带的一个最小值优化函数,使用时我们需要提供代价函数和每个参数的求导,下面是
octave 中用 fminunc 函数的代码示例

 二,使用octave 中用 fminunc 函数对梯度下降算法进行高级优化

本篇博文先举简单的例子让你了解fminunc函数,在下篇博文中我将结合实际项目中的案例用fminunc处理梯度下降。

例子:

  求代价函数J(θ)=(θ1 - 5)^2 - (θ2 - 5)^2最小值的θ1与θ2的值



如果我们不知道最小值,但你想要代价函数找到这个最小值,是用比如梯度下降这些算法,但最好是用比它更高级的算法,你要做的就是运行一个像这样的 Octave 函数:

function [jVal, gradient]=costFunction(theta)

 jVal=(theta(1)-5)^2+(theta(2)-5)^2;

 gradient=zeros(2,1);

 gradient(1)=2*(theta(1)-5);

 gradient(2)=2*(theta(2)-5);

这样就计算出这个代价函数,函数返回的第二个值是梯度值,梯度值应该是一个 2×1的向量,梯度向量的两个元素对应这里的两个偏导数项,运行这个 costFunction 函数后,你就可以调用高级的优化函数,这个函数叫 fminunc,它表示 Octave 里无约束最小化函数。

调用它的方式如下:

options=optimset('GradObj','on','MaxIter',100);

initialTheta=zeros(2,1);

[optTheta, functionVal, exitFlag]=fminunc(@costFunction, initialTheta, options);

你要设置几个 options,这个 options 变量作为一个数据结构可以存储你想要的 options,所以 GradObj 和 On,这里设置梯度目标参数为打开(on),这意味着你现在确实要给这个算法提供一个梯度,然后设置最大迭代次数,比方说 100,我们给出一个 θ 的猜测初始值,它是一个
2×1 的向量,那么这个命令就调用 fminunc,这个@符号表示指向我们刚刚定义的costFunction 函数的指针。如果你调用它,它就会使用众多高级优化算法中的一个,当然你也可以把它当成梯度下降,只不过它能自动选择学习速率 α,你不需要自己来做。然后它会尝试使用这些高级的优化算法,就像加强版的梯度下降法,为你找到最佳的 θ 值。

在octave中运算结果如下:



可以很清楚的看到,当θ1=5,θ2=5是,J(θ)值最小

    本博文参阅斯坦福大学吴恩达(Andrew
Ng)机器学课程,同时感谢黄海广博士的指导,转载请标明出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息