分类算法之逻辑回归(Logistic Regression
分类算法之逻辑回归(Logistic Regression)
1.二分类问题
现在有一家医院,想要对病人的病情进行分析,其中有一项就是关于良性\恶性肿瘤的判断,现在有一批数据集是关于肿瘤大小的,任务就是根据肿瘤的大小来判定是良性还是恶性。这就是一个很典型的二分类问题,即输出的结果只有两个值----良性和恶性(通常用数字0和1表示)。如图1所示,我们可以做一个直观的判定肿瘤大小大于5,即为恶心肿瘤(输出为1);小于等于5,即为良性肿瘤(输出为0)。
2.分类问题的本质
分类问题本质上属于有监督学习,给定一个已知分类的数据集,然后通过分类算法来让计算机对数据集进行学习,这样计算机就可以对数据进行预测。以肿瘤的例子来说,已有数据集如图1所示,现在要对一个病人的病情进行诊断,那么计算机只需要将该病人的肿瘤大小和5进行比较,然后就可以推断出是恶性还是良性。分类问题和回归问题有一定的相似性,都是通过对数据集的学习来对未知结果进行预测,区别在于输出值不同。回归问题的输出值是连续值(例如房子的价格),分类问题的输出值是离散值(例如恶性或者良性)。既然分类问题和回归问题有一定的相似性,那么我们能不能在回归的基础上进行分类呢?答案是可以的。一种可行的思路是,先用线性拟合,然后对线性拟合的预测结果值进行量化,即将连续值量化为离散值。
3.分类问题的假设函数
分类问题虽然和回归问题有一定的类似,但是我们并不能直接使用回归问题中的假设函数作为分类问题的假设函数。还是以图1的例子为例,如果我们采用一元线性函数(即\(h(x) = \theta_0+\theta_1x\))去进行拟合的话,结果可能是这样子的:$h_\theta(x) = \dfrac{5}{33}x-\frac{1}{3} $,体现在图片中就是:
这样,你可能会做这样的一个判断:对于这个线性拟合的假设函数,给定一个肿瘤的大小,只要将其带入假设函数,并将其输出值和0.5进行比较,如果大于0.5,就输出1;小于0.5,就输出0。在图1的数据集中,这种方法确实可以。但是如果将数据集更改一下,如图3所示,此时线性拟合的结果就会有所不同:
如果采用相同的方法,那么就会把大小为6的情况进行误判为良好。所以,我们不能单纯地通过将线性拟合的输出值与某一个阈值进行比较这种方式来进行量化。对于逻辑回归,我们的量化函数为Sigmoid函数(也称Logistic函数,S函数)。其数学表达式为:\(S(x) = \dfrac{1}{1+e^{-x}}\) ,其图像如图4:
可以看到S函数的输出值就是0和1,在逻辑回归中,我们采用S函数来对线性拟合的输出值进行量化,所以逻辑回归的假设函数为:
\[h_\theta(x)=\dfrac{1}{1+e^{-\theta^Tx}}=\dfrac{1}{1+e^{-\sum_{i=0}^n\theta_ix_i}} \tag{3.1}\]
其中,\(x\)为增广特征向量(1*(n+1)维),\(\theta\)为增广权向量(1*(n+1)维)。这个假设函数所表示的数学含义是:对于特定的样本\(x\)与参数矩阵\(\theta\),分类为1的概率(假设y只有0和1两类),也就即\(h_\theta(x) = P(y=1|x;\theta)\)。根据其数学意义,我们可以这样认为:如果\(h_\theta(x)>0.5\),则判定y = 1;如果\(h_\theta(x)<0.5\),则判定y = 0。
4.逻辑回归的代价函数(Cost Function)
代价函数(成本函数),也就是损失函数。在逻辑回归中,代价函数并不是采用均方误差(主要原因是,逻辑回归的均方误差并不是一个凸函数,并不方便使用梯度下降法),而是通过极大似然法求解出来的一个函数,其数学表达式为:
\[J(\theta)= \dfrac{1}{m}\sum_{i=1}^m[-yln(h_\theta(x))-(1-y)ln(1-h_\theta(x))] \tag{4.1}\]
这个函数看起来有点复杂,我们将它一步步进行拆分来理解,我们将每个样本点与假设函数之间的误差记为\(Cost(h_\theta(x),y)=-yln(h_\theta(x))-(1-y)ln(1-h_\theta(x))\),这样代价函数就可以理解为误差的均值。下面我们再详细看一下这个误差函数,由于y的取值只能是0或者1,我们可以将误差函数写成分段函数的形式:
\[Cost(h_\theta(x),y)=\begin{cases} -ln(h_\theta(x)),\quad &y = 1 \\ -(1-y)ln(1-h_\theta(x)), &y=0 \end{cases} \tag{4.2}\]
4.2式和4.1式是等价的,依据4.2式,不难得出:当y=1时,如果判定为y=1(即\(h_\theta(x) = 1\)),误差为0;如果误判为y=0(\(即h_\theta(x) = 0\)),误差将会是正无穷大。当y=0时,如果判定为y=0(即\(h_\theta(x) = 0\)),误差为0;如果误判为y=1(即\(h_\theta(x) = 1\)),误差将会是正无穷大。(注意:\(h_\theta(x) = 1\)表示y等于1的概率为1,等价于认为y=1;\(h_\theta(x) = 0\)表示y等于1的概率为0,等价于认为y=0)
如果用矩阵来表示代价函数,就是:
\[J(\theta)=-\dfrac{1}{m}Y^Tln(h_\theta(X))-(E-Y)^Tln(E-h_\theta(X)) \tag{4.3}\]
其中\(Y\)为样本真实值组成的列向量(m*1维),\(X\)为增广样本矩阵((1+n)*m维),E为全1列向量(m*1维)。
5.逻辑回归使用梯度下降法
逻辑回归的代价函数和线性回归的损失函数一样,都是凸函数,所以我们可以采用梯度下降法来求参数矩阵\(\theta\)使得代价函数\(J(\theta)\)取得最小值。其具体算法与线性回归中的梯度下降法(可以参考我的另一篇博客线性回归之梯度下降法)并没有太大区别,只是对应的偏导有所不同。逻辑回归的代价函数的偏导为:
\[\dfrac{\partial J(\theta)}{\theta_i} = \dfrac{1}{m}\sum_{j=1}^m(h_\theta(x^{(j)})-y^{(j)})x_i^{(j)} = \dfrac{1}{m}\sum_{j=1}^m(\dfrac{1}{1+e^{-\sum_{i=0}^n\theta_ix_i^{(j)}}}-y^{(j)})x_i^{(j)}\quad (i=0,1,\dots,n)\tag{5.1}\]
对应的参数更新规则为:
\[\theta_i = \theta_i-\alpha\dfrac{\partial J(\theta)}{\theta_i} = \theta_i-\alpha\dfrac{1}{m}\sum_{j=1}^m(h_\theta(x^{(j)})-y^{(j)})x_i^{(j)}\quad (i=0,1,\dots,n)\tag{5.2}\]
如果用矩阵表示就是:
\[\dfrac{\partial J(\theta)}{\theta} = \dfrac{1}{m}X^T(h_\theta(X)-Y),\quad \theta=\theta-\alpha\dfrac{1}{m}X^T(h_\theta(X)-Y) \tag{5.3}\]
其中,\(\alpha\)为迭代步长。
6.多元逻辑回归
对于多元逻辑回归,一种可行的思路是将其简化为二元。例如,如果数据集的分类包含1,2,3这三个类别。如果现在要判断一个样本是不是类1,我们可以将数据集看作是两类----即1类和非1类(将类2和类3),这样我们就可以求得针对类1的假设函数\(h^{(1)}_\theta(x)\),同理还有\(h^{(2)}_\theta(x)\)和\(h^{(3)}_\theta(x)\)。这样我们的判定规则就变为:
\[if \quad max\{h^{(i)}_\theta(x)\} = h^{(j)}_\theta(x), then \quad y = j\quad(i,j=1,2,3) \tag{6.1}\]
7.小结
虽然逻辑回归中带有“回归”二字,但其实它是一个分类算法。逻辑回归的思想和模式识别中的判别函数非常相似,两者可以结合起来进行学习。
参考链接:
分类算法之逻辑回归(Logistic Regression的更多相关文章
- 机器学习方法(五):逻辑回归Logistic Regression,Softmax Regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 前面介绍过线性回归的基本知识, ...
- 机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
- Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)” 清晰讲解logistic-good!!!!!!
原文:http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D ...
- 机器学习 (三) 逻辑回归 Logistic Regression
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
- ML 逻辑回归 Logistic Regression
逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...
- 逻辑回归(Logistic Regression)详解,公式推导及代码实现
逻辑回归(Logistic Regression) 什么是逻辑回归: 逻辑回归(Logistic Regression)是一种基于概率的模式识别算法,虽然名字中带"回归",但实际上 ...
- 机器学习(四)--------逻辑回归(Logistic Regression)
逻辑回归(Logistic Regression) 线性回归用来预测,逻辑回归用来分类. 线性回归是拟合函数,逻辑回归是预测函数 逻辑回归就是分类. 分类问题用线性方程是不行的 线性方程拟合的是连 ...
- 机器学习入门11 - 逻辑回归 (Logistic Regression)
原文链接:https://developers.google.com/machine-learning/crash-course/logistic-regression/ 逻辑回归会生成一个介于 0 ...
- SparkMLlib学习分类算法之逻辑回归算法
SparkMLlib学习分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/51693 ...
随机推荐
- 带你涨姿势的认识一下 Kafka
Kafka 基本概述 什么是 Kafka Kafka 是一个分布式流式平台,它有三个关键能力 订阅发布记录流,它类似于企业中的消息队列 或 企业消息传递系统 以容错的方式存储记录流 实时记录流 Kaf ...
- sql获取各种时间格式的方法
),)--月/日/年 ),)--年.月.日 (常用) ),)--日/月/年 ),)--日.月.年 ),)--日-月-年 ),)--日 月 年
- powerCat进行常规tcp端口转发
实战中,我们也会遇到需要我们进行端口转发的情况,比如已经拿下的目标机1是在dmz区,而目标1所在内网的其他目标只能通过目标1去访问,这时候我们就需要端口转发或者代理来进行后渗透.这次就要介绍一个加强版 ...
- php代码Xdebug调试使用笔记
0x01 Xdebug简介 Xdebug是一个开放源代码的PHP程序调试器 运行流程: 0x02 Xdebug配置 日志 xdebug.trace_output_dir: 日志追踪输出目录 xdeb ...
- Linux重要配置文件
目录 简介 0x01 系统重要文件 0x02 用户重要文件 0x03 重要日志文件 本教程概述 本课时学习Linux系统中重要的配置文件. 用到的工具 SshClient Ubuntu 标签 Linu ...
- 机器学习:数据清洗及工具OpenRefine
数据分析中,首先要进行数据清洗,才可以继续训练模型,预测等操作. 首先介绍一下什么是数据清洗(定义来自 百度百科,有删减) 数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别 ...
- L2-007. 家庭房产(并查集)
#include <cstdio> #include <set> #include <vector> #include <algorithm> usin ...
- 坚果云Markdown - 文档管理编辑器
坚果云Markdown - 文档管理编辑器 Markdown是什么? Markdown是一种上手简单.应用十分广泛的轻量级标记语法.您可以使用Markdown轻松记录您的灵感.想法.创意.整个记录过程 ...
- 020 - FreeRTOS学习路线总结
零.为什么写? 在H7-tools预售群里,有位朋友提出如何学习FreeRTOS这类的问题,便由此总结下自己的学习路线.最近又打算接触RTT,和FreeRTOS做个对比. 文章分两步来讲,学习路线和学 ...
- Leetcode Tags(1)Linked List
1.知识点回顾 https://www.cnblogs.com/BigJunOba/p/9174206.html https://www.cnblogs.com/BigJunOba/p/9174217 ...