Logistic Regression(逻辑回归)详细讲解
来源:互联网 发布:1390清零软件中文版 编辑:程序博客网 时间:2024/06/06 09:11
Logistic Regression(逻辑回归)
以前在学校学到Logistic Regression的时候,虽然最后会使用,但是对于许多地方有很多的疑惑,今天在这里详细梳理一下Logistic Regression的过程:
- Logistic Regression逻辑回归
- 回归的思想
- Logistic Regression形式
- 损失函数
- 最小化Einw E_invec w
- 梯度下降法
- 总结
回归的思想
Logistic Regression和线性回归一样,是回归中常见的算法。很多人刚接触Logistic Regression,不知道回归的含义。其实在念中学的时候学到的用最小二乘法求解线性回归方程,就是我们最早接触到的回归。在二维平面上有很多的点
所以一种常见的回归就是通过一系列的点,计算得到一条合适的线。当有新的输入时,可以直接计算得到输出。不局限于二维平面的话,点可以表示为
还有一些回归不是通过得到一条线。比如使用决策树来回归。就是把一些点分布到树的节点上。每个节点的平均值就是作为回归值。
简单来说,回归就是根据输入预测一个值。
Logistic Regression形式
Logistic Regression最常见的应用场景就是预测概率。比如知道一个人的 年龄、性别、血压、胆固醇水平、体重,想知道这个人患心脏病的概率。首先很容易想到通过线性回归,根据这一组值来计算得到一个分数。对于病人的特征
计算得到的分数越高,风险越大,分数越低,风险越小。s的取值是
形状如下图所示:
这个函数也称为sigmoid函数。函数能够把s映射到
其中
因此整个Logistic Regression的函数形式为:
损失函数
在Logistic Regression函数中,我们使用最大似然方式来求解模型的参数。有关最大似然,维基百科有定义。
我们把真实模型称为
因为
其中,根据Logistic函数的对称性有
我们要求解
这是一个连乘,两边取对,即可转换成连加。
求解上式的最大值,等价于求解
把
定义
最小化Ein(w⃗ )
根据以上的推导,损失函数
从数学上可以推导出
对
把偏微分中的
来求解的话,是很难求解出
梯度下降法
直接求解是无法求解出
其中
忘记泰勒展开没关系,可以从直观上来理解这个式子。根据以上的结论,
任何一条曲线,如果只看一小段的话,可以把这一小段曲线看成是一个线段。从数学上来讲,一个函数在某一点到附近的另外一点,可以用一个线段来表示。附近点的值为该点的值加上一小段线段的梯度,就得到了上式。
要使
因此有
到此,梯度下降总体思想结束了。梯度下降主要有两种方法,一种是随机梯度下降,一种是批量梯度下降。批量梯度下降每次更新权重需要训练完所有的数据,随机梯度下降每次训练完一条记录,就可以计算对应梯度,更新权重。在实际使用中,推荐使用随机梯度,收敛速度快。同时有关步长
总结
到此基本讲完了Logistic Regression大部分内容了。当时在学校学完之后怎么也没懂,损失函数为什么是这样,为什么要使用随机梯度下降等等这些问题一直没有解决,虽然看看博客也能够做实验把代码写完(南京大学数据挖掘课程很赞啊)。最近在看林轩田老师的视频,慢慢弄,基本搞懂了。Logistic Regression作为常见的一类回归,其中的思想在很多算法中都用到。欢迎大家一起讨论。
- Logistic Regression(逻辑回归)详细讲解
- Logistic Regression(逻辑回归)详细讲解
- logistic regression 逻辑回归
- 逻辑回归(Logistic Regression)
- 逻辑回归(logistic regression)
- 逻辑回归logistic regression
- 逻辑回归(logistic regression)
- 逻辑回归(logistic regression)
- 逻辑回归(Logistic Regression)
- 逻辑回归(logistic regression)
- 逻辑回归Logistic Regression
- 逻辑回归(Logistic Regression)
- Logistic Regression-逻辑回归
- 逻辑回归 logistic regression
- 逻辑回归(Logistic Regression)
- logistic regression 逻辑回归
- 逻辑回归(Logistic Regression)
- 逻辑回归(Logistic Regression)
- DjangoUnicodeDecodeError有关问题的解决办法
- SQL Server中的递归查询
- 5行Python代码实现一个简单的在线英汉词典
- 处理GitHub不允许上传大于100M文件问题
- ios上webview与浏览器webview
- Logistic Regression(逻辑回归)详细讲解
- MediaPlayer 用于方法长时间的音乐
- ImageLoader 完全解析
- C#学习笔记 线程同步
- eclipse代码自动提示的问题
- ExtJS显示.Net json日期Date(1451145600000)问题
- Android实现自动定位城市并获取天气信息
- NAT穿透二
- NAT穿透一