“文章原创,转载请注明出处”
在数据科学系列的开头,花了三篇介绍了线性回归。线性回归模型应该是定量分析中最常用的一种统计分析方法。但是线性回归处理数据时,要求因变量是连续型变量。但是很多时候,需要处理的数据,其因变量并不是连续的。像性别、对错等等,这种离散的因变量,一般称为分类响应变量。
在机器学习的介绍篇中,已经介绍了监督学习与非监督学习。在监督学习中,最主要的两类问题,一个就是回归,另一个就是分类。而Logistic回归就是处理二元分类的一种方法,当然其也存在自身的问题,这个后面再讲。
Sigmoid函数
要了解Logistic回归,首先需要了解一下Sigmoid函数。为什么呢?
一般来说,我们会定义二元分类变量的输出为0和1,这种函数叫做单位阶跃函数,也称Heaviside step function。这个函数的特点就是其取值可以从0突变到1,反之也可。学过数分的话就知道,这种函数有时候会非常难以处理,因为带跳突变,导致了不可微不可导。在这里,就可以借助Sigmoid函数,因为这个函数可以近似地描述单位阶跃函数的特点。首先看看Sigmoid函数:
简单看一下这个函数,当 y=0 时, p=0.5 ;当 y 变大,趋近于无穷时, y 趋近1;反之, y 趋近0。而且,这种趋近的速度是非常快的。正是因为这个趋近速度非常快,我们可以使用Sigmoid函数来处理这边的单位阶跃函数。
Logistic回归
利用Sigmoid函数可以将单位阶跃函数做个近似,而Sigmoid函数是连续的,那么就可以利用之前的线性回归来建立模型。
令 y=Xβ ,又 p=11+exp(−y) ,变形可得Logistic回归模型:
上述的 logit(p) 称为 logit 变换,此时 p 就是响应变量, X 就是自变量。到这,我们就可以利用线性模型对参数进行估计了。
统计中的解释
这里面的 p 除了利用Sigmoid函数来解释之外,还可以利用统计中的二项分布来解释,而且从某种角度来说,这个解释会更便于理解。试想,我们这边需要处理的二元分类变量就是0和1。我们考虑0就是“不发生”,1就是“发生”,那么我们可以将前面的 p 理解成发生的概率。通过对已知数据建立模型,估计出参数,我们就可以利用模型去预测在不同的自变量条件下,“发生”的概率是多大,从而达到一个分类的目的。
从这边的分析就可以看到,Logistic回归的缺点:那就是欠拟合,会导致分类的精度下降。
R语言实现
因为这个属于线性回归的一种变形,所以求解的方式直接借用线性回归即可。
当然,也存在其它的方法。因为Logistic回归是属于广义线性回归模型的,在R中有专门处理广义线性模型的函数glm
:
这里处理的方式中,利用了连接函数(link=logit),感兴趣的话可以找找广义线性模型的内容看看,当然,以后如果介绍统计模型的话,这个肯定也是必讲得内容。
转自:http://jackycode.github.io/blog/2014/04/27/logistic-regression/