机器学习总结系列之逻辑回归

线性回归适合连续型的函数拟合任务(也就是回归任务),即对于不同的输入x,输出y所属于的域是一个连续的空间,而对于y是确定的离散的空间的分类任务,比如y只取0,1的二分类问题,仍然使用线性回归的直线拟合无法适应大量输入x而y只限制在0-1的情况,我们需要一种值域在0-1的函数来作为我们的假设函数。


这个函数就是被称为逻辑函数(Logistic Function)或者Sigmoid函数。它的函数表达式如下

g(z)=11+ez g ( z ) = 1 1 + e − z

它的函数图像如下图所示,整个值域在0-1,以z=0时函g(z)=0.5,

假设函数

基于以上,逻辑回归的假设函数是基于Sigmoid函数定义的,参数z是通过 θTx θ T x 来定义的,综合起来,其假设函数是

hθ(x)=g(θTx)=11+eθTx h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x

并且和线性回归不同的是其假设函数不是最终y的值,而是使用x和 θ θ 计算出的y=1情况的概率

hθ(x)=P(y=1|x;θ) h θ ( x ) = P ( y = 1 | x ; θ )
hθ(x)>=0.5,y=1 h θ ( x ) >= 0.5 , y = 1
hθ(x)<0.5,y=0 h θ ( x ) < 0.5 , y = 0

相比之下,线性回归计算的结果直接是y的值,而逻辑回归计算出来的是y=1的概率,如果这个概率大于0.5,我们就认为结果是1,反之则y=0。根据Sigmoid函数的定义,我们知道当 θT>=0 θ T >= 0 的时候 hθ(x)>=0.5 h θ ( x ) >= 0.5 ,我们把这条 θT>=0 θ T >= 0 称为决策边界(decision boundary)

损失函数

如果我们想要想线性回归那样使用梯度下降来计算最优的参数 θ θ ,我们需要构造逻辑回归的损失函数。线性回归的损失函数是假设函数值和真实值平方差的平均值,像下面这样

J(θ0,θ1,,θn)=12m(hθ(x(i))y(i))2 J ( θ 0 , θ 1 , ⋯ , θ n ) = 1 2 m ( h θ ( x ( i ) ) − y ( i ) ) 2

这样的一个原因是,如果假设函数的结果和真实结果相差的太大,那么损失函数的值也会增大,而梯度下降就是不断削减这个损失函数的过程。而逻辑回归的真实值y是离散的0和1,而假设函数 hθ(x) h θ ( x ) 是y等于1的概率,所以逻辑应该是这样的,当y=1而 hθ(x) h θ ( x ) 的概率越小时,损失函数应该变大,对应的,如果y=0而 hθ(x) h θ ( x ) 越大时,损失函数应该变大。所以逻辑回归用一个分段函数来表示其损失函数,其中log代表自然对数

Cost(hθ(x),y)=log(hθ(x)),if(y=1) C o s t ( h θ ( x ) , y ) = − l o g ( h θ ( x ) ) , i f ( y = 1 )
Cost(hθ(x),y)=log(1hθ(x)),if(y=0) C o s t ( h θ ( x ) , y ) = − l o g ( 1 − h θ ( x ) ) , i f ( y = 0 )

这函数的函数图像如下

那么其损失函数等于所有训练集的Cost函数和的平均值

J(θ)=1mmi=1Cost(hθ(x),y) J ( θ ) = 1 m ∑ i = 1 m C o s t ( h θ ( x ) , y )

我们可以将Cost分段函数写成一个函数

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=1[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))] J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ) ]

有了损失函数 J(θ) J ( θ ) ,我们的目标就是利用训练数据最小化 J(θ) J ( θ ) ,使用梯度下降法取最优值,对 J(θ) J ( θ ) 求导过程如下

推到后其值为

θj=1mmi=1(hθ(xi)y(i))x(i)j ∂ ∂ θ j = 1 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) x j ( i )

虽然这里的求导后和线性回归的形式一样,但是这里的 hθ(x)=11+eθTx h θ ( x ) = 1 1 + e − θ T x ,和线性回归是不同的

其优化过程就是迭代的更新 θ θ ,也就是

θj=θjαθj θ j = θ j − α ∂ ∂ θ j
θj=θjα1mmi=1(hθ(xi)y(i))x(i)j θ j = θ j − α 1 m ∑ i = 1 m ( h θ ( x i ) − y ( i ) ) x j ( i )

我们可以自己实现梯度下降,也可以使用内置的优化函数fminunc来进行优化,其使用有三步
1. 给出迭代每一步的计算函数function [jval,gradient]=costFunction(theta)
2. 给出迭代的选项设置对象options=optimset(‘GradObj’,’on’,’MaxIter’,100)和初始的initialTheta
3. 使用fminunc获取结果,[optTheta,functionVal,exitFlag]=fminunc(@costFunction,initialTheta,options)

多分类问题

多分类问题可以通过二分类问题推广而来,假设有n种分类,那么我们可以对每一个种类训练一个逻辑回归函数,然后取其中的最大值作为分类结果
Class 1: h(1)θ(x)=P(y=1|x;θ) h θ ( 1 ) ( x ) = P ( y = 1 | x ; θ )
Class 2: h(2)θ(x)=P(y=2|x;θ) h θ ( 2 ) ( x ) = P ( y = 2 | x ; θ )
Class 3: h(3)θ(x)=P(y=3|x;θ) h θ ( 3 ) ( x ) = P ( y = 3 | x ; θ )
max(h(i)θ) m a x ( h θ ( i ) ) 为最终结果

声明

本文首发表于Wenqi’s Blog,更多技术分享欢迎关注!转载须注明文章出处,已委托维权骑士为本站的文章进行维权,作者保留文章所有权。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值