机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)
逻辑回归(Logistic Regression)是一种经典的线性分类算法。逻辑回归虽然叫回归,但是其模型是用来分类的。
让我们先从最简单的二分类问题开始。给定特征向量x=([x1,x2,...,xn])T以及每个特征的权重w=([w1,w2,...,wn])T,阈值为b,目标y是两个分类标签---1和-1。为了便于叙述,把b并入权重向量w,记作
,特征向量则扩充为
。(为了简便的缘故,下面还是都写成w和x)
事实上,我们已经学习过一种分类算法了。在《机器学习---感知机(Machine Learning Perceptron)》一文中,我们知道感知机是将线性方程式嵌套入符号函数,其对目标y的估计是:
。如果样本的wx>0,那么估计其目标是1 ,如果样本的wx<0,那么估计其目标是-1。如下图所示,可以看出sign函数其实是一种单位阶跃函数。这样的分类是比较粗糙的,因为你不知道分类阈值0附近的情况。比如说如果训练集的类别不均衡,那么分类平面肯定会向类别多的那一边靠拢,如果我们想要结果比较“公正”,就需要根据情况设定不同的分类阈值。此外,感知机解决的是“硬分类”问题,即分类结果就是目标函数的决策结果,而另外一类称为“软分类”问题,即目标函数输出的是不同类别对应的概率,最后的分类结果为概率最大的类。显然,我们需要不同的算法来解决“软分类”问题。因此,最好能把阶跃函数变成连续函数,把线性方程映射到这个函数上,并且能让这个函数上的每个点代表分类概率。
(注:wx是特征向量和权重向量的点积/内积,wx=w1x1+w2x2+...+wnxn)
阶跃函数(step function):

有人想到正态分布的累积分布函数符合这个要求,其函数上的点代表累积概率,比如P(y=1|x<value),其对应的模型被称之为probit回归模型。但是由于这个函数比较复杂(
),而且不是太容易解释,这限制了它的应用。
因此,我们最好能找到和正态分布的累积分布函数近似的函数。又有人发现逻辑分布的累积分布函数和正态分布的累积分布函数几乎一样,并且逻辑分布的累积分布函数比较简单(
),而且函数上的点可以用来表示概率。
正态分布的累积分布函数和最佳逻辑分布的累积分布函数:

人们选择使用标准逻辑分布的累积分布函数作为映射函数,其在学术上被称为sigmoid函数。
sigmoid函数:


把线性组合wx代入sigmoid函数就得到逻辑函数(logistic fuction),其对应的模型叫logit回归模型,也叫logistic回归模型:

逻辑函数上的点对应的就是给定特征x,目标为1的条件概率:

分类阈值可以根据实际情况选择。假如我们选择0.5作为分类阈值来划分,那么如果样本f(x)>0.5,我们估计其目标为1,如果样本f(x)<0.5,我们估计其目标为-1。如果把对y的估计写成和感应机一样的形式,那就是
。
在接下去之前我们先思考几个问题:
1. sigmoid函数是怎么得来的?
因为目标y是两个分类标签,因此我们假设y服从伯努利分布(y不是0就是1),y=1的概率为p,那么目标y的概率质量函数就是:
,将其写成条件概率表达式就是:
。

而指数分布族的一般表达式为:
。
如果令:θ=p,h(x)=1,T(x)=x,η(θ)=lnp/(1−p),A(θ)=−ln(1−p)。那么,伯努利分布就属于指数分布族。
从上面可知:
,因此:
。
最后可以推导出:
。
此外,sigmoid函数很自然地出现在贝叶斯法的后验概率(二分类问题)表达式里:

2. 为什么逻辑回归称作回归?
除去历史的原因,是因为逻辑回归本质上是一个线性回归模型,其线性组合表示分类为1的对数几率。
什么是几率?人们用事件发生与不发生的比值来表示事件发生的几率(odds)。假设事件发生的概率是 p ,那么事件发生的几率(odds)就是 p/(1-p) 。 odds 的值域从 0 到正无穷,几率越大,表示事件发生的可能性越大。
假设给定样本的特征值,该样本属于类别1的概率为:P(y=1|x)。因为只有两种可能的分类,因此样本属于另一类的概率为:1-P(y=1|x)。
代入几率计算公式后得到样本属于类别1的几率:
两边取自然对数:
上述变换称为logit变换。此时等式的左边我们称之为对数几率(Log Odds),而等式的右边就是线性回归方程。因此,周志华老师在其西瓜书中称逻辑回归算法为对数几率回归,因为他觉得对数几率回归这个名称更能反映算法的本质。
3. 为什么逻辑函数上的点可以用来表示分类概率?
因为wx的值域从负无穷大到正无穷大,正好对应对数几率的值域(见下图),而我们想要把wx映射到某种函数上,使得函数上的点可以代表概率,值域在0~1之间。因此,我们让
,然后逐渐变换,最后可以得到
,这个函数就是逻辑函数,因此逻辑函数上的点可以用来代表分类概率。(上述变换过程实际上就是logit变换的逆过程)

现在我们已经搞清了逻辑回归的本质,接下来就要对参数进行估计。估计出参数w,我们就可以得到逻辑回归模型。
因为目标y是两个分类标签,因此我们假设y服从伯努利分布(y不是0就是1),那么目标y的概率质量函数就是:
,将其写成条件概率表达式就是:
。
假设有m个独立样本,那么m个y之间也是相互独立的。因此,目标y的联合概率为:
。然后我们可以用极大似然估计法来求解。
先来回忆一下什么是极大似然估计法:极大似然估计法就是去找到能使模型产生出样本数据的概率最大的参数θ,也就是找到
。由于
有连乘运算,通常对似然函数取对数计算,就可以把连乘变成求和,然后求导,取导数为0的极值点,就是想找的参数值。
因此,参数w的估计值就是:
。
对似然函数取自然对数:
;
参数w的估计值可以写成:
。
因为我们一般用梯度下降法求解,因此给上式加上负号,参数w的估计值也就是:
。
这个损失函数也被称为交叉熵(cross entropy):
,可以把它看成两个概率分布之间的相似度,为了使估计的概率分布离真实的概率分布最接近,也就相当于让这个损失函数达到最小值。
接着我们把
代入损失函数:

根据求导规则:
,
以及链式法则,对损失函数L求偏导可以得到:
。
只有当数据线性可分时,上式等于0才有解析解。否则,我们只能用梯度下降法等迭代算法对参数进行优化。批量梯度下降法参数更新公式为:
。
此外,用另一种方法可以推导得到损失函数的另一种形式,但是其本质都是一样的。假设目标y分为1和-1两类,那么我们可以得知:

目标y的概率密度函数就是:h(yx),将其写成条件概率表达式就是:
。
然后还是用极大似然估计法,对似然函数取自然对数及负号,那么损失函数L就是:

对损失函数L求偏导可以得到:
。
批量梯度下降法参数更新公式为:
。
逻辑回归的优点:(摘自周志华西瓜书)
- 直接对分类的可能性进行建模,无需事先假设数据的分布,这样就避免了假设分布不准确所带来的问题
- 不仅能预测出类别,还能给出近似的概率预测值,这对许多需要利用概率辅助决策的任务很有用
- 逻辑函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求取最优解
逻辑回归的缺点:对数据特征间的独立性要求较高;不适用于特征和目标为非线性关系的数据中;当特征空间很大、特征有缺失时,逻辑回归的性能不是很好
机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)的更多相关文章
- 机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)
在<机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)>一文中,我们讨论了如何用逻辑回归解决二分类问题以及逻辑回归算法的本质.现在 ...
- [Machine learning] Logistic regression
1. Variable definitions m : training examples' count \(X\) : design matrix. each row of \(X\) is a t ...
- 逻辑回归的分布式实现 [Logistic Regression / Machine Learning / Spark ]
1- 问题提出 2- 逻辑回归 3- 理论推导 4- Python/Spark实现 # -*- coding: utf-8 -*- from pyspark import SparkContext f ...
- 机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho
机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho 总述 本书是 2014 ...
- 逻辑回归与神经网络还有Softmax regression的关系与区别
本文讨论的关键词:Logistic Regression(逻辑回归).Neural Networks(神经网络) 之前在学习LR和NN的时候,一直对它们独立学习思考,就简单当做是机器学习中的两个不同的 ...
- Machine Learning—Linear Regression
Evernote的同步分享:Machine Learning-Linear Regression 版权声明:本文博客原创文章.博客,未经同意,不得转载.
- 机器学习---三种线性算法的比较(线性回归,感知机,逻辑回归)(Machine Learning Linear Regression Perceptron Logistic Regression Comparison)
最小二乘线性回归,感知机,逻辑回归的比较: 最小二乘线性回归 Least Squares Linear Regression 感知机 Perceptron 二分类逻辑回归 Binary Logis ...
- 机器学习/逻辑回归(logistic regression)/--附python代码
个人分类: 机器学习 本文为吴恩达<机器学习>课程的读书笔记,并用python实现. 前一篇讲了线性回归,这一篇讲逻辑回归,有了上一篇的基础,这一篇的内容会显得比较简单. 逻辑回归(log ...
- 机器学习——逻辑回归(Logistic Regression)
1 前言 虽然该机器学习算法名字里面有"回归",但是它其实是个分类算法.取名逻辑回归主要是因为是从线性回归转变而来的. logistic回归,又叫对数几率回归. 2 回归模型 2. ...
随机推荐
- H5页面跳转与传值
页面之间的跳转经常使用a标签,使用mvc框架的都是通过访问controller的请求方法,返回请求页面.但本次开发,前端与后台完全分离,前端APP使用HBuider来开发,后台数据就无法使用mvc框架 ...
- liunx下Oracle安装
1. 引言 将近一个月没有更新博客了,最近忙着数据库数据迁移工作:自己在服务器上搭建了oracle数据库,一步步走下来遇见很多BUG:现在自己记录下,方便以后有用上的地方: 2. 准备工作 oracl ...
- netcore访问本地磁盘
public void ConfigureServices(IServiceCollection services) { services.AddDirectoryBrowser(); }public ...
- Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.
Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: 专业理解: socket是应用层与TCP/IP ...
- Installation of SAP on RAC with Oracle ASM(转)
https://blogs.sap.com/2016/03/17/installation-of-sap-on-rac-with-oracle-asm-part-3distributed-enviro ...
- 物料管理混乱怎么办?APS系统帮你实现高效运输
APS系统可以高效地管理.控制分销中心并保证产品可订货.可盈利.能力可用.分销计划帮助企业分析原始信息,然后企业能够确定如何优化分销成本或者根据生产能力和成本提高客户服务水平. 今天成功的企业为了取得 ...
- JavaWeb项目目录结构
今天本来是准备学习spring mvc + mybatis,结果被idea的配置环境卡主了,自己刚刚接触JavaWeb不久,所以浪费了很多时间.最终我回归最简单的servlet & jsp,并 ...
- Upgrade Windows Server 2016 to Windows Server 2019
Pre-Upgrade Upgrade path: Windows Server 2016 can be upgraded to Windows 2019 in a single upgrade pr ...
- Linux DNS 主从复制
设置主从DNS的主要是为了冗余,分担压力,防止服务器宕机后,DNS无法正常解析. 配置 master 正常配置DNS服务. 设置主机名 [root@localhost ~]# hostnamectl ...
- MySQL基础操作与数据类型
目录 1.文件夹(库) 2.文件(表) 3.文件的一行内容 4.创建表的完整语法 5.整型类型 6.补充sql_mode 7.浮点型 8.字符类型 9.日期类型 10.枚举与集合类型 1.文件夹(库) ...