百面机器学习 之 逻辑回归
逻辑回归别看简单,但是里面在面试里面考察的内容还是很多的。尤其在推荐算法领域,GBDT+LR就是在前几年还相当流行的一个推推荐算法手段。
在这篇文章之前,已经写过一些关于logistics Regression的补充了。
问题1:逻辑回归相比于线性回归,有何异同
首先,逻辑回归是处理分类问题,线性回归是处理回归问题。这是两者最最本质的区别。
逻辑回归是给定自变量和超参数后,得到因变量的期望,基于期望来处理预测分类的文同。
线性回归实际上是求解 ,来拟合我们的真实关系。
然后最重要的来了,先给出结论,逻辑回归可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况,而使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的。
下面来分别解释逻辑回归为什么可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况,而在使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的:
逻辑回归:
首先,逻辑回归就是在线性回归的基础上加伤了一个Sigmod函数进行非线性因社会的,本质上来说,两者都是一个广义的线型模型。作为什么这么说呢?
我们先把sigmod函数给写出来:
他有以下几个特点:
1. 输出的范围都在0-1之间
2. 1/2处的倒数最大
3. sigmod的导数 = sigmod(x)(1-sigmod(x))
4. 在sigmod的两端会有硬饱和出现,会出现提督消失的情况
然后他的损失函数是一个交叉熵损失函数:
关键是这个函数是这么来的:
我们首先看一个样本的情况: 如果等于类别1,P=y,如果等于类别0,P=(1-y)
于是我们可以将这个判断式子写成一条式子:
我们是想这个式子越大越好的,因为预测概率 越大, 就越接近1。而如果等于0, 我们预测概率是1-y_pred, 我们依然希望这个越大越好。
然后我们推广到多个样本:
然后用极大似然的思想,还是求max,我们对这个多样本的情况进行取对数和取反,这样我们就得到了上述的loss形式了。
上述等式的推到,都是基于样本服从伯努利分布得到的。然后损失函数就是伯努利分布的极大似然估计。
因为面试时可能会考到,我们就手推一下上述这个loss的求梯度过程:
了解完sigmod的基本面后,我们开始深挖sigmod了,究竟sigmod是怎么来的?
我们先给出答案:假设我们要解决的是一个二分类问题,所以这个分类的概率是服从指数族分布里面的伯努利分布,然后在加上广义线性模型的条件,我们可以求得sigmod出来,其中所谓的对数线性模型,是指数族分布里面的一个小东西,这个小东西结合上广义线性模型的第三假设而得出的。
首先,什么是指数族分布?
如果概率分布满足以下的式子,我们说这个这个概率满足指数族分布:
其中指数族分布里面有很多成员:beta分布,gamma分布,正态分布,以及伯努利分布。
我们的现实问题就是一个二分类问题,所以满足概率分布服从伯努利分布:
我们将这些东西都拆分以下:
所以,这个伯努利的分布是满足指数分布的通式的,也就是我们现实的二分类问题是一个指数族分布,然后我们再来看广义模型
为了推导出广义模型,我们要假设三个条件:
于是我们把伯努利分布给掏出来:
有同学可能这里理解不了这个期望和概率的相等的,这个是某一件事的发生概率,然后咱们的期望是在X发生的情况下,Y发生的期望,也就是 了
然后根据咋们伯努利服从指数族分布的:
然后咱们的 应用广义模型的第三条假设,就得出sigmod函数了:
这样就可以解释逻辑回归为什么可以看作广义线性模型在因变量Y服从二项分布(伯努利分布)的一个特殊情况了。
下面就解释在使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的:
在线性回归模型里面,有一个非常重要的假设,就是假设误差项(残差)是服从标准的正态分布的。
其中当误差项(残差)符合正态分布时,残差就是预测值-实际值,那我现在残差已经是正态分布了,因变量(预测值)也会符合正态分布的(因为实际值是一个实数)
对于每一个样本,线型回归都可以写成:
这个b就是误差项,我们假设误差项就是服从正态分布的。
然后把 用线性回归的表达式去替换出来:
这个是误差项出现的概率鸭,我们肯定要让误差项出现概率最小呀,但是因为e的指数是负的,所以我们要让这个指数是最大的。我们先假设有N个样本,于是这N个样本的误差的出现概率相乘起来:
因为里面前面一项都是常数,我们只要后面那一项,也就是e指数那一块,然后我们要让这一块最小,于是我们给他加上log,分母也不要了,也就是求的最大了
也就是
然后去掉负号,就变成求最小了:也就是我们课本上提到了最小二乘法了:
至此:我们证明了使用最小二乘法求解线性回归的时候,我们认为因变量Y是服从正态分布的
说了一大堆不同的地方,我们现在来说相同的地方:
就是他们求解最佳参数的时候,都是可以使用提督下降的方法去求解的。
问题2:当使用逻辑回归处理度标签的分类问题时,有那些常见做法?分别应用于哪些场景,他们之间又有什么联系?
这个问题看得我头都大了,真的不知道该从什么角度去回答。最后一问就是问逻辑回归和多分类softmax的关系。
这之前做了笔记,现在刚好也整理上来了:
我们先看softmax的公式:
但是因为这个函数是非凸的,所以在有局部极小值处,而且极小值处还是一个平坦的区域,所以我们在这个范围内怎么取值,他输出的都是一样的。
你看我们减去了一个 他输出还是一样的。所以我们来看J=2的时候:
我们认为他也是冗余的,然后令 ,就有:
你看,这不就对上了咋们用sigmod去做激活函数了嘛,最后一个矩阵她们两个元素相加是等于1的
这就是用softmax当类别只有2的时候,softmax是怎么退化成sigmod的!
然后如果真的非得用二分类去处理多分类。就可以这么训练:属于第i个类别和不属于第i个类别,然后一直分类下去,就像一个二叉树一样。
下面是softmax的求导:
百面机器学习 之 逻辑回归相关推荐
- 机器学习实战-逻辑回归-19
机器学习实战-逻辑回归-用户流失预测 import numpy as np train_data = np.genfromtxt('Churn-Modelling.csv',delimiter=',' ...
- 机器学习_2逻辑回归
机器学习_逻辑回归 分类问题 二分类--Sigmoid函数 Sigmoid函数代码实现 逻辑回归 数学原理 求解方式 正则化 逻辑回归数据集应用样例--代码实现 样例1:有清晰的线性决策边界 决策边界 ...
- 机器学习:逻辑回归(logistics regression)
title: 机器学习:逻辑回归(logistics regression) date: 2019-11-30 20:55:06 mathjax: true categories: 机器学习 tags ...
- 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例
传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 文章目录 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例 1导入基本库 2读取数据并且变换类型 3输出数据 4可视化数据 ...
- 吴恩达机器学习之逻辑回归(二分类)
吴恩达机器学习之逻辑回归 逻辑回归 二分类逻辑回归 二分类逻辑回归案例 python代码实现(含详细代码注释): 案例中几个问题的解析 不同于线性回归,逻辑回归的hθ(x)还需要用sigmoid函数处 ...
- 【机器学习】逻辑回归原理介绍
[机器学习]逻辑回归原理介绍 [机器学习]逻辑回归python实现 [机器学习]逻辑回归sklearn实现 Logistic 回归模型是目前广泛使用的学习算法之一,通常用来解决二分类问题,虽然名字中有 ...
- 简单粗暴理解与实现机器学习之逻辑回归:逻辑回归介绍、应用场景、原理、损失以及优化...
作者 | 汪雯琦 责编 | Carol 来源 | CSDN 博客 出品 | AI科技大本营(ID:rgznai100) 学习目标 知道逻辑回归的损失函数 知道逻辑回归的优化方法 知道sigmoid函数 ...
- 【机器学习】逻辑回归(Logistic Regression)
注:最近开始学习<人工智能>选修课,老师提纲挈领的介绍了一番,听完课只了解了个大概,剩下的细节只能自己继续摸索. 从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害 ...
- 【机器学习】逻辑回归优化技巧总结(全)
逻辑回归由于其简单高效.易于解释,是工业应用最为广泛的模型之一,比如用于金融风控领域的评分卡.互联网的推荐系统.上文总结了逻辑回归的原理及其实现[全面解析并实现逻辑回归(Python)]. 本文从实际 ...
最新文章
- 小牛生产小牛的问题解决集粹
- SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
- centos7扩展根分区
- linux c 编程 pdf_C/C++编程笔记:Linux 日志文件系统未解之谜,你知道吗?
- STS+Git 项目操作相关
- Java当中包装类的理解和一些常用方法的分享(学习后分享)
- 解析xml_Mybatis中mapper的xml解析详解
- 安卓第一次搭建C/S架构
- windows10+MongDb4.0.4下载和安装
- 1067 Sort with Swap(0, i) (25 分) 好,容易出错
- HFSS器件导入Altium 教程
- 训练GAN的16个trick
- Window 配置RabbitMQ
- python设置excel单元格格式_Python帮你做Excel——格式设置与画图
- MySQL中建表时的int(m)中的m代表什么意思?
- 脉冲式和相位式激光测距
- 我迄今见过最完美的中文编程开发工具
- C++函数调用方式(_stdcall, _pascal, _cdecl...)总结
- python 利用Scipy计算person 和spearman相关系数
- Proxy_代理模式
热门文章
- shp文件中polyline是什么_shp文件的读取
- python抓取日本网站上iphone5的价格
- 马哥学习----李洋个人笔记--启动故障排除
- 雅士利处理器软件_雅士利/ASHLY DSP360 专业3进6出处理器
- hibernate之多对多映射操作中间表
- 计算机专业课程思政优秀案例,【转载】专业课程思政教学案例分享之《专业导论(计算机科学与技术)》...
- kotlin读取文件算法
- js判断Lodop驱动是否安装
- 小说作者推荐:耳东兔子合集
- php 2038年,php如何取2038年后的时间戳|php时间日期处理到2038年之后该怎么办 - PS下...