# logistic regression 对数据分类
最初选修模式识别这门课程,我并不了解模式识别是什么。不过,通过这几次赵海涛老师的辛勤教学,我对模式识别有了一定的了解,并通过本次针对 logistic regression 对数据分类的实验来巩固所学内容。
经过一段时间的程序编写及调试,最终完成了 logistic regression 对数据的分类。下面将详细说明我的解决过程。
## 一、Logistic Regression 简介
[Logistic regression](https://baike.baidu.com/item/logistic%E5%9B%9E%E5%BD%92/2981575) 主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是是否胃癌,即“是”或“否”,为两分类变量,[自变量](https://baike.baidu.com/item/%E8%87%AA%E5%8F%98%E9%87%8F/6895256)就可以包括很多了,例如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。通过 logistic regression 分析,就可以大致了解到底哪些因素是胃癌的危险因素。
Logistic regression 也是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。之前在经典之作《数学之美》中也看到了它用于广告预测,也就是根据某广告被用户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,然后叫他“你点我啊!”用户点了,你就有钱收了。这就是为什么我们的电脑现在广告泛滥的原因了。
## 二、Logistic Regression 推导过程
### 1.基本原理
Logistic Regression 按照我自己的理解,可以简单的描述为这样的过程:
(1)找一个合适的预测函数,一般表示为 h 函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数。
(2)构造一个 Cost 函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差,可以是二者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的“损失”,将 Cost 求和或者求平均,记为 J(θ)函数,表示所有训练数据预测值与实际类别的偏差。
(3)显然,J(θ)函数的值越小表示预测函数越准确(即 h 函数越准确),所以这一步需要做的是找到 J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression 实现可以用梯度下降法。
### 2.具体过程
Logistic Regression 的具体过程,包括:选取预测函数,求解 Cost 函数和 J(θ),梯度下降法求 J(θ)的最小值。
#### 2.1 构造预测函数
Logistic Regression 虽然名字里带“回归”,但是它实际上是一种分类方法,用于两分类问题(即输出只有两种)。首先,需要先找到一个预测函数(h),显然,该函数的输出必须是两个值(分别代表两个类别),所以利用了 Logistic 函数,函数形式为:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/21e721ad9d2abb9e4ae87edc41b6c452.writebug) (1)
接下来需要确定数据划分的边界类型,接下来我们只讨论线性边界的情况。
对于线性边界的情况,边界形式如下:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/c1b9cc0db417e3107394cb52c549e446.writebug) (2)
构造预测函数为:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/687f80ecf45d8c3aa67d4cc71c9425e7.writebug) (3)
![](https://www.writebug.com/myres/static/uploads/2021/12/15/bd9d42e463b0db03161c26a4a6d1585c.writebug)函数的值有特殊的含义,它表示结果取 1 的概率,因此对于输入 x 分类结果为类别 1 和类别 0 的概率分别为:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/c862198b1d621aa271f09e1d2d2d40dc.writebug) (4)
#### 2.2 构造 Cost 函数
Cost 函数和![](https://www.writebug.com/myres/static/uploads/2021/12/15/b403c4d65245122c9903dffe6534bf15.writebug)函数是基于最大似然估计推导得到的。下面详细说明推导的过程。(4)式综合起来可以写成:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/bf922be2bb2dde4e2a70678cfc4d1b1f.writebug) (5)
取似然函数为:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/dc18a55ea3aa0a9e54855d49257f1313.writebug) (6)
对数似然函数为:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/2c903151a0553ff3d5fa5988a76644b3.writebug) (7)
最大似然估计就是要求得使![](https://www.writebug.com/myres/static/uploads/2021/12/15/c4384530382d99619c60049349ff65e1.writebug)取最大值时的![](https://www.writebug.com/myres/static/uploads/2021/12/15/75bca989b2f1052bc832952c02e621a3.writebug),求得的![](https://www.writebug.com/myres/static/uploads/2021/12/15/ef55d81559b8c7d166ad8eb931aaa00b.writebug)就是要求的最佳参数,即:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/6c8a200fa1af73052cd9bd0f1368e219.writebug) (8)
综上,可得:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/3568af753051c1278c0784ec326585a6.writebug) (9)
![](https://www.writebug.com/myres/static/uploads/2021/12/15/63697915a36c40f2180b73b8d69aa0b4.writebug) (10)
#### 2.3 梯度下降法求![](https://www.writebug.com/myres/static/uploads/2021/12/15/b871f5dac57303169bcb4966b5205f7c.writebug)的最小值
求![](https://www.writebug.com/myres/static/uploads/2021/12/15/e9c9acb536afceda0af3545eea0ad728.writebug)的最小值可以使用梯度下降法,根据梯度下降法可得![](https://www.writebug.com/myres/static/uploads/2021/12/15/de4e785d309cc16e108163be2b3a546f.writebug)的更新过程:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/55d7415be4c114d75e740d5b8e1032c0.writebug) (11)
式中![](https://www.writebug.com/myres/static/uploads/2021/12/15/9f1392c6e8d71027a84d157676001895.writebug)为学习步长,下面来求偏导:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/8ee346ee9655b4368299cb3a81d2a237.writebug) (12)
上式求解过程中用到如下的公式:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/146b80882949270b472375f9cf6f50d6.writebug) (13)
因此,(11)式的更新过程可以写成:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/87caca98dd8f52b25dc8f2df563f6c40.writebug) (14)
因为式中![](https://www.writebug.com/myres/static/uploads/2021/12/15/233e7589a6db03fdf3e0be3d45d544f6.writebug)本来为一常量,所以![](https://www.writebug.com/myres/static/uploads/2021/12/15/aba740a323a1a0106e92967ece633f2b.writebug)一般将省略,所以最终的![](https://www.writebug.com/myres/static/uploads/2021/12/15/622557cb855ef506f358761b5e1505a1.writebug)更新过程为:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/4f5d449270482e6771c93731fa80078e.writebug) (15)
另外,补充一下,2.2 节中提到求得![](https://www.writebug.com/myres/static/uploads/2021/12/15/1d5b4c54c4e6c861132a38df1d1d2e1e.writebug)取最大值时的![](https://www.writebug.com/myres/static/uploads/2021/12/15/2c310018afef1f8f586fb761188e9165.writebug)也是一样的,用梯度上升法求(7)式的最大值,可得:
![](https://www.writebug.com/myres/static/uploads/2021/12/15/a4a270dc6a362c608a8a63635541128e.writebug) (16)
观察上式发现跟(14)式是一样的,所以,采用梯度上升发和梯度下降法是完全一样的,这也是《机器学习实战》中采用梯度上升法的原因。
基于逻辑回归算法对胃癌病人数据进行预测分类-代码+数据
版权申诉
5星 · 超过95%的资源 51 浏览量
2023-01-13
09:22:32
上传
评论 12
收藏 330KB ZIP 举报
甜辣uu
- 粉丝: 8105
- 资源: 1104
最新资源
- 基于CSS的响应式鲜花网站全屏效果设计源码
- 基于JavaScript的访客预约系统设计源码
- 基于Vue和ECharts的工作租房数据可视化系统设计源码
- 1040g0cg310ravpiu6ibg5pg00tsipsln3ju2d0g 2
- 基于Python的SAR图像去噪CNN-NLM设计源码
- redhat6升级到redhat7,过程redhat6.x-> redhat6.10->rehat7.9 主版本最高版本
- 基于Django的流程引擎设计源码
- 基于Node.js的Express框架与MySQL的后台管理系统设计源码
- 基于Java的Flink流批一体数据处理快速集成开发框架设计源码
- FirstFilterOrderCompare
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
前往页