逻辑回归(分类算法)

1.什么是逻辑回归

在线性模型中,处理的因变量都是数值型区间变量,建立的模型描述是因变量的期望与自变量之间的线性关系。比如常见的线性回归模型: 

                

逻辑回归实验报告R语言_二分类

而在采用回归模型分析实际问题中,所研究的变量往往不全是区间变量而是顺序变量或属性变量,比如二项分布问题。通过分析年龄、性别、体质指数、平均血压、疾病指数等指标,判断一个人是否换糖尿病,Y=0表示未患病,Y=1表示患病,这里的响应变量是一个两点(0-1)分布变量,它就不能用h函数连续的值来预测因变量Y(只能取0或1)。
总之,线性回归模型通常是处理因变量是连续变量的问题,如果因变量是定性变量,线性回归模型就不再适用了,需采用逻辑回归模型解决。

逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法

2.逻辑回归的推导

  1.Sigmoid 函数:(z值就是预测值)

    Logistic Regression虽然名字里带“回归”,但是它实际上是一种分类方法,用于两分类问题(即输出只有两种)。根据第二章中的步骤,需要先找到一个预测函数(h),显然,该函数的输出必须是两个值(分别代表两个类别)

    所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:

            

逻辑回归实验报告R语言_Soft_02

   二分类问题的概率与自变量之间的关系图形往往是一个S型曲线,如图所示,采用的Sigmoid函数实现:

        

逻辑回归实验报告R语言_多分类_03

逻辑回归实验报告R语言_多分类_04

  

  2.推导

    

逻辑回归实验报告R语言_多分类_05

  3.得到似然函数,和对数似:

逻辑回归实验报告R语言_多分类_06

  

逻辑回归实验报告R语言_逻辑回归实验报告R语言_07

  4.求导计算

  

逻辑回归实验报告R语言_多分类_08

  5.求解(通过参数的变化得到最优解):

  

逻辑回归实验报告R语言_多分类_09

针对多分类

LR是一个传统的二分类模型,它也可以用于多分类任务,其基本思想是:将多分类任务拆分成若干个二分类任务,然后对每个二分类任务训练一个模型,最后将多个模型的结果进行集成以获得最终的分类结果。一般来说,可以采取的拆分策略有:

one vs one策略

  假设我们有N个类别,该策略基本思想就是不同类别两两之间训练一个分类器,这时我们一共会训练出逻辑回归实验报告R语言_逻辑回归实验报告R语言_10种不同的分类器。在预测时,我们将样本提交给所有的分类器,一共会获得N(N-1)个结果,最终结果通过投票产生。

one vs all策略

  该策略基本思想就是将第i种类型的所有样本作为正例,将剩下的所有样本作为负例,进行训练得到一个分类器。这样我们就一共可以得到N个分类器。在预测时,我们将样本提交给所有的分类器,一共会获得N个结果,我们选择其中概率值最大的那个作为最终分类结果。

 softmax回归

  softmax是LR在多分类的推广。与LR一样,同属于广义线性模型。什么是Softmax函数?假设我们有一个数组A,逻辑回归实验报告R语言_二分类_11表示的是数组A中的第i个元素,那么这个元素的Softmax值就是

            

逻辑回归实验报告R语言_逻辑回归实验报告R语言_12

也就是说,是该元素的指数,与所有元素指数和的比值。那么 softmax回归模型的假设函数又是怎么样的呢?

          

逻辑回归实验报告R语言_Soft_13

由上式很明显可以得出,假设函数的分母其实就是对概率分布进行了归一化,使得所有类别的概率之和为1;也可以看出LR其实就是K=2时的Softmax。在参数获得上,我们可以采用one vs all策略获得K个不同的训练数据集进行训练,进而针对每一类别都会得到一组参数向量逻辑回归实验报告R语言_多分类_14。当测试样本特征向量

逻辑回归实验报告R语言_多分类_15

输入时,我们先用假设函数针对每一个类别逻辑回归实验报告R语言_二分类_16估算出概率值

逻辑回归实验报告R语言_Soft_17

。因此我们的假设函数将要输出一个K维的向量(向量元素和为1)来表示K个类别的估计概率,我们选择其中得分最大的类别作为该输入的预测类别。Softmax看起来和one vs all 的LR很像,它们最大的不同在与Softmax得到的K个类别的得分和为1,而one vs all的LR并不是。

softmax的代价函数

  类似于LR,其似然函数我们采用对数似然,故:

    

逻辑回归实验报告R语言_Soft_18

加入逻辑回归实验报告R语言_多分类_19正则项的损失函数为:

    

逻辑回归实验报告R语言_Soft_20

此处的

逻辑回归实验报告R语言_二分类_21

为符号函数。对于其参数的求解过程,我们依然采用梯度下降法。

softmax的梯度的求解

  正则化项的求导很简单,就等于

逻辑回归实验报告R语言_多分类_22

,下面我们主要讨论没有加正则项的损失函数的梯度求解,即      

逻辑回归实验报告R语言_Soft_18

的导数(梯度)。为了使得求解过程看起来简便、易于理解,我们仅仅只对于一个样本(x,y)情况(SGD)进行讨论,

    

逻辑回归实验报告R语言_二分类_24

此时,我们令

    

逻辑回归实验报告R语言_多分类_25

可以得到

    

逻辑回归实验报告R语言_逻辑回归实验报告R语言_26

故:

逻辑回归实验报告R语言_二分类_27

所以,正则化之后的损失函数的梯度为

    

逻辑回归实验报告R语言_多分类_28

然后通过梯度下降法最小化 

逻辑回归实验报告R语言_二分类_29

,我们就能实现一个可用的 softmax 回归模型了。

多分类LR与Softmax回归

  有了多分类的处理方法,那么我们什么时候该用多分类LR?什么时候要用softmax呢?

总的来说,若待分类的类别互斥,我们就使用Softmax方法;若待分类的类别有相交,我们则要选用多分类LR,然后投票表决。

总结:

逻辑回归实验报告R语言_Soft_30

逻辑回归实验报告R语言_多分类_31

 

 

LR喜欢类别行特征:

     对于数值型特征的处理:有些数值类型的特征范围特别大。比如每一天的点击量特征可能在0到几万等。其他有些特征可能只在0到1之间。这样在运算的时候,由于两个特征数值相差比较大,那么模型就会被数值范围特别大的特征带偏。

     处理方法:方法1. 归一化。方法     2.分桶(特征离散化),好处:特征更鲁棒(比如某一个值是异常值,特别大,但是因为分桶了,就可以减弱这个异常带来的影响), 引入非线性。

     对于维度特别高的数据,比如几千万的特征,神经网络处理不了,但是逻辑回归可以很轻松的应对。