机器学习面试必考面试题汇总—附解析

article/2025/9/9 10:17:09

问题:xgboost对特征缺失敏感吗,对缺失值做了什么操作,存在什么问题

不敏感,可以自动处理,处理方式是将missing值分别加入左节点 右节点取分裂增益最大的节点将missing样本分裂进这个节点 。这种处理方式的问题在xgboost仅仅在特征的非缺失的值上进行分裂然后missing值直接放入其中一个节点,显然当缺失值很多的情况下,比如缺失80%,那么xgb分裂的时候仅仅在20%的特征值上分裂,这是非常容易过拟合的。

问题:简要说一下Lightgbm相对于xgboost的优缺点

优点:直方图算法—更高(效率)更快(速度)更低(内存占用)更泛化(分箱与之后的不精确分割也起到了一定防止过拟合的作用);

缺点:直方图较为粗糙,会损失一定精度,但是在gbm的框架下,基学习器的精度损失可以通过引入更多的tree来弥补。

问题:对比一下XGB和lightGBM在节点分裂时候的区别

xgb是level-wise,lgb是leaf-wise,level-wise指在树分裂的过程中,同一层的非叶子节点,只要继续分裂能够产生正的增益就继续分裂下去,而leaf-wise更苛刻一点,同一层的非叶子节点,仅仅选择分裂增益最大的叶子节点进行分裂。


篇幅有限,仅展示部分题目,本篇文章面试题来源于七月在线 - 智能时代在线职教平台,免费题库,近4000道名企AI笔试⾯试题等着⼤家,刷题愉快。


问题:xgb何时停止分裂?

人工设定的参数,max_depth,min_data_in_leaf等等,这类通过超参数形式限制树的复杂度的方法都会引发xgb的分裂的停止,也就是常说的预剪枝;人工不限制,自由生长的情况下,当分裂增益小于0则基学习器停止分裂

问题:RF和xgboost哪个对异常点更敏感

xgb明显敏感的多,当然对rf也是有一定影响的,rf的每棵数的生成是独立的,异常点数量不多的情况下异常点常常和正常样本中的某些样本合并在一个分支里。但是xgb不一样,异常样本的t-1轮的预测值和真实标签计算出来的负梯度会一直很大。

假设当到达某一轮的时候,所有正常样本的计算得到的负梯度都很小而异常样本的负梯度很大例如【0.0000001,0.0000001,0.0000001,0.0000001,0.0000001,10】,这个时候新树会可能会继续进行不正常的分裂为[0.0000001,0.0000001,0.0000001,0.0000001,0.0000001],[10],而这样的分裂是不合理的,因为异常值本身可能是因为某些人为失误导致的数据记录错误,或者异常样本完全是属于另外一种分布,此时强制要进行模型训练会导致模型的结果有偏从而发生过拟合。当然异常样本数量很少比如10个以内的时候而正常样本有100000000个其实基本没什么影响,但是如果占比较高的话是会产生影响的。

问题:xgb的预排序算法是怎么做的呢?

将原始特征进行排序之后以块的形式保存到内存中,在块里面保存排序后的特征值及对应样本的引用,以便于获取样本的一阶、二阶导数值,但意味着除了保存原始特征之外还要保存原始特征的排序结果,耗内存。

问题:XGB特征重要性程度是怎么判断的?

官网上给出的方案,total_gain就是特征带来的总的分裂增益,也就是我们常规意义上的分裂总增益,weight,被用来作为分裂节点的次数,也就是我们常规意义上的分裂总次数,gain=total_gain/weight,计算的是每一次分裂带来的平均增益,total_cover表示特征分裂的样本数,举个例子,假设初始样本有10000个,第一次分裂的时候使用了特征A,也就是特征A在这10000个样本上分裂,则此时的cover值为10000,假设根据特征A分裂出左枝的样本有1000个,右边有9000个,而在左枝特征B是最优特征根据这1000个样本进行分裂,则B当前的cover是1000,依次类推最后求和。而cover显然就是total_cover/weight,也就是平均每次分裂所“负责”的样本数。

问题:XGBoost和GBDT的区别有哪些?

1、算法层面:

(1)损失函数的二阶泰勒展开;

(2)树的正则化概念的引入,对叶节点数量和叶子节点输出进行了约束,方式是将二者形成的约束项加入损失函数中;

(3)二阶泰勒展开与树正则化推出了新的叶子节点输出的计算公式而不是原始gbdt那样的简单平均;

(4)a、对于基础学习器的改进,

分裂的时候自动根据是否产生正增益指导是否进行分裂,因为引入了正则项的概念,分裂的时候这个预剪枝更加严苛;

b、对于缺失值的处理,xgboost根据左右子节点的增益大小将缺失值分到增益大的节点中,而sklearn中的gbdt是无法处理缺失值的,因为sklearn中的gbdt是以sklearn中的cart为基学习器的,而sklearn中的cart也并没有实现对缺失值的处理功能。

(5)XGBoost 新增回归树的学习率设置在 (0,1)范围内,有利于学习数量更多的树,防止过拟合;而 GBDT 拟合负梯度,默认学习率为 1。

(6)引入了随机森林使用的列采样功能,便于降低过拟合;

(7)引入了许多近似直方图之类的优化算法来进一步提高树的训练速度与抗过拟合的能力,这个比较复杂,因为实现了很多种算法,后面单独写一篇来总结;

2、工程层面

(1)对每个特征进行分块(block)并排序(pre_sort),将排序后的结构保存在内存中,这样后续分裂的时候就不需要重复对特征进行排序然后计算最佳分裂点了,并且能够进行并行化计算.这个结构加速了split finding的过程,只需要在建树前排序一次,后面节点分裂时直接根据索引得到梯度信息。

(2)其它更复杂的工程优化处理:
https://zhuanlan.zhihu.com/p/75217528

问题:你有自己用过别的模型然后调参之类的吗?能说一下基本的调参流程吗?XGBoost知道吗,以XGBoost为例子说一下调参流程吧。

一般来说采用贝叶斯优化或者遗传算法等启发式的优化算法确定相对最佳参数(如果不熟悉的话用随机搜索也是可以的,或者网格搜索但是参数得到步长设置的很大,一步一步确定相对最优参数的区间),然后再根据实际的模型在验证集上的表现做一些微调,对于过拟合优先调整max_depth和树的数量,在实际使用过程中这两个参数对于模型的整体效果影响很大很明显。对于欠拟合,反着来就行了。

问题:为什么在 xgboost 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值,一阶导数信息和二阶导数信息就可以进行叶子分裂优化计算?

首先需要说明的是,题目中所描述的仅仅是不选定损失函数的具体形式,而并不是说不需要损失函数,从 xgboost 节点分裂的计算公式,也就是下图中,可以看出g和h都是和损失函数有关的,所以不可能完全不考虑损失函数,损失函数的具体形式可以根据业务需求进行修改,可参见面试题:
https://www.julyedu.com/question/big/kp_id/41/ques_id/3097。

点击此处添加图片说明文字

 ↓↓↓免费送!福利!福利!福利↓↓↓

了解七月在线的的小伙伴应该知道2019年七月在线出了两本书《名企AI面试100题》和《名企AI面经100篇》,反响很好,助力数千人拿到dream offer。今年我们又整理出了两本书《2021年最新大厂AI面试题 Q2版》、《机器学习十大算法系列》、《2021年最新大厂AI面试题 Q3版》,七月在线学员拿到书后反响不错。为了让更多AI人受益,七仔现把电子版免费送给大家。

↓ ↓ ↓以下5本书,电子版免费送 ↓ ↓ ↓

刚出的《2021年最新大厂AI面试题 Q3版》还没来得及拍照:

《2021年最新大厂AI面试题 Q2版》、《2021年最新大厂AI面试题 Q3版》《机器学习十大算法系列》、《名企AI面试100题》及《名企AI面经100篇》无套路,免费取!

需要的小伙伴评论区发书名,看到后发你。

喜欢这样的福利请三连三连,你的鼓励是七仔继续放福利,持续输出的不竭动力!


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

相关文章

机器学习面试题——聚类算法

机器学习面试题——聚类算法 提示:互联网大厂经常考的传统机器学习算法 文章目录 机器学习面试题——聚类算法[TOC](文章目录) 题目k-means介绍一下,K-means的过程k-means优缺点k-means的簇(k簇)怎么选,K-means如何选取…

机器学习面试题目整理

0 调参技巧 清洗数据,数据预处理,数据增广是否使用预训练模型使用BN在过拟合后,使用正则化技巧如L1、L2、Dropout对于不均匀样本,使用重采样使用合适的优化器。第一,如果你关心快速收敛,使用自适应优化器&…

面试 | 22道机器学习常见面试题目

(1) 无监督和有监督算法的区别? 有监督学习:对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。这里,所有的标记(分类&#xf…

最基本的25道深度学习面试问题和答案

近年来,对深度学习的需求不断增长,其应用程序被应用于各个商业部门。各公司现在都在寻找能够利用深度学习和机器学习技术的专业人士。在本文中,将整理深度学习面试中最常被问到的25个问题和答案。如果你最近正在参加深度学习相关的面试工作&a…

机器学习高频面试题(41道)

Q1: What’s the trade-off between bias and variance? 问题1: 什么是偏差(bias)、方差(variable)之间的均衡? Bias 是由于你使用的学习算法过度简单地拟合结果或者错误地拟合结果导致的错误。它反映的是模型在样本…

总结了200道经典的机器学习面试题(附参考答案)

刷题,是面试前的必备环节。本文总结了往年BAT机器学习面试题,干货满满,值得收藏。 想要入职大厂可谓是千军万马过独木桥。 为了通过层层考验,刷题肯定是必不可少的。本文根据网络在线发布的BAT机器学习面试1000题系列&#xff0…

微信小程序—域名配置(图文)

微信小程序—域名配置 1、微信公众平台登录 进入后选择‘开发’ 选择‘开发设置’ 域名配置,输入easy-mock即可(因为我用的地址就是easy-mock,如果用的是豆瓣接口就直接域名配置成豆瓣的就行) 2、打开右上角的详情 选择不校验…

微信小程序:小程序服务器域名配置合法域名

微信小程序开发过程中,微信小程序只要有网络请求就必定要用到服务器接口,这样的话就需要在微信小程序管理平台里面添加服务器的域名,而且添加的这个域名一定是合法有效的域名,不然就不会设置成功的。 微信小程序在生产环境下如果没有配置合法域名,是不能正常访问的,那就…

tomcat 配置域名

Tomcat 配置域名 在windows中首先找到conf下面的server.xml 把Connector 标签中的端口改成80 然后把添加一个Host name为域名appBase为路径 如下 Engine 标签也是 最后在C盘 windows\System32\drivers\etc 下面的hosts添加下面这行 127.0.0.1 www.test.com 重新启动tomcat …

vuepress(六)阿里云二级域名配置与添加SSL证书

文章目录 写在前面第一类:用来存放网站第二类:自定义 OSS对象存储 的图片路径 写在前面 这里是小飞侠Pan🥳,立志成为一名优秀的前端程序媛!!! 本篇博客收录于我的github前端笔记仓库中&#x…

前端nginx配置并且同一域名配置多个项目以及nginx跨域设置

前端nginx配置并且同一域名配置多个项目 前端nginx配置并且同一域名配置多个项目first of all下载配置nginx配置nginx开机自启动nginx -t 找不到nginx的修复nginx进行重启Nginx同一个域名配置多个项目nginx按不同的目录分发给不同的项目启用二级域名,不同的项目分配…

vhosts.conf域名配置

DocumentRoot "网站目录" ServerName 域名(比如www.baidu.com) ServerAlias 域名别名(www.baidu.com www.baidu.cn) Directory 得与DocumentRoot目录相同

uniapp:小程序体验版和预览,云函数不响应,小程序域名配置

uniapp槽点 uniapp还是很便利的,为大家免费提供了低代码平台,很多插件和实现方案。使用过程中也有很多想吐槽的,我是第一次接触跨平台,文档上有的地方很笼统,比如这域名配置,文档就没说我应该配置哪个域名…

云服务器配置和域名配置

阿里云服务器 之前在阿里云上买了域名和云服务器,挂放博客和常的小项目,买的最低配的,但是内存太小,另外买了一个硬盘。 我所使用的是windows系统的,方便快捷操作。 远程桌面连接 windows自带的远程桌面连接功能&…

linux安装nginx并配置ssl证书 HTTPS和域名配置

1.下载安装包 cd /usr/local/src/wget http://nginx.org/download/nginx-1.21.3.tar.gz2.解压。tar -xzf nginx-1.21.3.tar.gz 3.cd nginx-1.21.3 4.yum install openssl openssl-devel 5.安装ssl证书需要的模块。 ./configure --with-file-aio --with-threads --with-http_…

Windows配置域名

Windows配置域名 最近想在Windows 电脑玩玩 Apache2,想用域名来完成做代理,所以涉及Windows配置域名,来记录一下 Apache Linux 的安装查看:Apache2的安装与介绍 Apache Windows 的安装请查看:Apache2 Windows 安装 …

微信公众号网页授权域名和JS接口安全域名配置攻略

这篇博文跟大家分享下如何配置微信公众号网页授权域名和JS接口安全域名配置。 打开微信公众平台 https://mp.weixin.qq.com/ 登陆成功后进入微信公众平台后台管理,在最底部可以看到 开发—》接口权限 我们可以看到正如下图所示有两个非常常用的接口:微…

域名——host配置

httpd-vhosts.conf 配置 在D:\xampp\apache\conf\extra中打开httpd-vhosts.conf文件&#xff0c;找到文件末尾&#xff0c;添加 <VirtualHost *:80> DocumentRoot "D:\work\Lianxi" ServerName mydemo <Directory "D:\work\Lianxi"> Opti…

支付宝小程序H5域名配置

位置&#xff1a; 支付宝开放平台--【控制台】--【开发设置】--【开发设置】--【H5域名配置】 提示 1、下载校验文件是一个.html文件&#xff0c;放到前端项目根目录 2、点击这里&#xff0c;可能有bug,不用管&#xff0c; 3、把域名https://xxx.com添加点确定&#xff0c;可…

阿里云申请域名及域名配置https

1、阿里云域名申请 买到域名之后&#xff0c;要对域名进行实名认证&#xff08;上传身份证并拍照&#xff09;&#xff08;阿里云审核一天&#xff09; 2、域名工信部备案 1、阿里云域名备案&#xff0c;这个也要实名认证&#xff0c;其中阿里云员工审核并打电话&#xff08;…