给定多元输入x=(x1,x2,...,xn)T\textbf{x}=(x_1,x_2,...,x_n)^{T},让预测其可能的输出yy。遇到此类问题,稍微学习过高等数学或统计分析的人,大脑中首先闪现的方法肯定是线性回归!找到如下的关系式:

y=f(x)=wTx+w0,其中w=(w1,w2,...,wn)

y=f(x)=\textbf{w}^{T}\textbf{x}+w_{0},其中\textbf{w}=(w_1,w_2,...,w_n)

那么任何时候给定任何值,都可以轻而易举地得到对应的输出。虽说线性回归分析简单直观、易于理解,但是如何确定参数w\textbf{w}和w0w_0却是让人头疼的问题。常用的方法就是提前观察到一组输入-输出值:(x1,y1)(\textbf{x}_1,y_1)、(x2,y2)(\textbf{x}_2,y_2)、… 、(xn,yn)(\textbf{x}_n,y_n),再利用优化问题

argminw,w01n∑i=1nL(f(xi),yi)

\arg\min_{\textbf{w},w_0} \frac{1}{n}\sum^{n}_{i=1}L(f(\textbf{x}_i),y_i)
确定参数 w\textbf{w}和 w0w_0( 监督学习)。知道 w\textbf{w}和 w0w_0后就可以用得到的回归关系式愉快的玩耍了。

可回归与分类又有什么关系呢?其实分类问题也是预测问题:给定样本对象值,预测其可能属于的类别。既然同样是预测问题,那便可以用回归的思想来进行建模。不过稍微深入的思考一下便会发现,直接利用线性回归关系进行分类预测是不可取的。因为一般分类问题的可能输出都是离散有限的,而线性回归的输出域却是(−∞,∞)(-\infty,\infty)。在知道了输入对象的值后,明显无法清晰直观的通过回归关系进行类别判定。那是不是回归分析就不能用于预测分类,答案明显是否定的。

虽说线性回归无法直接用于分类预测,但可以对其加层映射:将连续无穷输出映射到指定的有限输出。逻辑回归(Logistic Regression, LR)便是基于此思想在线性回归的结果上加上一个逻辑函数,将连续输出映射到[0,1][0,1]输出。逻辑回归是统计学习中的经典分类方法,通过历史数据的表现对未来结果发生的概率进行预测分类,概率大于一定阈值,输出为1,否则输出为0。

一、逻辑函数

在展开描述逻辑回归之前,先隆重介绍一下逻辑函数。设xx是连续随机变量,则其对应的逻辑函数的数学形式是:

g(x)=11+exp(−x).

g(x)=\frac{1}{1+\exp(-x)}.
g(x)g(x)的图形是一条S形曲线,该曲线以点(0,12)(0,\frac{1}{2})为中心对称,即满足:

g(−x)−12=−g(x)+12.

g(-x)-\frac{1}{2}=-g(x)+\frac{1}{2}.
曲线在中心 (0,12)(0,\frac{1}{2})附近增长速度较快,在两端增长速度较慢。具体的形状如下图所示:

二、逻辑回归

利用逻辑函数映射的逻辑回归主要被用于二分类问题(多分类问题会在另外一篇博客中介绍),由条件概率分布P(x|y)P(\textbf{x}|y)表示。其中x\textbf{x}为mm维的取值为实数的随机变量,而随机变量yy的取值被限定为0或1。具体的表达形式是:

P(y=1|x)=exp(wTx+w0)1+exp(wTx+w0),

P(y=1|\textbf{x})=\frac{\exp(\textbf{w}^{T}\textbf{x}+w_{0})}{1+\exp(\textbf{w}^{T}\textbf{x}+w_{0})},

P(y=0|x)=11+exp(wTx+w0),

P(y=0|\textbf{x})=\frac{1}{1+\exp(\textbf{w}^{T}\textbf{x}+w_{0})},

假定现在给出新的样本x\textbf{x},按照上面两个等式可以分别计算出P(y=1|x)P(y=1|\textbf{x})和P(y=0|x)P(y=0|\textbf{x}),如果P(y=1|x)≥P(y=0|x)P(y=1|\textbf{x})\geq P(y=0|\textbf{x}),则样本x\textbf{x}被分到y=1y=1类,如果P(y=1|x)<P(y=0|x)P(y=1|\textbf{x})

,则样本x\textbf{x}被分到y=0y=0类。

三、模型参数估计

如同线性回归一样,要想利用逻辑进行分类预测,需要先获得参数w\textbf{w}和w0w_{0}的值,此时便需要先定义一个评判指标,接下来通过不断地优化此指标以得到参数w\textbf{w}和w0w_{0}。

对于逻辑回归分类问题,可以利用常见的损失函数(Loss function)来构建成本函数(Cost function)作为优化目标。不过0-1损失函数或平方损失函数虽说可以很好地表征其效果,不过二者的结果均是离散的,无法通过有效的优化方法求得结果。

考虑一下逻辑回归的输出定义,可以看到其是以条件概率作为类别的评判准则,那么可以利用极大似然估计法估计模型参数。极大似然原理的直观想法是,一个随机试验如有若干个可能的结果AA,BB,CC,…\ldots ,若在一次试验中,结果AA出现了,那么可以认为实验条件对AA的出现有利,也即出现的概率P(A)P(A)较大。

为简化后续的描述,对于单个样本对象(xi,yi)(\textbf{x}_i,y_i)先做如下设定:

P(y=1|xi)=p(xi),则P(y=0|xi)=1−p(xi).

P(y=1|\textbf{x}_i)=p(\textbf{x}_i),则P(y=0|\textbf{x}_i)=1-p(\textbf{x}_i).

将上面两个等式进行合并,可表述为:

P(yi|xi)=(p(xi))yi(1−p(xi))1−yi.

P(y_i|\textbf{x}_i)=(p(\textbf{x}_i))^{y_i}(1-p(\textbf{x}_i))^{1-y_i}.

因此对于给定的训练集T={(x1,y1),(x2,y2),…,(xn,yn)}T=\{(\textbf{x}_1,y_1),(\textbf{x}_2,y_2),\ldots,(\textbf{x}_n,y_n)\},似然函数为:

L(w,w0)=∏i=1nP(yi|xi)=∏i=1n(p(xi))yi(1−p(xi))1−yi

L(\textbf{w},w_{0})=\prod_{i=1}^{n}P(y_i|\textbf{x}_i)=\prod_{i=1}^{n}(p(\textbf{x}_i))^{y_i}(1-p(\textbf{x}_i))^{1-y_i}

通过求解如下优化问题,便可挑选参数w\textbf{w}和w0w_{0}的极大似然估计值w¯\bar{\textbf{w}}和w¯0\bar{w}_{0}:

w¯,w¯0=argmaxw,w0L(w,w0)=argmaxw,w0∏i=1nP(yi|xi).

\bar{\textbf{w}},\bar{w}_{0}=\arg\max_{\textbf{w},w_{0}} L(\textbf{w},w_{0})=\arg\max_{\textbf{w},w_{0}} \prod_{i=1}^{n}P(y_i|\textbf{x}_i).

问题是如何求解上面的优化问题才能把参数w\textbf{w}和w0w_{0}的极大似然估计w¯\bar{\textbf{w}}和w¯0\bar{w}_{0}求出。更多场合是利用lnL(w,w0)\ln L(\textbf{w},w_{0})是L(w,w0)L(\textbf{w},w_{0})的增函数,故lnL(w,w0)\ln L(\textbf{w},w_{0})与L(w,w0)L(\textbf{w},w_{0})在同一点处达到最大值,于是对似然函数L(w,w0)L(\textbf{w},w_{0})取对数对数似然函数为:

lnL(w,w0)=∑i=1nyiln(p(xi))+(1−yi)ln(1−p(xi)).

\ln L(\textbf{w},w_{0})=\sum_{i=1}^{n}y_i\ln (p(\textbf{x}_i))+(1-y_i)\ln(1-p(\textbf{x}_i)).

这样问题就变成以对数似然函数为目标函数的最优化问题,解如下方程求得极大值,对应的解便是w\textbf{w}和w0w_{0}的估计值:

∂lnL(w,w0)∂w=0和∂lnL(w,w0)∂w0=0.

\frac{\partial \ln L(\textbf{w},w_{0})}{\partial \textbf{w}}=0 和\frac{\partial \ln L(\textbf{w},w_{0})}{\partial w_0}=0.

假设已经求得w\textbf{w}和w0w_{0}的极大似然估计值为w¯\bar{\textbf{w}}和w¯0\bar{w}_{0},那么学习到的逻辑回归模型为:

P(y=1|x)=exp(w¯Tx+w¯0)1+exp(w¯Tx+w¯0),

P(y=1|\textbf{x})=\frac{\exp(\bar{\textbf{w}}^{T}\textbf{x}+\bar{w}_{0})}{1+\exp(\bar{\textbf{w}}^{T}\textbf{x}+\bar{w}_{0})},

P(y=0|x)=11+exp(w¯Tx+w¯0),

P(y=0|\textbf{x})=\frac{1}{1+\exp(\bar{\textbf{w}}^{T}\textbf{x}+\bar{w}_{0})},

四、逻辑回归优缺点

1. 优点:预测结果是界于0和1之间的概率,训练简单、容易使用和解释;可以适用于连续性和类别性自变量。对于类别形自变量,只需要进行数值转换即可,如收入、中、低→\to0、1、2,性别男、女→\to0、1;分类时计算量非常小,速度很快,存储资源低;对多重共线性问题,可以结合正则化来解决。

2. 缺点:当特征空间很大时,逻辑回归的性能不是很好,容易欠拟合;只能处理两分类问题(在此基础上衍生出来的Softmax可以用于多分类),且必须线性可分;对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能导致较弱的一个自变量回归符号不符合预期,符号被扭转。​需要利用因子分析或者变量聚类分析等手段来选择代表性的自变量,以减少候选变量之间的相关性。

五、逻辑回归R实战

基于IRIS数据集进行测试,不过逻辑回归只支持二分类,因此训练时选取1-100的样本,其中1-50条样本属于setosa类,剩下的50条样本属于versicolor类。

data_sample <- iris[1:100,];
m <- dim(data_sample)[1]  #获取数据集记录条数
val <- sample(m, size =round(m/3), replace = FALSE, prob= rep(1/m, m))  #抽样,选取三分之二的数据作为训练集。
iris.learn <- data_sample[-val,]  #选取训练集
iris.valid <- data_sample[val,]   #选取验证集
logit.fit <- glm(Species~.,  family = binomial(link = 'logit'),  data = iris.learn);  real_sort <- iris.valid$Species;  #测试数据集实际类别
prdict_res <- predict(logit.fit, type="response", newdata=iris.valid);  #预测数据产生概率
res1 <- data.frame(predict=prdict_res, real=real_sort);  #查看数据产生概率和实际分类的关系
res2 <- data.frame(predict=ifelse(prdict_res>0.5, "virginica", "versicolor"), real=real_sort);  #根据数据产生概率生成预测分类
res3 <- table(data.frame(predict=ifelse(prdict_res>0.5, "virginica", "versicolor"), real=real_sort)); 

参考资料

  1. http://blog.sina.com.cn/s/blog_5dd0aaa50102vjq3.html 逻辑回归优缺点
  2. https://item.jd.com/10975302.html 统计学习方法 李航
  3. http://blog.csdn.net/comaple/article/details/45062489 R语言数据分析系列之九 - 逻辑回归

机器学习算法-逻辑回归(LR)相关推荐

  1. 机器学习算法——逻辑回归(LR)

    LR是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义.模型清晰,背后的概率学经得住推敲.它拟合出来的参数就代表了每一个特征(feature)对结果的影响. Logisti ...

  2. 机器学习算法--逻辑回归原理介绍

    一.逻辑回归基本概念 1. 什么是逻辑回归 逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏. Log ...

  3. Python机器学习算法 — 逻辑回归(Logistic Regression)

    逻辑回归--简介 逻辑回归(Logistic Regression)就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型 ...

  4. 机器学习算法(逻辑回归)-Lect02

    参考资料: 周志华.<机器学习> 李航.<统计学习方法> cs229 notes 吴恩达机器学习-网易云课堂 1.Logistic回归损失函数的极大似然推导:西瓜书公式3.27 ...

  5. 从零开始数据科学与机器学习算法-逻辑回归-04

    Logistic Regression 更多的是从概率的层面进行建模,但是我们实际应用中,更多的是用在二元分类型的问题 案例: 列子:如上图所示:有两类数据 方形=0 圆形=1 坐标轴 类型: X1 ...

  6. 【机器学习算法笔记系列】逻辑回归(LR)算法详解和实战

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

  7. 逻辑回归二分类算法python_机器学习第七周--二分类算法逻辑回归

    一.Logistic分类算法 逻辑回归(Logistic Regression, LR)是传统机器学习中的一种分类模型,由于算法的简单和高效,解释性好以及容易扩展等优点,被广泛应用于点击率预估(CTR ...

  8. python机器学习案例系列教程——逻辑分类/逻辑回归LR/一般线性回归(softmax回归)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 线性函数.线性回归 参考:http://blog.csdn.net/luanpeng825485697/article/details ...

  9. Machine Learning | (4) Scikit-learn的分类器算法-逻辑回归

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

最新文章

  1. Linux 系统 文件锁 fcntl函数详解
  2. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 )
  3. IO模型(select, poll, epoll的区别和原理)
  4. 车载电脑中控软件_ 车载手机支架怎么选?教你3招,开车的时候方便快捷
  5. 怎么样才能更高效的学习区块链
  6. numpy.ndarray索引/切片方式
  7. java jar killed_我的Java应用程序被OOMKilled了,原因竟是这样?
  8. jquery.zclip轻量级复制失效问题
  9. ZOJ 3985 2017CCPC秦皇岛 E:String of CCPC
  10. php数组用中文作为键
  11. JS中改变this指向的两种方法
  12. 编写第一个操作WORD文档的应用程序
  13. linux中脚本都是.sh吗,Linux跑脚本用sh和./有什么区别?
  14. 治愈系书单|林曦《只生欢喜不生愁》
  15. 路由器被蹭网后,我有被黑的风险吗?
  16. java返回当年的天数_获取Java中当年剩余的天数
  17. 内推贴 || Marvell 2021校园招聘火热开启
  18. Spring Boot 实现苹果支付同步验证
  19. 证实!对华28nm以下大硅片出口管制已纳入瓦森纳协定
  20. 计算机网络基础北邮,北邮 大三下 计算机网络技术实践 实验五_图文

热门文章

  1. STM32CubeMAX 安装 2020年3月26日
  2. 关于罗马数字转整数的实现
  3. NetBeans的学习资源
  4. JSteg信息隐藏算法
  5. 关于网站标签页的logo设置
  6. 阿里云服务器设置swap交换分区
  7. AWS免费套餐避坑攻略:查看账户下所有region的资源,及时关停不需要的服务
  8. oeasy教您玩转vim - 27 - 文件类型
  9. 【故事】程序员到底是干什么的
  10. 微商客源如何引流?坚持操作喜马拉雅日引50+粉丝