MachineLearning:三、聊聊逻辑回归
来源:互联网 发布:域名被通信局撤销 编辑:程序博客网 时间:2024/06/14 05:22
在Machine Learning中,逻辑斯蒂回归(Logistic Regression)是十分经典的方法,简称LR,虽然名字叫回归,但是这是线性分类模型而不是回归模型。这里面涉及到一些知识点,包括极大似然估计,损失函数,梯度下降,正则化等
这篇文章的主要目的,就是通过理论与实践相结合的方式讲解LR模型,在讲解的过程中,加深对LR的理解、相关概念的梳理和应用。这篇文章中需要一些基础的数学知识,如果我没有讲到的请自行百度。这篇文章以《统计学习方法》和AndrewNg的视频为基础,加上《PR&MR》以及网上的资料、论文整理而成。本人能力有限,细节处理上难免有不严谨的地方或者叙述不清的地方,请留言或者发邮件wang_qian010@163.com
逻辑斯蒂(logistic)函数
逻辑斯蒂函数
在数学界有各种各样的分布,比如Gamma分布,二项分布,高斯分布等。利用这些分布的性质,可以解决很多的问题。这里将介绍一种函数,叫逻辑斯蒂函数或逻辑斯蒂曲线,这是一种是一种S型曲线。
定义 设
式中,
逻辑斯蒂分布的密度函数
看了逻辑斯蒂分布,我有两个疑问:
- 这个分布是怎么发现?
- 在机器学习中什么用?
上网查了一下,并没有找到这个分布是怎么发现的。最早的记录是1833年,菲尔许尔斯特使用逻辑斯蒂曲线描述了人口增长速度与人口密度的关系,把数学方法引入生态学。我大一的时候参加一个数学建模入门赛的时候,就是拟合了逻辑斯特函数,模型太简单,所以就很傻很天真的看着别人载比赛喽。
到了十九世纪末,法国的社会学家塔尔德观察到,一种新思想(就比如和谐社会)的采纳率随着时间的变化遵循一种S型曲线,也有人说塔尔德实际是提出了经济增长的S型曲线。
随后的一段时间,S曲线在各个行业都大杀四方,从物种迁移数量增长到工程进展,从城市化进程到经济学的前景理论等等。
随后可能有一位天才,正在研究分类问题,猛然看到了S曲线,突然想到,咦,这个曲线(如上右图)左边随着x的变小F(x)趋近于0,右边随着想的增大F(x)趋近与一个定值,不是正好可以用来做做二分类嘛。(仅供娱乐,如有雷同纯属巧合)
二项逻辑斯蒂回归模型
现在我们仅仅考虑二分类问题。就拿AndrewNG的讲义里面的例子,如下图所示,x表示数据点的特征——肿瘤的大小,Y为观测值——是否是恶性肿瘤。通过构建线性回归模型,如h θ (x)所示,构建线性回归模型后,即可以根据肿瘤大小,预测是否为恶性肿瘤h θ (x)≥.05为恶性,h θ (x)<0.5为良性。
如果上述问题使用线性分类器,效果并不好(如上图),分类效果可以用差来形容。然后你再看着这个图,是不是感觉观测值类似第一幅图?
在解决上诉问题之前,接下来我们先看看逻辑回归模型:
将逻辑回归模型定义为:
这里
逻辑回归可以这么理解,考虑对输入X进行分类的线性函数
换一个角度,逻辑斯蒂回归模型的特点就是已经事情的发生概率是指该只见发生的概率与该事件不发生的概率的比值。一个事件的几率是p,那么该事件发生的几率是
经过简单推导,就可以得到标准的逻辑回归模型。
定义(逻辑斯蒂回归模型) 二项逻辑斯蒂回归模型是如下的条件概率分布:
逻辑斯特回归模型也可以说是建立在条件概率密度
到这里是不是感觉后验概率
模型参数估计
对于上面患病问题,对给定的数据集
这里使用极大似然估计求解,极大似然估计的理解是根据现有数据,选择使模型得到现有训练集可能性最大的参数。参数估计我就直接贴出《统计学习方法》中的原文。
上面列出了将逻辑回归问题通过极大似然的方法转换成了最优化的问题,最优化问题有多种解决方案,这里给出使用梯度下降的完整的逻辑回归算法如下,关于最优化问题的求解请链接到最优化问题(待更新))
正则化
在模型参数估计这,已经将问题变为目标函数的最优化问题。为了让降低模型的复杂度,更好的泛化,可以在使用梯度下降的时候,添加一个正则项。二分类问题的L2乘法回归最小化如下(正则化链接-等待更新):
同样,L1正则化逻辑回归解决的优化问题如下:
多分类问题
在实际应用中,我们常常碰见多分类问题,我们如何将逻辑回归应用到上面呢?其实这里可以这样想,N分类问题,对于每一类都可以将他转换为二分类问题:是该类和非该类,每一类的逻辑模型是:
在进行分类的时候,对每一个输入的特征向量求的该类的该类,取概率最大的分类。
逻辑回归实现
请看逻辑回归实现
参考资料
[1]《统计学习方法》
[2] AngrewNG 《机器学习》
[3] Christopher M. Bishop: Pattern Recognition and Machine Learning, chapter4.3
[4] 听课笔记(第十讲): 逻辑斯蒂回归 (台大机器学习)
[5] 逻辑回归模型(Logistic Regression, LR)基础
[6] logistic regression
- MachineLearning:三、聊聊逻辑回归
- Machine Learning:三、聊聊逻辑回归
- MachineLearning:四、逻辑回归in python
- 逻辑回归(三)
- MachineLearning—Logistic Regression(四)-逻辑回归应用于手写数字识别
- 三、线性回归和逻辑回归
- 分类和回归(三)-逻辑回归
- 机器学习之三逻辑回归
- Mahout学习三--逻辑回归预测
- 机器学习练习三:逻辑回归
- 机器学习笔记(三)----逻辑回归
- Pytorch学习笔记(三)线性回归与逻辑回归
- MachineLearning-监督学习之线性回归
- MachineLearning—Logistic Regression(三)
- 逻辑回归
- 逻辑回归
- 逻辑回归
- 逻辑回归
- storm初学者容易遇到的几个问题
- sed 如何删除一行
- java eclipse插件OpenExplorer
- 一、分布式文件系统fastDFS-设计原理
- Apache中的poi包中的XSSFWorkbook与HSSFWorkbook的区别
- MachineLearning:三、聊聊逻辑回归
- Tomcat软编码
- SetInterval与SetTimeout区别
- requests 使用代理验证
- MySQL 日常小结
- 为什么java接口中可以有default或者static修饰的方法?
- 一点累积----JAVA(1)----for-each 形式
- day11——python 多线程之线程锁
- 工作流UserTask的使用