首先声明:本博客的写作思路是对机器学习的一些基本算法做一些通俗性的灵活理解,以及对一些细节的进行简单剖析,还有记录本人在使用算法时的一些小经验小感想。本人一般不会对基本公式做大量推导,也不会写的太正式,这些可以在很多其他博客中找到。由于本人还是学生一枚,经验知识粗浅,还望能和朋友们参与讨论。

之前本博客简单谈过线性回归相关知识点,这次来谈一下逻辑斯蒂回归。虽然也叫回归,但是逻辑斯蒂回归是一种分类算法。它合理地应用了线性回归的优势来完成分类任务,是一种应用非常广泛的分类算法。

那么,逻辑斯蒂回归是如何完成分类任务的呢?

第一个理解角度:线性回归用于分类任务的拓展

我们知道,线性回归之所以功能强大,离不开它能将输入数据的各个维度的特征进行了有效的结合(通过分配不同的权重),使得所有特征共同协同合作作出最后的决策。但是,作出的决策是对模型的一个拟合结果,不能直接用于分类。于是,逻辑斯蒂回归使用了一个sigmod函数,将特征的线性加权结果映射到0到1之间,而这刚好可以看做是数据样本点属于某一类的概率。如果结果越接近0或者1,说明分类结果的可信度越高。

这里需要注意的一点是,逻辑斯蒂回归不仅可以处理数据线性可分的情况,还可以处理数据线性不可分的情况。当线性加权的各个特征不是简单的线性函数而是非线性函数的时候,分割面就不是一个超平面而是一个曲线或者曲面。这种情况一图以明之:

还有一个理解角度是:基于逻辑斯蒂分布的二项逻辑斯蒂回归模型

这个角度的好处是可以将逻辑斯蒂回归模型的二分类问题轻松扩展到多分类问题。二项逻辑斯蒂回归模型是一种分类模型,由条件概率分布P(Y|X)表示,形式为参数化的逻辑斯蒂分布(关于逻辑斯蒂分布以及概率分布的基础知识请看本文附录)。这里,随机变量X取值为实数,随机变量Y取值为1或0。二项逻辑斯蒂回归模型是如下的条件概率分布:

对于给定的输入实例x,按照上式可以求得P(Y=1|x)和P(Y=0|x)。逻辑斯蒂回归比较两个条件概率值的大小,将实例x分到概率值较大的那一类。

现在我们要引入一个叫做“事件的几率”这个概念。一个事件的几率是指该事件发生的概率与该事件不发生的概率的比值。如果事件发生的概率是p,那么该事件的几率是p/(1-p),该事件的对数几率或logit函数是:logit(p)=log( p/(1-p) ) 。对逻辑斯蒂回归而言,由上面表达式得:

这就是说,在逻辑斯蒂回归模型中,输出Y=1的对数几率是输入x的线性函数。或者说,输出Y=1的对数几率是由输入x的线性函数表示的模型,即逻辑斯蒂回归模型。

多项逻辑斯蒂回归

上面说到第二种角度可以轻松扩展到多分类,叫做多项逻辑斯蒂回归模型,我们现在来看一下。假设离散型随机变量Y的取值集合是{1,2,…K},那么多项逻辑斯蒂回归模型是:

对于参数估计方法仍然可以采用二分类时候的最大似然估计,后面再讲。

逻辑斯蒂回归适合应用在什么场景?

在我们的工业应用上,如果需要作出分类的数据拥有很多有意义的特征,每个特征(我们假设这些特征都是有效的)都对最后的分类结果又或多或少的影响,那么最简单最有效的办法就是将这些特征线性加权,一起参与到作出决策的过程中。比如预测广告的点击率,又比如从原始数据集中筛选出符合某种要求的有用的子数据集。

逻辑斯蒂回归还有一个优点,那就是它不是硬性地将分类结果定为0或者1,而是给出了0和1之间的概率。这就相当于对每条数据的分类结果给出了一个打分。打分越高的数据越是我们想要的。如果我们要从一个数据集中筛选出一批数据(比如100个),就只要选出打分排名前100的数据就可以了。我们也可以根据实际情况设定一个阀值,大于这个阀值的归为一类,小于这个阀值的归为另一类。

如何提高逻辑斯蒂回归的分类准确性?

个人感觉,只要特征找的准,数据量足够大,逻辑斯蒂回归将会非常好用。另外,还要注意避免过拟合。

特征选择的话,由于逻辑斯蒂回归的优点,开始的时候不用考虑各个特征之间是否有相关性,直接把能用的特征全部线性加权起来就好。经过初步训练,观察各个特征的权值,如果权值接近为0,那么就可以将这个特征看做是不相关的可以去除的特征。总结起来就是:先做加法再做减法。

解决过拟合的方法不过两种,一种是减少特征的个数;另一种是模型选择的正则化方法。正则化的话,可以参考岭回归方法。

逻辑斯蒂回归的优缺点?

优点:计算代价不高,易于理解和实现,且若采用随机梯度上升法可以在线学习;
缺点:可能容易欠拟合,分类精度不高,这个可能是因为我们无法找到足够的特征。

逻辑斯蒂回归的模型训练?

采用最大似然估计。对于二分类问题,数据属于A类的概率为H(X),那么数据属于B类的概率就为1-H(X)。模型训练就是使得训练数据的似然函数最大,于是转化为一个最优化的问题。也可以将最大似然估计理解为损失函数为对数损失函数的经验风险最小化,证明在这里,所以逻辑斯蒂回归的损失函数是对数损失函数。

逻辑斯蒂回归模型归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。从最优化的观点看,这时的目标函数具有很好的性质,它是光滑的凸函数,因此多种最优化的方法都适用,保证能找到全局最优解。在解这个最优化问题的时候,通常采用近似方法如梯度上升法和拟牛顿法。为什么不像线性回归那样直接求取解析解呢?因为这将导致计算非常复杂。其中梯度上升法可能导致计算量太大,于是用随机梯度上升法代替;牛顿法或拟牛顿法一般收敛速度更快。

随机梯度上升法需要注意两个点才能达到性能完全发挥出来。首先,控制步长的alpha最好不要设定为固定值,而是随着迭代的深入而不断变小,这样有利于减少在最优值附近的震荡。这可以将alpha设置为分母随着迭代次数不断变大的分数来实现,但注意不要让alpha最后变为零,这就需要alpha设置为分数和常数的和;其次,既然是随机梯度上升,那么每次取一个样本点的时候就要随机取,不要按照顺序取,这样才能保证合理性。最后要注意迭代次数的控制。

模型参数求解出来以后是特征权重组成的向量。其实,逻辑斯蒂回归模型可以看做由两部分组成。一部分跟线性回归一样,就是一条直线;另一部分就是sigmod函数。需要注意的是,有了权重向量我们就可以线性加权了,我们的直线就是令线性加权的结果为0的公式表达。为什么要人为定为0呢?当然是为了sigmod函数啊。这样才能使正样本的线性加权大于0,在sigmod中接近1,同样负样本的线性加权小于0,在sigmod中接近0。在SVM中,同样也是先学习一个分离超平面,然后带入分类决策函数sign中。

与其它的分类算法比较?

能和逻辑斯蒂回归进行比较的就是牛逼闪闪的线性SVM了。关于这部分请移步这里。大概意思是:直接用线性回归做分类因为考虑到了所有样本点到分类决策面的距离,所以在两类数据分布不均匀的时候将导致误差非常大;逻辑斯蒂回归回归和SVM克服了这个缺点,前者采用将所有数据采用sigmod函数进行了非线性映射,使得远离分类决策面的数据作用减弱;后者则直接去掉了远离分类决策面的数据,只考虑支持向量的影响。

附录

逻辑斯蒂分布

设X是连续随机变量,X服从逻辑斯蒂分布是指X具有下列分布函数和密度函数:

逻辑斯蒂分布的密度函数f(x)和F(x)的图形如下图所示:

其中,分布函数在x处的取值其实就是将密度函数在x以及之前负无穷的所有取值进行积分。

对逻辑斯蒂回归的一些细节剖析相关推荐

  1. 细讲逻辑斯蒂回归与朴素贝叶斯、最大熵原理的爱恨交织(长文)

    好早之前就发现逻辑斯蒂回归好像和朴素贝叶斯里面的后验概率公式还有最大似然.信息熵.交叉熵.伯努利分布.回归分析.几率(odds)等等有着千丝万缕CZFZ(错综复杂).PSML(扑朔迷离)的关系.一直感 ...

  2. 从感知机到逻辑斯蒂回归到支持向量机

    机器学习的一个重要任务是进行分类,以二分类来说,如果数据是线性可分的,我们往往会找到一个超平面WX+B对数据有良好的分类能力,二维空间便是直线kx+b,二维及以上我们称之为超平面,下面从最基本的感知机 ...

  3. 逻辑斯蒂回归(logisic regression)和SVM的异同

    逻辑斯蒂回归主要用于二分类,推广到多分类的话是类似于softmax分类.求 上述问题可以通过最大化似然函数求解. 上述问题可以采用最小化logloss进行求解. 一般地,我们还需要给目标函数加上正则项 ...

  4. 用二项逻辑斯蒂回归解决二分类问题

    逻辑斯蒂回归: 逻辑斯蒂回归是统计学习中的经典分类方法,属于对数线性模型.logistic回归的因变量可以是二分类的, 也可以是多分类的 基本原理 logistic 分布 折X是连续的随机变量,X服从 ...

  5. 【Python-ML】SKlearn库逻辑斯蒂回归(logisticregression) 使用

    # -*- coding: utf-8 -*- ''' Created on 2018年1月12日 @author: Jason.F @summary: Scikit-Learn库逻辑斯蒂回归分类算法 ...

  6. 局部加权回归、逻辑斯蒂回归、感知器算法—斯坦福ML公开课笔记3

    转载请注明:http://blog.csdn.net/xinzhangyanxiang/article/details/9113681 最近在看Ng的机器学习公开课,Ng的讲法循循善诱,感觉提高了不少 ...

  7. ML之NBLoR:利用NB(朴素贝叶斯)、LoR(逻辑斯蒂回归)算法(+TfidfVectorizer)对Rotten Tomatoes影评数据集进行文本情感分析—五分类预测

    ML之NB&LoR:利用NB(朴素贝叶斯).LoR(逻辑斯蒂回归)算法(+TfidfVectorizer)对Rotten Tomatoes影评数据集进行文本情感分析-五分类预测 目录 输出结果 ...

  8. ML之NBLoR:利用NB(朴素贝叶斯)、LoR(逻辑斯蒂回归)算法(+CountVectorizer)对Rotten Tomatoes影评数据集进行文本情感分析—五分类预测

    ML之NB&LoR:利用NB(朴素贝叶斯).LoR(逻辑斯蒂回归)算法(+CountVectorizer)对Rotten Tomatoes影评数据集进行文本情感分析-五分类预测 目录 输出结果 ...

  9. 一文“妙”解逻辑斯蒂回归(LR)算法

    一.前言 在感知器算法中,如下图 如果我们使用一个f(z)=z函数,作为激励函数,那么该模型即为线性回归.而在逻辑斯蒂回归中,我们将会采用f(z)=sigmoid(z) 函数作为激励函数,所以它被称为 ...

最新文章

  1. 【Qt】Qt发布可执行程序(打包依赖库)
  2. 【Quartz】Quartz
  3. ElasticSearch-安装以及常见错误(自己测试过yum install -y log4j* )
  4. zabbix邮件通知,短信通知配置详解
  5. Class.forName和ClassLoader有什么区别
  6. filter 函数 map 函数 reduce函数 介绍
  7. 不加载执行js_这些你不知道的前端隐藏加载执行JavaScript
  8. 不是吧?!程序员月入10w,原因竟然是这个......
  9. javascript call 详细解答与实践
  10. 永磁同步电机转子磁链_永磁同步电机转子初始位置检测、增量式光电编码器对位调零思路解析...
  11. android studio for android learning (三) 我的第一个APP
  12. 基于灰度世界、完美反射、动态阈值等图像自动白平衡算法的原理
  13. C语言:51单片机看这一篇就够了
  14. 计算机网络设备子系统,关于设备间子系统的几点知识学习
  15. 什么软件可以测试手长,手相测试扫一扫软件
  16. 教你使用Box2d制作用蜡笔手绘物体的效果(一)
  17. Appium + IOS 自动化环境搭建教程(实践+总结+踩坑)
  18. Pytorch中设置哪些随机数种子,才能保证实验可重复
  19. 27.some company's Spi Flash chip replace altera epcsxxx
  20. python django怎么读_怎么读django

热门文章

  1. Android实战(四)——正能量日报
  2. emgucv下载与安装
  3. HSIC and MMD
  4. 大数据未来发展怎么样?
  5. 必读论文 | 生成对抗网络经典论文推荐10篇
  6. 史上最全的ubuntu服务器搭建环境教程~~~
  7. 潜入浅出--通信中的频带利用率,以MASK.MPSK作为例子
  8. eclipse开发android入门学习
  9. illustrator插件-拼版功能开发-自动拼版-js脚本开发-ai插件
  10. 光伏MPPT电路效率对比实测