机器学习算法:逻辑回归

  逻辑回归是一种分类算法。其模型会对每个样本进行“打分”,一旦分数值超过了指定阈值,则分为一个类别;而没有达到这个阈值的则分为另一个类。

1 算法模型
1.1 决策函数

  逻辑回归模型的决策函数是建立在线性回归模型的决策函数上的。线性回归算法的决策函数为: z = w 1 x 1 + w 2 x 2 + ⋯ + b = w ⃗ T ∗ x ⃗ z=w_{1}x_{1}+w_{2}x_{2}+\dots+b=\vec w^{T}*\vec x z=w1x1+w2x2++b=w Tx 线性回归模型得到的 z z z值是一个连续的值,其值域范围为 [ − ∞ , + ∞ ] [-\infty,+\infty] [,+]。如果将逻辑回归中所需的阈值设为 z z z中间的位置0,当 z > 0 z>0 z>0时,则模型将其判定为正类;否则,模型将其判定为负类。此时,逻辑回归模型的决策函数为: y ^ = { 1 z > 0 0 z ≤ 0 \widehat y=\begin{cases}1& z>0\\0& z\leq0\end{cases} y ={10z>0z0  如果仅仅使用上述公式作为决策模型的话,仅仅能得到分类的结果,但是得不到每个样本分为其类别的概率。如果在 z z z的结果值上进行Sigmoid函数转换,其中Sigmoid函数的公式如下: s ( z ) = s i g m o i d ( z ) = 1 1 + e − z s(z)=sigmoid(z)=\frac{1}{1+e^{-z}} s(z)=sigmoid(z)=1+ez1经过这层变换则可以将 z z z值的计算结果转换到 [ 0 , 1 ] [0,1] [0,1]之间,则可以使用该值作为每个样本属于正类的概率, 1 − s ( z ) 1-s(z) 1s(z)作为每个样本属于负类的概率。此时,逻辑回归的决策函数可以变换为: y ^ = { 1 s ( z ) > 0.5 0 s ( z ) ≤ 0.5 \widehat y=\begin{cases}1& s(z)>0.5\\0& s(z) \leq 0.5 \end{cases} y ={10s(z)>0.5s(z)0.5上式可以进一步转化为: y ^ = { 1 p > 0.5 0 p ≤ 0.5 \widehat y=\begin{cases} 1& p>0.5\\0 &p\leq0.5 \end{cases} y ={10p>0.5p0.5

1.2 损失函数

  由逻辑回归的决策函数可知,样本被预测为正类(标记为1)和负类(标记为0)的概率分别为: p ( y = 1 ∣ x : w ) = s ( z ) p(y=1|x:w)=s(z) p(y=1x:w)=s(z) p ( y = 0 ∣ x ; w ) = 1 − s ( z ) p(y=0|x;w)=1-s(z) p(y=0x;w)=1s(z)这两个公式可以表述为 p ( y ∣ x ; w ) = s ( z ) y ( 1 − s ( z ) ) 1 − y p(y|x;w)=s(z)^{y} (1-s(z)) ^{1-y} p(yx;w)=s(z)y(1s(z))1y。依据极大似然估计法,所有样本的联合概率密度为: L ( w ) = ∏ i = 1 m s ( z ) y i ( 1 − s ( z ) ) 1 − y i L(w)=\prod_{i=1}^{m}s(z)^{y_{i}}(1-s(z))^{1-y_{i}} L(w)=i=1ms(z)yi(1s(z))1yi上式取对数之中的结果为: l n L ( w ) = ∑ i = 1 m ( y i l n s ( z ) + ( 1 − y i ) l n ( 1 − s ( z ) ) ) lnL(w)=\sum_{i=1}^{m}(y_{i}lns(z)+(1-y_{i})ln(1-s(z))) lnL(w)=i=1m(yilns(z)+(1yi)ln(1s(z)))使用梯度上升法求得使上述公式取最大值的参数 w w w

2 sklearn实现

  sklearn中提供了逻辑回归算法的专用类,具体如下:
在这里插入图片描述
其中几个参数说明如下:

  • penalty:用于指定处罚项类型,可以取[‘l1’,‘l2’,‘elasticnet’,‘none’]。不同的取值对应不同的正则化项。
  • C:正则化强度的倒数,该值必须是正数。值越小,正则化强度越大。
  • fit_intercept: 是否指定常数项。
  • max_inter:最大迭代次数。
  • solver: 优化问题解决方法,可取的值:[‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’]。
    在这里插入图片描述
  • multi_class: 多分类问题处理方式,其取值为:['auto’, ‘ovr’, ‘multinomial’]。使用multinomial时使用交叉熵损失。
  • intercept_scaling: 只用当solver='liblinear’且fit_intercept为True时,这个参数才可以使用。当设置了这个参数之后,会在训练数据 x x x之后添加一个值为intercept_scaling的特征synthetic,此时训练出的模型的截距则变为:intercept_scaling*synthetic的权重。synthetic的参数会收正则化项的影响,intercept_scaling会减轻这种影响。
  • l1_ratio:当panalty='elasticnet‘为时该参数才有用,该参数指定Elastic-Net中 L 1 L1 L1项的权重。其取值范围在 [ 0 , 1 ] [0,1] [0,1]之内。
补充内容

  理论上的逻辑回归模型只能处理二分类问题,无法直接处理多分类。通常是将多分类任务拆解为多个二分类任务求解的。最经典的拆解策略为:一对一(One VS One, OvO)、一对多余(One VS Rest, OvR)和多对多(Many VS Many, MvM)。
  假定存在数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } , y i ∈ { C 1 , C 2 , … , C N } D=\{(x_{1},y_{1}),(x_{2},y_{2}),\dots,(x_{m},y_{m})\},y_{i}\in\{C_{1},C_{2},\dots,C_{N}\} D={(x1,y1),(x2,y2),,(xm,ym)},yi{C1,C2,,CN}
(1) OvO
  OvO会将 N N N个类别进行两两配对,从而产生 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2个二分类任务。在测试阶段,新样本将同时提交给所有分类器,将会得到 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2个分类结果,最终结果可通过投票产生,即把预测得最多的类别作为最终分类结果。
(2) OvR
  OvR则是每一次将一个类的样例作为正例,所有其他类别的样本作为反例来训练 N N N个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别最终标记作为最终分类结果。若有多个分类器预测为正类,则考虑各个分类器的预测置信度,选择置信度最大的类别作为分类结果。
(3) MvM
  MvM是每次将若干个类作为正类,若干个类别将作为反类。但正、反类构造必须有特殊的设计,不能随意选取。MvM中采用的技术为:纠错输出码(Error Correcting Output Codes, ECOC)。其工作过程主要分为两类:

  • 编码:对 N N N个类别做 M M M次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样共产生 M M M个训练集,可以训练出 M M M个分类器(类别划分通过编码矩阵指定)。
  • 解码: M M M个分类器分别对测试样本进行预测,这些预测标记组成一个编码,将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为预测结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值