Coursea-吴恩达-machine learning学习笔记(六)【week 3之Logistic Regression】

二元分类问题:

y{0,1}{0:1:Negative ClassPositive Class y ∈ {0,1} { 0 : Negative Class 1 : Positive Class

将线性回归应用于二元分类问题:
假设函数: hθ(x)=θTx h θ ( x ) = θ T x 分类器阈值输出 hθ(x) h θ ( x ) 0.5 0.5
hθ(x)0.5 h θ ( x ) ≥ 0.5 ,预测 y=1 y = 1
hθ(x)<0.5 h θ ( x ) < 0.5 ,预测 y=0 y = 0

对于分类问题来说, y=0 or 1 y = 0   o r   1 ,但是对于 hθ(x) h θ ( x ) ,可以 >1 or <0 > 1   o r   < 0

由于我们希望 0hθ(x)1 0 ≤ h θ ( x ) ≤ 1 ,故引入逻辑回归算法
(注:忽略离散值,可以使用回归算法)

假设函数:

hθ(x)=g(θTx) h θ ( x ) = g ( θ T x )
g g 函数为
g(z)=11+ez
称为 Sigmoid S i g m o i d 函数或逻辑函数
故逻辑回归算法的假设函数为
hθ(x)=11+eθTx h θ ( x ) = 1 1 + e − θ T x
hθ(x) h θ ( x ) 用来估计基于输入特征值 x x y=1的可能性。
正式写法:
hθ(x)=P(y=1|x;θ)=1P(y=0|x;θ) h θ ( x ) = P ( y = 1 | x ; θ ) = 1 − P ( y = 0 | x ; θ )

逻辑回归算法的决策边界:
hθ(x)=0.5z=0 h θ ( x ) = 0.5 或 z = 0

hθ(x)0.5 or z0 h θ ( x ) ≥ 0.5   o r   z ≥ 0 时, y=1 y = 1
hθ(x)<0.5 or z<0 h θ ( x ) < 0.5   o r   z < 0 时, y=0 y = 0

若存在训练集: {(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))} { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯ , ( x ( m ) , y ( m ) ) }
其中,

xx0x1xnx0=1,y{0,1} x ∈ [ x 0 x 1 ⋯ x n ] x 0 = 1 , y ∈ { 0 , 1 }

假设函数为:
hθ(x)=11+eθTx h θ ( x ) = 1 1 + e − θ T x
则逻辑回归的代价函数为:
J(θ)=1mi=1mCost(hθ(x(i)),y(i)) J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) )
其中:
Cost(hθ(x),y)={log(hθ(x))log(1hθ(x))if y=1if y=0 C o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) i f   y = 1 − l o g ( 1 − h θ ( x ) ) i f   y = 0
y=1 y = 1 时,若 hθ(x)=1 h θ ( x ) = 1 ,则 Cost=0 C o s t = 0 ,若 hθ(x)=0 h θ ( x ) = 0 ,则 Cost C o s t → ∞
y=0 y = 0 时,若 hθ(x)=0 h θ ( x ) = 0 ,则 Cost=0 C o s t = 0 ,若 hθ(x)=1 h θ ( x ) = 1 ,则 Cost C o s t → ∞

Cost(hθ(x),y) C o s t ( h θ ( x ) , y ) 简化可得:

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x)) C o s t ( h θ ( x ) , y ) = − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) )
则代价函数为:
J(θ)==1mmi=1Cost(hθ(x(i)),y(i))1m[mi=1y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))] J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) = − 1 m [ ∑ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ]

向量化表示则为:
h=g(Xθ) h = g ( X θ )
J(θ)=1m(yTlog(h)(1y)Tlog(1h)) J ( θ ) = 1 m ( − y T l o g ( h ) − ( 1 − y ) T l o g ( 1 − h ) )
梯度下降法求 θ θ
Repeat {
θj:=θjαθjJ(θ)(θj) θ j := θ j − α ∂ ∂ θ j J ( θ ) ( θ j 同 时 更 新 )
}
即:
Repeat {
θj:=θjα1mi=1m(hθ(x(i))y(i))x(i)j(θj) θ j := θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ( θ j 同 时 更 新 )
}
向量化表示则为:
θ:=θαmXT(g(Xθ)y) θ := θ − α m X T ( g ( X θ ) − y )

利用梯度下降法最小化 J(θ) J ( θ ) ,须计算的是 J(θ) J ( θ ) θjJ(θ) ∂ ∂ θ j J ( θ )
除了梯度下降法外,还有其他方法计算 θ θ

  • 共轭梯度法;
  • BFGS B F G S (变长度法)
  • L L -BFGS(限制尺度法)

这三种方法的优点:

  1. 不需要手动选择学习速率 α α
  2. 收敛得比梯度下降法更快。

缺点:更加复杂。

举例: θ=[θ1θ2] θ = [ θ 1 θ 2 ]
J(θ)=(θ15)2+(θ25)2 J ( θ ) = ( θ 1 − 5 ) 2 + ( θ 2 − 5 ) 2
θ1J(θ)=2(θ15) ∂ ∂ θ 1 J ( θ ) = 2 ∗ ( θ 1 − 5 )
θ2J(θ)=2(θ25) ∂ ∂ θ 2 J ( θ ) = 2 ∗ ( θ 2 − 5 )
实现方法如下:

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);

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

利用梯度下降法求 J(θ) J ( θ ) θjJ(θ) ∂ ∂ θ j J ( θ ) 的一般程序模板:
theta=θ0θ1θn t h e t a = [ θ 0 θ 1 ⋮ θ n ]

function[jVal,gradient]=costFunction(theta) f u n c t i o n [ j V a l , g r a d i e n t ] = c o s t F u n c t i o n ( t h e t a )

jVal=[code to computeJ(θ)] j V a l = [ c o d e   t o   c o m p u t e J ( θ ) ]
gradient(1)=[code to compute θ0J(θ)] g r a d i e n t ( 1 ) = [ c o d e   t o   c o m p u t e   ∂ ∂ θ 0 J ( θ ) ]
gradient(2)=[code to compute θ1J(θ)] g r a d i e n t ( 2 ) = [ c o d e   t o   c o m p u t e   ∂ ∂ θ 1 J ( θ ) ]

gradient(n+1)=[code to compute θnJ(θ)] g r a d i e n t ( n + 1 ) = [ c o d e   t o   c o m p u t e   ∂ ∂ θ n J ( θ ) ]

对于多元分类问题,可将其拆解为多个二元分类问题。
即:

h(i)θ=P(y=i|x;θ)(i=1,2,,n) h θ ( i ) = P ( y = i | x ; θ ) ( i = 1 , 2 , ⋯ , n )
prediction=max h(i)θ(x) p r e d i c t i o n = m a x   h θ ( i ) ( x )

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值