给定多元输入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. svn版本信息自动更新到源代码
  2. Dijkstra's algorithm (C++)
  3. idea创建Package时出现包名累加,而不是树形结构解决方法
  4. (转)学习密度与专注力
  5. 什么是协议转换器?协议转换器的定义
  6. C++primer 第 3 章 字符串、向量和数组 3.1 命名空间的using声明 3.2标准库类型string
  7. 中国500多名理工科研究生被美国拒签!美国「制裁清单」影响开始深入校园!...
  8. AI又破案!衢州城市大脑这回抓了一个抢劫犯
  9. java list 交集_java两个List的交集,并集
  10. 使用PyQt4和twisted写的局域网聊天室(2)
  11. echart折线图删除_用Echart创建简单的折线图
  12. fseek linux 大文件_上传大文件
  13. ios懒人笔记应用源码
  14. 用access建立一个试题库_access试题库_答案
  15. 泛微mysql密码_泛微ecology OA数据库配置信息泄露
  16. 常见6种视频文件格式的优缺点归纳
  17. erpc的设计和工作机制
  18. 台式计算机mac地址查询,计算机mac地址查询
  19. [Spark调优]--TaskSetManager的有效Locality Levels
  20. Sending build context to Docker daemon 解决办法

热门文章

  1. Android系统简介
  2. 超微服务器型号,超微服务器主机配置raid
  3. 解决树莓派程序中的中文乱码问题
  4. matlab绘制不同角度的抛体运动
  5. Android 免root抓包
  6. 2021物理化学实验4:液体饱和蒸气压的测定
  7. 全体起立!广州大学数据库综合设计实验
  8. flink连接kafka报错
  9. dom4j解析XML实例
  10. spring3+hibernate4配置连接池C3P0