关于逻辑回归,面试官们都怎么问

2020 年 4 月 16 日 AINLP

作者 | WEIWEI
整理 | NewBeeNLP

面试官们都怎么问系列文章主旨是尽可能完整全面地整理ML/DL/NLP相关知识点,不管是刚入门的新手、准备面试的同学或是温故知新的前辈,我们希望都能通过这一系列的文章收获到或多或少的帮助 

这会持续更新,希望你能喜欢 目前已整理的有:

一. 一句话概括逻辑回归

逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

这句话包含了五点,接下来一一介绍:

  • 逻辑回归的假设
  • 逻辑回归的损失函数
  • 逻辑回归的求解方法
  • 逻辑回归的目的
  • 逻辑回归如何分类

二. 逻辑回归的假设

任何的模型都是有自己的假设,在这个假设下模型才是适用的。

Hypothesis #1

逻辑回归的第一个基本假设是假设数据服从伯努利分布。

伯努利分布:是一个离散型概率分布,若成功,则随机变量取值1;若失败,随机变量取值为0。成功概率记为p,失败为q = 1-p。

在逻辑回归中,既然假设了数据分布服从伯努利分布,那就存在一个成功和失败,对应二分类问题就是正类和负类,那么就应该有一个样本为正类的概率 ,和样本为负类的概率 。具体我们写成这样的形式:

Hypothesis #2

逻辑回归的第二个假设是正类的概率由sigmoid的函数计算,即:

预测样本为正类的概率:

预测样本为负类的概率:

写在一起,即预测样本的类别:

个人理解,解释一下这个公式,并不是用了样本的标签 ,而是说你想要得到哪个的概率, 时意思就是你想得到正类的概率, 时就意思是你想要得到负类的概率。另外在求参数时,这个 是有用的,这点在下面会说到。

另外关于这个值, 是个概率,还没有到它真正能成为预测标签的地步,更具体的过程应该是分别求出正类的概率即 时,和负类的概率 时,比较哪个大,因为两个加起来是1,所以我们通常默认的是只用求正类概率,只要大于0.5即可归为正类,但这个0.5是人为规定的,如果愿意的话,可以规定为大于0.6才是正类,这样的话就算求出来正类概率是0.55,那也不能预测为正类,应该预测为负类。

三. 逻辑回归的损失函数

都说逻辑回归的损失函数是它的极大似然函数,但是为啥呢?

先一句话概括一下极大似然估计,顺便就复习了,以防面试官问起来:

极大似然估计:利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值(模型已定,参数未知)

再联系到逻辑回归里,一步步来分解上面这句话,首先确定一下模型是否已定,模型就是用来预测的那个公式:

参数就是里面的 ,那什么是样本结果信息,就是我们的 ,是我们的样本,分别为特征和标签,我们的已知信息就是在特征取这些值的情况下,它应该属于y类(正或负)。

反推最具有可能(最大概率)导致这些样本结果出现的参数,举个例子,我们已经知道了一个样本点,是正类,那么我们把它丢入这个模型后,它预测的结果一定得是正类啊,正类才是正确的,才是我们所期望的,我们要尽可能的让它最大,这样才符合我们的真实标签。反过来一样的,如果你丢的是负类,那这个式子计算的就是负类的概率,同样我们要让它最大,所以此时不用区分正负类。

这样串下来,一切都说通了,概括一下:

一个样本,不分正负类,丢入模型,多的不说,就是一个字,让它大

一直只提了一个样本,但对于整个训练集,我们当然是期望所有样本的概率都达到最大,也就是我们的目标函数,本身是个联合概率,但是假设每个样本独立,那所有样本的概率就可以写成:

个人理解,此时,只能叫它目标函数,因为它是我们的目标,那损失函数是啥呢?一般别的算法里,损失函数都是真实值和预测值的误差确定的,所以很好理解。

查了半天资料,好像没有个官方的概念是介绍log损失函数的,那我只能个人理解继续上了,逻辑回归没有损失函数,这个log损失函数是强行叫它的。那为啥叫它log损失函数呢?

我们的目标是最大化上面那个目标函数,那我们就要向目标方向前进,要最大,那就求导啊,要求导,那就化简啊,不然太复杂了,那怎么化简呢?

  • 第一步,取对数,去掉连乘,变为连加,直接给出化简后的结果:
  • 第二步,为了迎合一般要最小化损失函数,所以加个负号:
  • 化简之后(步骤就不详细放了),就可以称为损失函数了:

四. 逻辑回归的求解方法

一般都是用梯度下降法来求解,梯度下降又有随机梯度下降,批梯度下降,small batch 梯度下降三种方式:

  • 简单来说 批梯度下降会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,并且会有很多的冗余计算,导致的结果是当数据量大的时候,每个参数的更新都会很慢。
  • 随机梯度下降是以高方差频繁更新,优点是使得sgd会跳到新的和潜在更好的局部最优解,缺点是使得收敛到局部最优解的过程更加的复杂。
  • 小批量梯度下降结合了sgd和batch gd的优点,每次更新的时候使用n个样本。减少了参数更新的次数,可以达到更加稳定收敛结果,一般在深度学习当中我们采用这种方法。

加分项,看你了不了解诸如Adam,动量法等优化方法(在这就不展开了,以后有时间的话专门写一篇关于优化方法的)。因为上述方法其实还有两个致命的问题:

  • 第一个是如何对模型选择合适的学习率。自始至终保持同样的学习率其实不太合适。因为一开始参数刚刚开始学习的时候,此时的参数和最优解隔的比较远,需要保持一个较大的学习率尽快逼近最优解。但是学习到后面的时候,参数和最优解已经隔的比较近了,你还保持最初的学习率,容易越过最优点,在最优点附近来回振荡,通俗一点说,就很容易学过头了,跑偏了。
  • 第二个是如何对参数选择合适的学习率。在实践中,对每个参数都保持的同样的学习率也是很不合理的。有些参数更新频繁,那么学习率可以适当小一点。有些参数更新缓慢,那么学习率就应该大一点。

五. 逻辑回归的目的

将数据二分类

六. 逻辑回归的如何分类

这个在上面的时候提到了,要设定一个阈值,判断正类概率是否大于该阈值,一般阈值是0.5,所以只用判断正类概率是否大于0.5即可。

七. 逻辑回归为什么用极大似然函数作为损失函数

一般和平方损失函数(最小二乘法)拿来比较,因为线性回归用的就是平方损失函数,原因就是平方损失函数加上sigmoid的函数将会是一个非凸的函数,不易求解,会得到局部解,用对数似然函数得到高阶连续可导凸函数,可以得到最优解。

其次,是因为对数损失函数更新起来很快,因为只和x,y有关,和sigmoid本身的梯度无关。

八. 逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响

先说结论,如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。

但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。

如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。

九. 为什么我们还是会在训练的过程当中将高度相关的特征去掉

去掉高度相关的特征会让模型的可解释性更好

可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。

十. 逻辑回归的优缺点总结

优点:

  • 形式简单,模型的可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大。
  • 模型效果不错。在工程上是可以接受的(作为baseline),如果特征工程做的好,效果不会太差,并且特征工程可以大家并行开发,大大加快开发的速度。
  • 训练速度较快。分类的时候,计算量仅仅只和特征的数目相关。并且逻辑回归的分布式优化sgd发展比较成熟,训练的速度可以通过堆机器进一步提高,这样我们可以在短时间内迭代好几个版本的模型。
  • 资源占用小,尤其是内存。因为只需要存储各个维度的特征值。
  • 方便输出结果调整。逻辑回归可以很方便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进行cut off,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类)。

缺点:

  • 准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布。
  • 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
  • 处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题 。
  • 逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。

- END -


推荐阅读

AINLP年度阅读收藏清单

当当的羊毛,快薅,这一次要拼手速!

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

From Word Embeddings To Document Distances 阅读笔记

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

这门斯坦福大学自然语言处理经典入门课,我放到B站了

可解释性论文阅读笔记1-Tree Regularization

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


登录查看更多
0

相关内容

逻辑回归(也称“对数几率回归”)(英语:Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作“评定模型”、“分类评定模型”)是离散选择法模型之一,属于多重变量分析范畴,是社会学、生物统计学、临床、数量心理学、计量经济学、市场营销等统计实证分析的常用方法。在统计学中,logistic模型(或logit模型)用于对存在的某个类或事件的概率建模,例如通过/失败、赢/输、活着/死了或健康/生病。这可以扩展到建模若干类事件,如确定一个图像是否包含猫、狗、狮子等。图像中检测到的每个物体的概率都在0到1之间,其和为1。
【机器学习术语宝典】机器学习中英文术语表
专知会员服务
59+阅读 · 2020年7月12日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
BAT机器学习面试题及解析(266-270题)
七月在线实验室
6+阅读 · 2017年12月13日
BAT题库 | 机器学习面试1000题系列(第191~195题)
七月在线实验室
6+阅读 · 2017年11月15日
BAT机器学习面试1000题系列(第51~55题)
七月在线实验室
10+阅读 · 2017年10月8日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
从逻辑回归到最大熵模型
夕小瑶的卖萌屋
4+阅读 · 2017年7月11日
Generating Rationales in Visual Question Answering
Arxiv
5+阅读 · 2020年4月4日
Arxiv
24+阅读 · 2020年3月11日
Arxiv
7+阅读 · 2019年10月6日
Foreground-aware Image Inpainting
Arxiv
4+阅读 · 2019年1月17日
Logically-Constrained Reinforcement Learning
Arxiv
3+阅读 · 2018年12月6日
Learning From Positive and Unlabeled Data: A Survey
Arxiv
5+阅读 · 2018年11月12日
VIP会员
相关VIP内容
【机器学习术语宝典】机器学习中英文术语表
专知会员服务
59+阅读 · 2020年7月12日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
相关资讯
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
深度学习面试100题(第71-75题)
七月在线实验室
5+阅读 · 2018年8月2日
详解常见的损失函数
七月在线实验室
20+阅读 · 2018年7月12日
面试整理:关于代价函数,正则化
数据挖掘入门与实战
8+阅读 · 2018年3月29日
BAT机器学习面试题1000题(316~320题)
七月在线实验室
14+阅读 · 2018年1月18日
BAT机器学习面试题及解析(266-270题)
七月在线实验室
6+阅读 · 2017年12月13日
BAT题库 | 机器学习面试1000题系列(第191~195题)
七月在线实验室
6+阅读 · 2017年11月15日
BAT机器学习面试1000题系列(第51~55题)
七月在线实验室
10+阅读 · 2017年10月8日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
从逻辑回归到最大熵模型
夕小瑶的卖萌屋
4+阅读 · 2017年7月11日
Top
微信扫码咨询专知VIP会员