逻辑回归的常见面试点总结

1.简介面试

      逻辑回归是面试当中很是喜欢问到的一个机器学习算法,由于表面上看逻辑回归形式上很简单,很好掌握,可是一问起来就容易懵逼。因此在面试的时候给你们的第一个建议不要说本身精通逻辑回归,很是容易被问倒,从而减分。下面总结了一些日常我在做为面试官面试别人和被别人面试的时候,常常遇到的一些问题。算法

2.正式介绍机器学习

     如何凸显你是一个对逻辑回归已经很是了解的人呢。那就是用一句话归纳它!逻辑回归假设数据服从伯努利分布,经过极大化似然函数的方法,运用梯度降低来求解参数,来达到将数据二分类的目的。分布式

     这里面其实包含了5个点 1:逻辑回归的假设,2:逻辑回归的损失函数,3:逻辑回归的求解方法,4:逻辑回归的目的,5:逻辑回归如何分类。这些问题是考核你对逻辑回归的基本了解。函数

  • 逻辑回归的基本假设
    • 任何的模型都是有本身的假设,在这个假设下模型才是适用的。逻辑回归的第一个基本假设是假设数据服从伯努利分布。伯努利分布有一个简单的例子是抛硬币,抛中为正面的几率是$p$,抛中为负面的几率是$1-p$.在逻辑回归这个模型里面是假设 $h_\theta\left(x\right )$ 为样本为正的几率,$1- h_\theta\left(x\right )$为样本为负的几率。那么整个模型能够描述为$$h_\theta\left(x;\theta \right )=p$$
    • 逻辑回归的第二个假设是假设样本为正的几率是 $$p=\frac{1}{1+e^{-\theta^{T} x}}$$
    • 因此逻辑回归的最终形式 $$h_\theta\left(x;\theta \right )=\frac{1}{1+e^{-\theta^{T} x}}$$
  • 逻辑回归的损失函数
    • 逻辑回归的损失函数是它的极大似然函数$$L_\theta\left(x\right )= \prod _{i=1}^{m}h_\theta(x^{i};\theta )^{y{i}}*(1-h_\theta(x^{i};\theta))^{1-y^{i}} $$
  • 逻辑回归的求解方法
    • 因为该极大似然函数没法直接求解,咱们通常经过对该函数进行梯度降低来不断逼急最优解。在这个地方其实会有个加分的项,考察你对其余优化方法的了解。由于就梯度降低自己来看的话就有随机梯度降低,批梯度降低,small batch 梯度降低三种方式,面试官可能会问这三种方式的优劣以及如何选择最合适的梯度降低方式。
      • 简单来讲 批梯度降低会得到全局最优解,缺点是在更新每一个参数的时候须要遍历全部的数据,计算量会很大,而且会有不少的冗余计算,致使的结果是当数据量大的时候,每一个参数的更新都会很慢。
      • 随机梯度降低是以高方差频繁更新,优势是使得sgd会跳到新的和潜在更好的局部最优解,缺点是使得收敛到局部最优解的过程更加的复杂。
      • 小批量梯度降低结合了sgd和batch gd的优势,每次更新的时候使用n个样本。减小了参数更新的次数,能够达到更加稳定收敛结果,通常在深度学习当中咱们采用这种方法。
    • 其实这里还有一个隐藏的更加深的加分项,看你了不了解诸如Adam,动量法等优化方法。由于上述方法其实还有两个致命的问题。
      • 第一个是如何对模型选择合适的学习率。自始至终保持一样的学习率其实不太合适。由于一开始参数刚刚开始学习的时候,此时的参数和最优解隔的比较远,须要保持一个较大的学习率尽快逼近最优解。可是学习到后面的时候,参数和最优解已经隔的比较近了,你还保持最初的学习率,容易越过最优势,在最优势附近来回振荡,通俗一点说,就很容易学过头了,跑偏了。
      • 第二个是如何对参数选择合适的学习率。在实践中,对每一个参数都保持的一样的学习率也是很不合理的。有些参数更新频繁,那么学习率能够适当小一点。有些参数更新缓慢,那么学习率就应该大一点。这里咱们不展开,有空我会专门出一个专题介绍。
  • 逻辑回归的目的
    • 该函数的目的即是将数据二分类,提升准确率。
  • 逻辑回归如何分类
    • 逻辑回归做为一个回归(也就是y值是连续的),如何应用到分类上去呢。y值确实是一个连续的变量。逻辑回归的作法是划定一个阈值,y值大于这个阈值的是一类,y值小于这个阈值的是另一类。阈值具体如何调整根据实际状况选择。通常会选择0.5作为阈值来划分。

3.对逻辑回归的进一步提问学习

    逻辑回归虽然从形式上很是的简单,可是其内涵是很是的丰富。有不少问题是能够进行思考的优化

  • 逻辑回归的损失函数为何要使用极大似然函数做为损失函数?
    • 损失函数通常有四种,平方损失函数,对数损失函数,HingeLoss0-1损失函数,绝对值损失函数。将极大似然函数取对数之后等同于对数损失函数。在逻辑回归这个模型下,对数损失函数的训练求解参数的速度是比较快的。至于缘由你们能够求出这个式子的梯度更新$$\theta _j=\theta _j-\left ( y^{i} -h_\theta (x^{i};\theta ) \right )\ast x^{i}_j$$这个式子的更新速度只和$x^{i}_j$,$y^{i} $相关。和sigmod函数自己的梯度是无关的。这样更新的速度是能够自始至终都比较的稳定。
    • 为何不选平方损失函数的呢?其一是由于若是你使用平方损失函数,你会发现梯度更新的速度和sigmod函数自己的梯度是很相关的。sigmod函数在它在定义域内的梯度都不大于0.25。这样训练会很是的慢。
  • 逻辑回归在训练的过程中,若是有不少的特征高度相关或者说有一个特征重复了100遍,会形成怎样的影响?
  • 先说结论,若是在损失函数最终收敛的状况下,其实就算有不少特征高度相关也不会影响分类器的效果。
  • 可是对特征自己来讲的话,假设只有一个特征,在不考虑采样的状况下,你如今将它重复100遍。训练之后完之后,数据仍是这么多,可是这个特征自己重复了100遍,实质上将原来的特征分红了100份,每个特征都是原来特征权重值的百分之一。
  • 若是在随机采样的状况下,其实训练收敛完之后,仍是能够认为这100个特征和原来那一个特征扮演的效果同样,只是可能中间不少特征的值正负相消了。
  • 为何咱们仍是会在训练的过程中将高度相关的特征去掉?
    • 去掉高度相关的特征会让模型的可解释性更好
    • 能够大大提升训练的速度。若是模型当中有不少特征高度相关的话,就算损失函数自己收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,自己就会增大训练的时间。

4.逻辑回归的优缺点总结spa

    面试的时候,别人也常常会问到,你在使用逻辑回归的时候有哪些感觉。以为它有哪些优缺点。内存

     在这里咱们总结了逻辑回归应用到工业界当中一些优势:资源

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

      可是逻辑回归自己也有许多的缺点:

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

5.总结

在这篇博文里面,我总结了在平常面试的过程中逻辑回归可能会遇到的问题,欢迎你们在下面留言和我进行交流,将大家面试遇到的关于逻辑回归的问题发出来,我会尽力去解答的。

相关文章
相关标签/搜索