逻辑回归 from 吴恩达的机器学习

分类问题

逻辑回归算法

性质:它的输出值永远在0到 1 之间。

实质:分类算法,适用于标签y值取值离散的情况。


假说表示

根据线性回归模型我们只能预测连续的值,然而对于分类问题,我们需要输出0或1,我们可以预测:

时,预测y = 1;

时,预测y= 0;


逻辑回归假设模型

其中


:对于给定的输入变量,根据选择的参数计算输出变量=1的可能性


函数图像如下图:


取值在(0,1)之间,更贴合于分类问题。

例:

如果对于给定的x,通过已经确定的参数计算得出,则表示有70%的几率y为正向类,相应地y为负向类的几率为1-0.7=0.3。


判定边界

根据上面绘制出的 S 形函数图像,我们知道当

判定边界:分隔y=0 与 y=1的分界线,由假设模型确定

例子:

参数是向量[-3 1 1]。 则当 ,即时,模型将预测  y=1。 我们可以绘制直线,这条线便是我们模型的分界线,将预测为1的区域和预测为 0的区域分隔开。



代价函数


逻辑回归的代价函数为


其中


之间的关系如下图所示



当实际的y=1且 也为h(x)=1时误差为 0,当y=1但h(x)不为1时误差随着h(x)变小而变大;当实际的y=0且 也h(x)为0 时代价为 0,当y=0但h(x)不为0时误差随着h(x)的变大而变大。

构建的cost简化


带入代价函数,得到逻辑回归代价函数为:


更新参数规则




向量化表示:


优化算法

计算参数更优化的算法:

共轭梯度Conjugate Gradient),局部优化法(Broyden fletcher goldfarbshann,BFGS)和有限内存局部优化法(LBFGS

使用library库即可使用这些算法

octave使用优化算法示例:

首先定义代价函数及每个参数的求导

function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end

使用fminunc()计算参数 使用optimset设置优化参数

options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
   [optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

多类别分类:一对多

将多个类中的一个类标记为正向类(y=1),然后将其他所有类都标记为负向类,这个模型记作 。接着,类似地第我们选择另一个类标记为正向类(y=2),再将其它类都标记为负向类,将这个模型记作 ,依此类推。

最后我们得到一系列的模型简记为: 其中:i=(1,2,3...k)


在需要做预测时,我们将所有的分类机都运行一遍,然后对每一个输入变量,选择最高可能性的输出变量。



猜你喜欢

转载自blog.csdn.net/melon__/article/details/80729356
今日推荐