sklearn逻辑回归 极大似然 损失_python小白之路:第十六章 逻辑回归模型(一)...

逻辑回归 Logistic Regression

1 原理

1.1 分类问题

目标是面对某种事物,估计它的可能性,判断属于哪种已知的样本类,比如买不买某种东西、是不是垃圾邮件等。类别的数量可以有很多,所以按数量可以分为二分类(binary classification)和多元分类(multiclass classification)。但是对于多分类问题也可以通过OvR、OvO等一些策略方法转为二分类问题。

1.1.1 OvR(One vs Rest)

一对剩余的所有,也可能叫OvA。总之思路就是假如有四个类别,选中一个类别One,剩余的三个都看作是其他类别Rest,于是四个类别的问题就变成了One和Rest的问题。因此,每有一个这样的One就会有对应的一个二分类,所以按照假设,我们得到了四个二分类问题。

进一步的,在训练过程中,将数据集分成4份,每一份都转换为对应的二分类数据集。然后将每一份都使用一个单独的分类器进行训练,就会得到相对应的测试样本为对应的One的概率。最后,我们选取概率值最大的类别作为测试样本的最终类别。

1.1.2 OvO(One vs One)

一对一。思路是假如有四个类别,直接挑出两个,然后对这两个进行二分类。于是,就会有

=6个两两分类问题,即6个二分类任务。进而得到6个分类结果,然后对结果进行投票来选择分类结果数量最多的类别作为最终类别。

1.1.3 逻辑回归

OvO和OvR根据任务数量在时间上有差异;OvO分类结果会更加准确,因为其保留了真实的类别信息,而OvR将剩余的类别都保留混淆了类别信息。

#sklearn的逻辑回归模型的multi_class超参数可设置分类方式

逻辑回归是一种解决二分类问题的机器学习方法,即给定输入的x,判断它的标签是A还是B。

1.2 具体过程

1.2.1 如何二分类

可以设置一个阈值,如果预测的数值大于阈值,那么就属于A;反之属于B。

还可以去预测标签为A的概率,若概率大于0.5,则认为是A;反之是B。

1.2.2 如何得到概率

概率的区间是[0,1],但线性模型

的值域是
。所以需要把线性模型的预测进一步处理,找到一个值域在[0,1]区间的模型。于是选择了sigmoid函数。

1.2.3 Sigmoid函数

公式如下:

函数图像如下:

e6edb9b2f39a0d06544fdfe1bd42834d.png

由图像可以看出,sigmoid函数是一个值域为[0,1]的“s”形曲线,且

。在
上单调增。

求导有:

1.2.4 逻辑回归模型

代入sigmoid函数,就得到了逻辑回归模型:

2 损失函数

为了得到训练好的参数w,我们应该最优化模型的损失函数。

2.1 似然(likelihood)

概率是特定环境下某种事件发生的可能性,是在结果产生之前的预测。

似然与其相反,是在确定的结果下推测产生这个结果的可能环境即参数。

比如抛硬币,根据硬币均匀的性质我们推测任何一面朝上的概率均为50%。当随机抛掷一枚硬币1000次,结果500次朝上,500次朝下,那么就容易判断这枚硬币性质均匀,两面朝上概率50%。

因此,设

为参数,x表示结果,那么概率为:
相对应的似然为:
则两者在数值上有:

机器学习中更关注似然函数最大值,因为我们的目的是预测某种事件发生的概率,因此我们希望得到导致这个概率的最有可能的条件,即根据已知的事件来找出产生这种结果的最有可能的参数,即似然函数最大值。

2.2 损失函数

损失函数衡量当前的模型输出结果跟实际的输出结果之间的差距,那么根据似然和概率的关系,这里的损失函数的值等于事件发生的总概率,损失函数就是似然函数,因为我们更关注似然函数的最大值,但损失的含义和最大有点不搭,所以给似然函数前加个负号,这样似然函数取最大即损失函数最小。

由于标签只有0和1,因此对于输入的一个样本,看成一个事件的话,设标签为1的概率是p,则

那么事件发生的概率就是:

因此,当有一组采集得到的N个数据

,他们的总概率,即采集到这组样本的概率:

两边取对数有:

就是逻辑回归模型的损失函数,因此现在的问题就变为了找到
使得
取最大,即
取最小。

3 梯度下降法求解

为求出

,使用梯度下降法。

3.1 梯度下降法

多元函数

,其梯度为:

不难看出梯度方向是函数增长速度最快的方向,反之是函数减少速度最快的方向,因为它是由函数对各个x求偏导(在对应x上的切线方向)得到的。

因此如果要计算一个函数的最小值,可以从一个初始点

开始,基于学习率
> 0(可以理解为前进的幅度),当
时,沿梯度反方向即下降方向不断迭代:

因此,

迭代关系为:

3.2 求解

为消除样本个数的影响,损失函数的形式稍微改变为损失函数除以样本个数:

根据复合函数的链式求导法则:

:

:

初始化一个

,然后给定一个步长
,通过不断修改
,利用梯度下降的方法,不断迭代,直到达到指定的次数或梯度为0。

迭代过程:

4 代码实现

以scikit-learn上的乳腺癌数据集为例:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值