机器学习--逻辑斯蒂回归

重新开始我们的机器学习之路!

逻辑回归(Logistic Regression)

逻辑回归,虽然叫它回归,但是其实它是分类算法,更准确地说叫分类建模方法,(详见我的自然语言处理系列)。我这样说,分类和回归本质上是同一类问题不知道有没有想打我?哈哈。大家会说,怎么可能呢,分类是分类,回归是回归啊,这是常识啊!我这样说是因为,不管是分类问题还是问题,本质上都是要对如下概率进行建模:

p(y|x) p ( y | x )

大家同意么?
有人会说,生成式模型不是对这样概率建模吗?
p(x,y) p ( x , y )

是的,大哥,你学的很好,但是我们都知道,建模 p(x,y) p ( x , y ) 最终还是要建模 p(y|x) p ( y | x )
有人会说,如果分类问题和回归问题本质上是同一类问题?那难道能用回归问题解决分类问题吗?
是的,对。你可以用分类建模方法建模回归问题,没人说不可以,只是效果不行而已。
不管是分类问题还是回归问题,都是要建模 p(y|x) p ( y | x ) ,但是, p(y|x) p ( y | x ) 再往下等于什么,这其实是你的主观判断!是你认为,这是一个分类问题,可以上逻辑回归,SVM,不能上线性回归。对不对?不同的算法其实是选择了不同的建模方式。
那么逻辑回归是怎么建模的呢?
p(y|x)=Ber(y|sigm(wTx)) p ( y | x ) = B e r ( y | s i g m ( w T x ) )

我们在回看,线性回归是怎么建模的:
p(y|x)=N(y|wTx,σ2) p ( y | x ) = N ( y | w T x , σ 2 )

一个是为认为 y y 是关于sigm(wTx)的伯努利分布,一个认为 y y 是关于wTx,σ2d的高斯分布。就是这点不同。sigm是sigmoid函数,输出[0,1]
那你要问了,凭什么就认为正好是高斯分布,伯努利分布,凭什么认为参数就是这些,那么巧吗?这就是建模过程中的假设,假设你服从这样的分布。没有假设,没有办法建模。

参数估计

模型定义好之后,就要估计模型的参数了,极大似然咯,老油条都知道。
这里还分两种情形,虽然本质上都一样,一种呢,二分类是{0,1}标签。
p(y=1)=sigm(wTx) p ( y = 1 ) = s i g m ( w T x ) , p(y=0)=1sigm(wTx) p ( y = 0 ) = 1 − s i g m ( w T x )
这时候:

NLL(w)=i=1nlog[(sigm(wTx))yi=1×(1sigm(wTx))yi=0]=i=1n[yilog(sigm(wTx))+(1yi)log(1sigm(wTx))] N L L ( w ) = − ∑ i = 1 n l o g [ ( s i g m ( w T x ) ) y i = 1 × ( 1 − s i g m ( w T x ) ) y i = 0 ] = − ∑ i = 1 n [ y i l o g ( s i g m ( w T x ) ) + ( 1 − y i ) l o g ( 1 − s i g m ( w T x ) ) ]

这就是所谓的交叉熵函数
另外其实还有一种情形,就是二分类的标签的{1, -1}
这个时候 p(y=1)=sigm(wTx)=11+exp(wTx) p ( y = 1 ) = s i g m ( w T x ) = 1 1 + e x p ( − w T x ) p(y=1)=sigm(wTx)=11+exp(+wTx) p ( y = − 1 ) = s i g m ( w T x ) = 1 1 + e x p ( + w T x ) . 这种情形也很常见。这个时候:
NLL(w)=i=1nlog(1+exp(yiwTx)) N L L ( w ) = − ∑ i = 1 n l o g ( 1 + e x p ( − y i w T x ) )

损失函数定好了,我们怎么去更新参数呢?
我们用 h(x)=sigm(wTx) h ( x ) = s i g m ( w T x ) ,sigmoid函数有一个特定,那就是 h(x)=h(x)(1h(x)) h ′ ( x ) = h ( x ) ( 1 − h ( x ) ) ,感兴趣的同学可以直接推导一下。
我们的目标是损失函数到达最小,怎么能让损失函数达到最小呢? w w 往损失函数最小化的方法更新,那到底是哪个方法呢?梯度的方向,损失函数对w求导数:
δl(w)δ(w)=i=1n[yih,(wTx)h(wTx)(1yi)h,(wTx)1h(wTx)]=i=1n[yi(1h(wTx))(1yi)h(wTx)]xi=i=1n(h(wTx)yi)xi δ l ( w ) δ ( w ) = − ∑ i = 1 n [ y i h , ( w T x ) h ( w T x ) − ( 1 − y i ) h , ( w T x ) 1 − h ( w T x ) ] = − ∑ i = 1 n [ y i ( 1 − h ( w T x ) ) − ( 1 − y i ) h ( w T x ) ] x i = ∑ i = 1 n ( h ( w T x ) − y i ) x i

欧了,然后梯度更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值