4、逻辑回归(LR)

1 逻辑回归原理

(1)理论原理

逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的 n n n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由 p p p个指标构成。

逻辑回归(Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作“评定模型”、“分类评定模型”)。常用于做数据的初步判断,(推荐算法,医疗诊断等),是通过线性模型完成分类效果(线性可分)。

  • 线性回归:尽可能让样本点和模型线重合
  • 逻辑回归:尽可能让样本点远离模型线,模型线的两侧是两个类别,样本距离模型线越远越好

(2)sigmoid 函数

sigmoid将线性问题转化为概率问题,将结果值压缩到0-1之间(0负,1正)。
z = w x + b f ( z ) = 1 1 + e − z f ( z ) ′ = f ( z ) ( 1 − f ( z ) ) z = wx + b\\ f(z) = \dfrac{1}{1 + e^{-z}}\\ f(z)' = f(z)(1-f(z)) z=wx+bf(z)=1+ez1f(z)=f(z)(1f(z))

sigmoid函数,代表的是样本为正类别的概率,在阈值0.5范围之间梯度大,会将数据值尽可能的分到0或1的位置

阈值区分 如果 s i g m o i d sigmoid sigmoid求出的结果大于0.5,就是正类别,否则就是负类别
在这里插入图片描述

2 损失函数

2.1 损失函数推导

极大似然估计:事情已经发生了,当未知参数等于多少时,能让这个事情发生的概率最大,执果索因。如果我们想要让所计算的结果更准确,就可以将每次计算的结果进行相乘,让最后的概率最大即可。

(1)样本为0-1时

某样本属于正例的概率表示为
P ( y i = 1 ∣ x i ) = e x p ( w ∙ x i ) 1 + e x p ( w ∙ x i ) P(y_{i}=1|x_{i})=\dfrac{exp(w\bullet x_{i})}{1+exp(w \bullet x_{i})} P(yi=1∣xi)=1+exp(wxi)exp(wxi)
某样本属于负例的概率表示为
P ( y i = 0 ∣ x i ) = 1 1 + e x p ( w ∙ x i ) P(y_{i}=0|x_{i})=\dfrac{1}{1+exp(w \bullet x_{i})} P(yi=0∣xi)=1+exp(wxi)1
其中, w = ( w ( 1 ) , w ( 2 ) , … , w ( n ) , b ) T , x i = ( x i ( 1 ) , x i ( 2 ) … , x i ( n ) , 1 ) T w = (w^{(1)},w^{(2)},…, w^{(n)},b)^T , x_i = (x_i^{(1)},x_i^{(2)}…,x_i^{(n)},1)^T w=(w(1),w(2),,w(n),b)Txi=(xi(1),xi(2),xi(n),1)T。因此,似然函数为:
∏ i = 1 N [ P ( y i = 1 ∣ x i ) ] y i [ P ( y = 0 ∣ x i ) ] 1 − y i \prod_{i=1}^{N}[P(y_{i}=1|x_{i})]^{y_{i}}[P(y=0|x_{i})]^{1-y_{i}} i=1N[P(yi=1∣xi)]yi[P(y=0∣xi)]1yi
求似然函数最大,加负号求最小,得到代价函数为:
C o s t ( w ) = − 1 N ∑ i = 1 N [ y i log ⁡ P ( y i = 1 ∣ x i ) + ( 1 − y i ) log ⁡ P ( y i = 0 ∣ x i ) ] = − 1 N ∑ i N [ y i ∗ log ⁡ P ( y i = 1 ∣ x i ) P ( y i = 0 ∣ x i ) + log ⁡ P ( y i = 0 ∣ x i ) ] = − 1 N ∑ i N [ y i ∗ ( w ∙ x i ) − log ⁡ ( 1 + exp ⁡ ( w ∙ x i ) ) ] Cost(w)=-\frac{1}{N}\sum_{i=1}^{N}[y_{i}{\log}P(y_{i}=1|x_{i})+(1-y_{i}){\log}P(y_{i}=0|x_{i})]\\ =-\frac{1}{N}\sum_i^N[y_i*{\log}\frac{P(y_{i}=1|x_{i})}{P(y_{i}=0|x_{i})}+{\log}P(y_{i}=0|x_{i})]\\ =-\frac{1}{N}\sum_i^N[y_i*(w \bullet x_i)-\log(1+\exp(w \bullet x_i))] Cost(w)=N1i=1N[yilogP(yi=1∣xi)+(1yi)logP(yi=0∣xi)]=N1iN[yilogP(yi=0∣xi)P(yi=1∣xi)+logP(yi=0∣xi)]=N1iN[yi(wxi)log(1+exp(wxi))]
再用梯度下降法反解 w w w

(2)样本为-1 和1时

某样本属于正例的概率表示为
P ( y i = 1 ∣ x i ) = e x p ( w ∙ x i ) 1 + e x p ( w ∙ x i ) P(y_{i}=1|x_{i})=\dfrac{exp(w \bullet x_{i})}{1+exp(w \bullet x_{i})} P(yi=1∣xi)=1+exp(wxi)exp(wxi)
某样本属于负例的概率表示为
P ( y i = − 1 ∣ x i ) = 1 1 + e x p ( w ∙ x i ) P(y_{i}=-1|x_{i})=\dfrac{1}{1+exp(w \bullet x_{i})} P(yi=1∣xi)=1+exp(wxi)1
因此,似然函数为:
∏ i = 1 N 1 1 + e x p ( − y i w ∙ x i ) \prod_{i=1}^{N}\frac{1}{1+exp(-y_{i}w \bullet x_{i})} i=1N1+exp(yiwxi)1
代价函数为:
C o s t ( w ) = − 1 N ∑ i = 1 N log ⁡ ( 1 + e x p ( − y i w ∙ x i ) ) Cost(w)=-\frac{1}{N}\sum_{i=1}^{N}{\log}(1+exp(-y_{i}w \bullet x_{i})) Cost(w)=N1i=1Nlog(1+exp(yiwxi))
再用梯度下降法反解 w w w

似然函数加入L2正则化后目标函数为:
O b j ( w ) = 1 N ∑ i = 1 N log ⁡ ( 1 + e x p ( − y i w ∙ x i ) ) + λ 1 2 ∣ ∣ w ∣ ∣ 2 2 Obj(w)=\frac{1}{N}\sum_{i=1}^{N}\log(1+exp(-y_{i}w \bullet x_{i}))+\lambda\frac{1}{2}||w||_2^2 Obj(w)=N1i=1Nlog(1+exp(yiwxi))+λ21∣∣w22
目标函数导数为:
O b j w ′ = 1 N ∑ i = 1 N { − y i e x p ( − y i w ∙ x i ) 1 + e x p ( − y i w ∙ x i ) x i } + λ w Obj_w^{'}=\frac{1}{N}\sum_{i=1}^{N} \lbrace -y_{i}\frac{exp(-y_{i}w \bullet x_{i})}{1+exp(-y_{i}w \bullet x_{i})} x_{i}\rbrace+\lambda{w} Objw=N1i=1N{yi1+exp(yiwxi)exp(yiwxi)xi}+λw

= 1 N ∑ i = 1 N { − y i ( 1 − 1 1 + e x p ( − y i w ∙ x i ) ) x i } + λ w =\frac{1}{N}\sum_{i=1}^{N}\lbrace-y_{i}(1-\frac{1}{1+exp(-y_{i}w \bullet x_{i})})x_{i}\rbrace+\lambda{w} =N1i=1N{yi(11+exp(yiwxi)1)xi}+λw

更新权重:
w = w − γ O b j w ′ w=w-\gamma{Obj_w}' w=wγObjw

2.2 二分类交叉熵

我们也可以使用信息论解释逻辑回归的代价函数,

  • 概率就是判断一件事情发生的可能性
  • 信息量是得知该消息时的意外程度

信息量 = log ⁡ 1 P = − log ⁡ P 信息量=\log{\frac{1}{P}}=-\log{P} 信息量=logP1=logP

概率越低,信息量越大
  • 用于分类问题,概率越低,证明模型计算越不准确

  • 熵是用来衡量信息不确定性的单位(概率和信息量乘积)

  • 交叉熵

    用来检验实际发生概率预测准确率信息量的乘积

    其中, p k p_k pk为样本实际发生概率, q k q_k qk为样本预测准确的概率
    p k log ⁡ ( q k ) p_k\log(q_k) pklog(qk)

在二分的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为 p p p 1 − p 1−p 1p,此时目标函数(交叉熵)表达式为( log ⁡ \log log底数是 e e e):
L ( w ) = 1 N ∑ i N L i = 1 N ∑ i N [ y i ∗ log ⁡ ( p i ) + ( 1 − y i ) ∗ log ⁡ ( 1 − p i ) ] = 1 N ∑ i N [ y i ∗ log ⁡ ( p i 1 − p i ) + log ⁡ ( 1 − p i ) ] = 1 N ∑ i N [ y i ∗ ( w ∙ x i ) − log ⁡ ( 1 + exp ⁡ ( w ∙ x i ) ) ] \begin{aligned} L(w)&=\frac{1}{N}\sum_i^NL_i\\ &=\frac{1}{N}\sum_i^N[y_{i}*\log(p_{i})+(1-y_{i})*\log(1-p_{i})]\\ &=\frac{1}{N}\sum_i^N[y_{i}*\log(\frac{p_{i}}{1-p_{i}})+\log(1-p_{i})]\\ &=\frac{1}{N}\sum_i^N[y_i*(w \bullet x_i)-\log(1+\exp(w \bullet x_i))] \end{aligned} L(w)=N1iNLi=N1iN[yilog(pi)+(1yi)log(1pi)]=N1iN[yilog(1pipi)+log(1pi)]=N1iN[yi(wxi)log(1+exp(wxi))]
其中:

  • y i y_{i} yi—— 表示样本 i i i的label,正类为1 ,负类为0
  • p i p_{i} pi—— 表示样本 i i i预测为正类的概率, p i = P ( y i = 1 ∣ x i ) = e x p ( w ∙ x i ) 1 + e x p ( w ∙ x i ) p_i=P(y_{i}=1|x_{i})=\dfrac{exp(w\bullet x_{i})}{1+exp(w \bullet x_{i})} pi=P(yi=1∣xi)=1+exp(wxi)exp(wxi)

2.3 sklearn中逻辑回归

逻辑回归调库:

  • sklearn.linear_model.LogisticRegression(solver=‘liblinear’, penalty=‘l2’, C = 1.0)

  • solver可选参数:{‘liblinear’, ‘sag’, ‘saga’,‘newton-cg’, ‘lbfgs‘},

    • 默认: ’liblinear’;用于优化问题的算法。

    • 对于小数据集来说,“liblinear”是个不错的选择,而“sag”和‘saga’对于大型数据集会更快。

    • 对于多分类问题,只有’newton-cg’, ‘sag’, 'saga’和’lbfgs’可以处理多项损失;“liblinear”仅限于“one-versus-rest”分类。

      在这里插入图片描述

  • penalty:指定正则化的参数可选为"l1", “l2” 默认为“l2”. 注意:l1正则化会将部分参数压缩到0,而l2正则化不会让参数取到0只会无线接近

  • C:大于0的浮点数。C越小对损失函数的惩罚越重

  • multi_class : 告知模型要处理的分类问题是二分类还是多分类。默认为“ovr”(二分类)

    • “multinational” : 表示处理多分类问题,在solver="liblinear"时不可用
    • “auto” : 表示让模型自动判断分类类型

3 多分类(softmax)

接触过二分类问题,使用sigmoid函数很好去解决,如果变成多分类问题,应该如何解决呢?多分类使用softmax方式来进行处理,softmax是logistic回归的一般形式。可以通过softmax进行合理分类,以下分类为 考拉0, 猫1, 狗2 ,鸡3

在这里插入图片描述

3.1 算法原理

softmax公式如下:
f ( z ) = e z ∑ i = 1 n e z f(z)=\frac{e^z}{\sum_{i=1}^{n}e^z} f(z)=i=1nezez
多分类是二分类的一种拓展形式,二分类采用阈值方式进行分类,多分类采用最大概率进行分类。

多分类处理的原理也是通过线性模型解决分类问题。
在这里插入图片描述

3.2 损失函数

单个样本的交叉熵代价函数的公式为:
L ( p i , y i ) = − ∑ k = 1 K y i k log ⁡ p i k L({p_{i}},y_{i})=-\sum_{k=1}^{K}y_{ik}\log p_{ik} L(pi,yi)=k=1Kyiklogpik
多分类交叉熵

多分类交叉熵就是对二分类交叉熵的扩展,在计算公式中和二分类稍微有些许区别,但是还是比较容易理解,具体公式如下所示:
L = 1 N ∑ i N L i = − 1 N ∑ i N ∑ k = 1 K y i k log ⁡ p i k L=\frac{1}{N}\sum_i^NL_i=-\frac{1}{N}\sum_i ^N\sum_{k=1}^{K}y_{ik}\log p_{ik} L=N1iNLi=N1iNk=1Kyiklogpik
其中:

  • N N N——样本数量
  • K K K——类别的数量, Y Y Y的取值集合有 { c 1 , c 2 , . . . , c K } \{c_1,c_2,...,c_K\} {c1,c2,...,cK}
  • y i k y_{ik} yik——样本 y i = c k y_i=c_k yi=ck是,取 1 1 1,不等于取 0 0 0
  • p i k p_{ik} pik——观测样本 i i i属于类别 k k k的预测概率,通过 s o f t m a x softmax softmax计算得到, p i k = P ( y i = c k ∣ x i ) = exp ⁡ ( w k ∙ x i ) ∑ k = 1 K exp ⁡ ( w k ∙ x i ) p_{ik}= P(y_i=c_k|x_i)=\frac{\exp{(w_k \bullet x_i)}}{\sum_{k=1}^K\exp{(w_k \bullet x_i)}} pik=P(yi=ckxi)=k=1Kexp(wkxi)exp(wkxi)

4 逻辑回归优缺点

  • 优点

    • 模型简单,易于解释
    • 算法容易并行,适合大数据的求解
  • 缺点

    • 不能拟合非线性数据
    • 采用何种特征组合需要一定的数据敏感性
    • 特征多了:提高模型效果,但是计算成本高,需要数据量大,否则会过拟合
    • 特征少了:有欠拟合的风险
    • 删除无用特征需要进行多重共线性判断(人力成本)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

healed萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值