二、逻辑回归LR面试题总结

article/2025/8/28 16:43:51

1. 简单介绍一下逻辑回归?

逻辑回归主要用来解决分类问题,线性回归的结果 Y Y Y带入一个非线性变换的Sigmoid函数中,得到 [ 0 , 1 ] [0,1] [0,1]之间取值范围的数 S S S S S S可以把它看成是一个概率值,如果我们设置概率阈值为0.5,那么 S S S大于0.5可以看成是正样本,小于0.5看成是负样本,就可以进行分类了。

2. 逻辑回归的损失函数推导?

逻辑回归本质上是线性回归,即先把特征线性求和,然后带入Sigmoid函数中作为假设函数来进行预测。
在这里插入图片描述
逻辑回归用来分类0/1 问题,也就是预测结果属于0 或者1 的二值分类问题。这里假设了二值满足伯努利分布,也就是:
在这里插入图片描述
可以合并成:
在这里插入图片描述
似然函数为:
在这里插入图片描述
取对数并取反则得到负对数损失函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/a18a8d80d31f417b8e4aaffa0570f640.png

3. 可以进行多分类吗?

  • 采用一对多的方法扩展到多分类:
    每次将一个类型作为正例,其他的作为反例,训练 N N N个分类器。在预测阶段,每个分类器可以根据测试样本,得到当前正类的概率,选择概率最大的分类器,其正类就可以作为预测结果。
    特点:效率较高,有多少个类别就训练多少个分类器,复杂度使O(n)。
    但容易造成训练集样本数量的不平衡(Unbalance),尤其在类别较多的情况下,经常容易出现正类样本的数量远远不及负类样本的数量,这样就会造成分类器的偏向性。
  1. 一对一的方法:
    N N N个类别两两配对,得到多个分类器( N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2),预测的时候,将样本通过所有分类器,通过投票来得到结果,最后票数最多的类别被认定为该样本的类

4. LR+离散特征原因?

  1. 提高计算速度。稀疏向量内积乘法运算速度快,计算结果方便存储
  2. 鲁棒性。减小异常数据的干扰。
  3. 稳定性。降低特征变化带来的影响。
  4. 方便交叉与特征组合。进一步引入非线性
  5. 简化模型。特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

5. 逻辑回归常用的优化方法

  1. 一阶方法:
    梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。
  2. 二阶方法:
    牛顿法、拟牛顿法。

这里详细说一下牛顿法的基本原理和牛顿法的应用方式。牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而牛顿法恰好可以给这种问题提供解决方法。实际应用中牛顿法首先选择一个点作为起始点,并进行一次二阶泰勒展开得到导数为0的点进行一个更新,直到达到要求,这时牛顿法也就成了二阶求解问题,比一阶方法更快。我们常常看到的x通常为一个多维向量,这也就引出了Hessian矩阵的概念(就是x的二阶导数矩阵)。
缺点:牛顿法是定长迭代,没有步长因子,所以不能保证函数值稳定的下降,严重时甚至会失败。还有就是牛顿法要求函数一定是二阶可导的。而且计算Hessian矩阵的逆复杂度很大。
拟牛顿法不用二阶偏导而是构造出Hessian矩阵的近似正定对称矩阵的方法称为拟牛顿法。拟牛顿法的思路就是用一个特别的表达形式来模拟Hessian矩阵或者是他的逆使得表达式满足拟牛顿条件。主要有DFP法(逼近Hession的逆)、BFGS(直接逼近Hession矩阵)、 L-BFGS(可以减少BFGS所需的存储空间)。

6. 逻辑回归的优缺点

优点:

  • 易于理解,实现简单;
  • 计算量小,计算速度快,存储资源低;
  • 方便观测样本的概率。
    缺点:
  • 容易欠拟合,分类精度不高;
  • 特征空间很大时表现效果不好;

7. RL与SVM有什么区别

  • 线性回归做分类因为考虑了所有样本点到分类决策面的距离,所以在两类数据分布不均匀的时候将导致误差非常大;
    LR和SVM克服了这个缺点,其中LR将所有数据采用sigmoid函数进行了非线性映射,削弱远离分类决策面的数据的作用;SVM直接去掉了远离分类决策面的数据,只考虑支持向量的影响;
  • LR是参数模型,SVM是非参数模型;
  • 从目标函数来看,区别在于逻辑回归采用的是交叉熵损失函数,SVM采用的是hinge loss;
  • 逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些;

答题不要贪多反而最主要的都没说清楚,主观题言之有理即可不用面面俱到。基础的问题一定要耐心背熟,有了框架线索,思路就会清晰,易于扩展。

8. 线性回归与逻辑回归的区别

  • 线性回归主要解决回归任务,逻辑回归主要解决分类问题
  • 线性回归的输出一般是连续的,逻辑回归的输出一般是离散的;
  • 逻辑回归的输入是线性回归的输出;
  • 线性回归的损失函数是 M S E MSE MSE,逻辑回归中,采用的是负对数损失函数

另一个回答思路:线性回归做分类因为考虑了所有样本点到分类决策面的距离,所以在两类数据分布不均匀的时候将导致误差非常大;而LR克服了这个缺点,其中LR将所有数据采用sigmod函数进行了非线性映射,削弱远离分类决策面的数据的作用。


http://chatgpt.dhexx.cn/article/uR53RLGy.shtml

相关文章

互联网面试——.Net 面试题

提供了最常见的 .Net 面试问题和许多公司提出的答案。让我们看看顶级 Dot Net 面试问题列表。 1. 什么是.NET? .NET 是一种软件开发框架。它就像其他软件开发框架(J2EE)一样。它以类库和 API 的形式提供运行时功能和一组丰富的预构建功能。此…

程序员面试逻辑题解析

《程序员面试逻辑题解析》 基本信息 原书名:Puzzles for Programmers and Pro 作者: (美)Dennis E. Shasha [作译者介绍] 译者: 费若愚 朱学武 出版社:人民邮电出版社 ISBN:9787115301956 上架时间:2012…

程序员面试必看32道经典逻辑推理题

写在前面: 此文档由一位学长整理,转载请附上原文出处链接 32道经典逻辑推理题包括有关二进制、水桶、钱、蓝眼、时间、重量、数学、其他等问题 Click here 有秘密哦!!! 点击浏览 文章目录 一、数字的魅力二、分而治之…

面试逻辑题

逻辑题目 逻辑题目现在也是面试中常考的题目,也不清楚面试出这种题目的意义,可能就是考察面试人员是否逻辑清晰. 这种题目没有什么好的方法,除非你见过原题,否则,只能根据所给出的条件慢慢分析,尽量不要用常规思路,希望大家要跳跃思维. 如果实在不行就给出一种解法,可能不是最…

面试常见逻辑题小整理

题一、 1 1 1 2 1 1 2 1 1 1 1 1 2 2 1 下一行是什么? 答案: 312211 题二、 (1)烧一根不均匀的绳要用一个小时,如何用它来判断半个小时? (2)烧一根不均匀的绳,从头烧…

二维vector数组初始化方法

在用devcpp编译程序时发现,二维vector数组如果只定义的话,不指定元素个数也不进行初始化的时候会导致编译出错。 通常情况下,可以只提供vector对象容纳的元素数量而略去初始值。此时库会创建一个值初始化的元素初值,并把它赋给容器…

【vector常用的6种初始化方法】

文章目录 一二三四五六 一 最常用,此时,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加…

vector的初始化和遍历

这里只说明常用的vector初始化的方式。一般vector的初始化我还是比较习惯于像数组一样的初始化方式。一个一个赋值&#xff0c;或者用花括号的初始化。下面用一个程序来说明&#xff1a; #include "stdafx.h"#include <vector>#include <iostream.h>usi…

c++ vector 初始化_C++--vector()的用法

vector()的用法 概念 vector 是向量类型&#xff0c;它可以容纳许多类型的数据&#xff0c;如若干个整数&#xff0c;所以称其为容器。vector 是C STL的一个重要成员&#xff0c;使用它时需要包含头文件&#xff1a; #include<vector>;一、vector的初始化 (1) vector&l…

C++中 std::vector 的6种初始化方法

1.vector<int> list1; 默认初始化&#xff0c;最常用 此时&#xff0c;vector为空&#xff0c; size为0&#xff0c;表明容器中没有元素&#xff0c;而且 capacity 也返回 0&#xff0c;意味着还没有分配内存空间。 这种初始化方式适用于元素个数未知&#xff0c;需要在…

怎样初始化二维vector

二维vector的初始化方法总结 初始化一个 二维vector,行M,列N学会用大括号初始化二维数组初始化一个 二维vector,行M,列不固定初始化一个二维vector,行列都不固定注意初始化二维vector为空时的情况leetcode例题1leetcode例题2 以定义一个二维整形数组并初始化为例&#xff1a; …

c++之vector 及 二维容器vector<vector<int>>初始化方法 及 三维数组初始化

C二维容器vector<vector>初始化方法解析 遇到的问题&#xff1a; 在解决“求最大字串”问题时想到了用二位数组vector<vector<int>> table&#xff0c;但是不知道怎么对其进行初始化&#xff08;初始化时指定二维容器的大小&#xff09;,于是网上搜索一番&a…

打算自学一些编程,想兼职程序员打零工,想问问现在哪个程序员兼职平台单子简单,不考察接单人学历?

兼职平台接单&#xff0c;都不查学历。 等你具备最基本的可以接单的技术能力时&#xff0c;找个技术工作&#xff0c;随随便便一份都能有2000以上。但是&#xff0c;自己接单&#xff1f;实不相瞒&#xff0c;会饿死的。没有什么钱是从一开始就坐在家里轻轻松松能赚到的。除非…

有哪些适合程序员的兼职?

前言 程序员兼职的方式有多种&#xff0c;在回答题主这个问题之前&#xff0c;我们先来了解一下当前互联网行业程序员为什么会选择兼职。 为什么程序员想要兼职&#xff1f; 在别人眼中程序员那是一个高薪的职业&#xff0c;近些年来&#xff0c;越来越多的程序员想在工作之…

不得不说,这19个程序员兼职平台让我1年收入60w

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间花在…

程序员兼职十大网站

前言 今天给大家介绍几个接私活的网站&#xff0c;接私活比较辛苦&#xff0c;如果弄不好的话&#xff0c;就是纯体力的劳动&#xff0c;大家也可以尝试做兼职远程开发。需要挣个生活费的小伙伴们&#xff0c;或者在校学生想锻炼自己的&#xff0c;可以去尝试一下。以下网站仅供…

各大程序员兼职平台靠谱嘛?这一篇文章就够了

搜索”程序员兼职“&#xff0c;能搜索到一堆营销软文&#xff0c;无非也就是你抄我&#xff0c;我抄你&#xff0c;换换顺序&#xff0c;今天我们不光谈优点&#xff0c;特点&#xff0c;还谈谈缺点&#xff0c;和大家关心的服务费问题&#xff0c;让大家看看到底哪个平台靠谱…

程序员去哪接私活?分享10个兼职平台,人已赚麻

你们当程序员不会都拿着几千、万把块钱的死工资吧&#xff0c;今天为大家分享一些可以接私单的平台&#xff0c;我反正已经赚麻了。 如果你的工作相对没那么费时间&#xff0c;可以空闲的时候去接点私活。或者是还没有找工作之前&#xff0c;可以通过一些平台接一些兼职&#…

Java程序员兼职平台推荐

有不少程序员兄弟时不时会私信问我&#xff0c;说自己是Java程序员&#xff0c;下班后或者是周六周末想要自己做点事情&#xff0c;有不有合适的Java兼职平台&#xff0c;在这里就做一个统一的回答&#xff1a; 平台到处都有&#xff0c;你可以找这样的平台,然后这样: 也可以找…

19个程序员兼职平台

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间…