逻辑回归(Logistic regression)

之前写过了线性回归模型,实际上,在线性模型中,我们假设h(\vec x) = \vec\omega^{T} \vec x+b,如果存在单调可微函数g(\cdot ),令h(\vec x) = g^{-1}(\vec\omega^{T}\vec x + b),我们称这样的模型为''广义线性模型''(generalized linear model)。g(\cdot )称为‘联系函数’(link function)。我们知道回归模型产生的预测值是实值,如果我们用回归模型来处理分类问题,以二分类为例,那么输出类标为y\in \left \{ -1,1 \right \},想要达到分类的效果,我们就需要设定一个阈值,比如我们设定阈值为0,当输出大于0时,就把它判别为类别1;反之,当输出值小于0时,就把它判别为-1。应该怎样去实现这一点呢,我们想到了符号函数sgn

                                                   Signum function.png

符号函数可以完成这件事,但是sgn函数在0点处有间断点,也就是说这个函数在定义域上是不连续的。而上边提到,我们的联系函数g(\cdot )需要是单调可微的,那么是否存在这样一种函数:能把整个定义域上负无穷到正无穷上的值映射到[0,1]区间呢。答案是肯定的,逻辑回归就可以做到。需要注意的一点是,逻辑回归虽然名字上有回归二字,但是它是一种分类学习的方法。

目录

逻辑回归原理

逻辑回归应用


逻辑回归原理

我们把联系函数设为g(z) = \frac{1}{1+e^{-z}},函数图像如下图所示

                          

可以看到联系函数g(z)将z值映射到[0,1]区间,而且这个联系函数是单调可微的,其函数图像很像一个S,所以我们把它称为Sigmoid函数或S函数。有了联系函数g(z)后,我们假设函数h(\vec x)变为

                                                                          h(\vec x) = \frac{1}{1+e^{-(\vec w^{T}\vec x+b)}}

可以看到,这时候我们的假设函数的范围是在0-1之间的,我们将h(\vec x)表示为h(\vec x) = p(y = 1|\vec x;\vec \omega;b),即h(\vec x)的值是已知x和参数\omega和b的情况下,y = 1 的概率;同样的1-h(\vec x) = p(y = 0|\vec x;\vec \omega;b)。可以看到,逻辑回归不仅能预测类型,而且还可以预测属于某一类的概率。打个比方,使用逻辑回归预测天气的,它不仅可以预测明天天气是晴天还是阴天,而且还可以预测是晴天的概率或者阴天的概率。我们训练模型的目的是找到合适的参数\vec \omega和b,在线性回归模型中,是通过最小化代价函数来找出学习出合适的参数值的,同样的,我们也需要在逻辑回归中定义一个代价函数J(\omega ,b),在线性回归中是通过均方误差来衡量h( x_{i})y_{i}的相似程度的,那么逻辑回归中的代价函数应该怎定义呢?

                                                                      J(\omega,b) = \frac{1}{m}\sum_{i = 1}^{m}Cost(h(x^{(i)}),y^{(i)})

其中,

                                                         Cost(h(x^{(i)}),y^{i})=\left\{ \begin{aligned} -log(h(x^{(i)})) && y^{(i)} = 1\\ -log(1-h(x^{(i)})) && y^{(i)} = 0\\ \end{aligned} \right.        

从上边的式子我们可以简化Cost(h(x^{(i)}),y^{(i)})为:

                                                     Cost(h(x^{(i)}),y^{(i)}) = -y^{(i)}log(h(x^{(i)}))-(1-y^{(i)})log(1-h(x^{(i)}))   

将其带入到J(\omega,b) = \frac{1}{m}\sum_{i = 1}^{m}Cost(h(x^{(i)}),y^{(i)})中得:

                                                     J(\omega,b) = -\frac{1}{m} \sum_{i = 1}^{m}[y^{(i)}log(h(x^{(i)}))+(1-y^{(i)})log(1-h(x^{(i)}))]

这个式子就是逻辑回归的代价函数,现在我们需要做的就是最小化这个代价函数,同样的我们还是可以使用梯度下降的方法,支只是这里的假设函数由原来的h(\vec x) = \vec\omega^{T} \vec x + b,变为了 h(\vec x) = \frac{1}{1+e^{\vec w^{T}\vec x+b}}    ,接下来就是分别对第j个参数\omega_{j}进行迭代更新

                                                                    \omega_{j} := \omega_{j} - \frac{\alpha}{m}\sum_{i = 1}^{m}\frac{\partial J(\omega,b) }{\partial \omega_{j}} 

来求得使得代价函数最小的 参数\omega_{j}。                                                    

逻辑回归应用

前面讲到了逻辑回归的原理,接下来以鸢尾花数据集(鸢尾花数据集是分类问题中经典数据集之一,鸢尾花一共有150个样本数据,有三种鸢尾花的品种,每个样本都包含四个特征)为例,对逻辑回归进行实现。本部分模型构建的部分直接使用的是sklearn中的LogisticRegression模块

用测试集剩余的45个样本数据来测试模型的性能,可以看到,逻辑回归可以大致将三种类别的鸢尾花划分开来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值