MachineLearning_note:Logistic Regression(Classification)

来源:互联网 发布:免费股票交易软件 编辑:程序博客网 时间:2024/05/21 15:42

Logistic Regression(Classification)

解决分类(classification)问题.

Binary Classification

对于输出值y只能有两种状态 {0,1},通常 0表示负类(negative class) ,而 1 表示 正类(positive class) .

Hypothesis Function

由于是二分类问题,hθ必须满足

0hθ(x)1

hθ表示vector x 为正类 1 的概率. hθ由以下函数定义.

sigmoid function (logistic lunction)

g(z)=11+ez

z=θTx

hθ(x)=g(θTx)

决策边界

if hθ(x)>=0.5 预测 x为正类 1

if hθ(x)<0.5 预测 x负类 0.

因此,当z=θTx>=0 x为正类. 否则为负类.

costFunction

J(θ)=1mmi=1cost(hθ(x(i)),yi)

其中cost定义为

cost(hθ(x),y)=log(hθ(x))  if y==1

cost(hθ(x),y)=log(1hθ(x))  if y==0

简化

cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

J(θ)=1mmi=1ylog(hθ(x))(1y)log(1hθ(x))

向量化
(实现上的简化)

hθ(x)=g(Xθ)
J(θ)=1m(YTlog(hθ(X))(1Y)Tlog(1hθ(X)))

gradient

J(θ)θj=1mmi=1(hθ(x(i))y(i))x(i)j

J=1mXT(hθ(X)Y)

梯度下降与线性回归中使用的一样.不过andrew Ng 介绍了另外的一种高级优化方式,而且建议我们不要想着自己去实现这麽高级的方式最好使用现成的库.先面总结以下在octave中的优化方法.

Advanced Optimization

[?]:这个函数所采用的计算方法暂时还不太清楚

octave 语法

计算costFunction函数

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

fminunc

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

Multiclass Classification: One-vs-all

对于多分类问题,介绍了一种非常简单的方法,就是对于每一个类都用一次二分类所采用的方法,即把当前类记为正类,而把其他类归为负类这样就会对于每个类产生一个假设函数.

hiθ(x).

表示 x为第i类的概率,这样预测就是

max{hiθ} 所表示的第 i 类.

0 0