Machine Learning面试常见问题梳理(算法篇)

本文梳理了机器学习面试中常见的算法问题,包括SVM、GBDT与XGBoost的区别、Boosting概念、AdaBoost、GBDT的原理以及它们在调参时的特点。此外,还探讨了基于tree-ensemble方法在实际应用如kaggle比赛中的优秀表现,以及Bagging、Stacking的简介。最后,简要回顾了逻辑回归(LR)与支持向量机(SVM)的联系与区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

机器学习面试关于算法方面的内容,对网络上的内容进行整合,方便日后自己复习以及给大家面试的时候来用。以下内容均来自于网络上的资源,会在文末统一标明出处。

正文

1、简单介绍一下SVM

SVM,全称是support vector machine,支持向量机,其目标是确定一个分类超平面,从而将数据分割开来。
支持向量机学习方法包括构建由简至繁的模型:

  • 线性可分支持向量机:当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器,又称为硬间隔支持向量机;
  • 线性支持向量机:当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;
  • 非线性支持向量机:当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
2、请问GBDT和XGBoost的区别是什么

XGBoost类似于GBDT的优化版,不论是精度还是效率上都有了提升。与GBDT相比,具体的优点有:

  • 损失函数是用泰勒展式二项逼近,而不是像GBDT里的就是一阶导数;
  • 对树的结构进行了L2正则化约束,防止模型过度复杂,降低了过拟合的可能性;
  • 节点分裂的方式不同,GBDT是用的基尼系数,XGBoost是经过优化推导后的。

xgboost与gdbt除了上述三点的不同,xgboost在实现时还做了许多优化:

  • 在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中根据上面求分割点的公式计算找出最佳的分割点。
  • xgboost考虑了训练数据为稀疏值的情况,可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率,paper提到50倍。
  • xgboost借鉴了随机森林中的列(特征)采样技术,即在某个节点分裂时,不是在当前节点中所有属性中选取最佳分裂属性,而是在当前属性集合中的某些属性中来选择最优分裂属性。这种方法降低了过拟合的可能性。
  • 特征列排序后以块的形式存储在内存中,在迭代中可以重复使用;虽然boosting算法迭代必须串行,但是在处理每个特征列时可以做到并行。
  • 按照特征列方式存储能优化寻找最佳的分割点,但是当以行计算梯度数据时会导致内存的不连续访问,严重时会导致cache miss,降低算法效率。paper中提到,可先将数据收集到线程内部的buffer,然后再计算,提高算法的效率。
  • xgboost还考虑了当数据量比较大,内存不够时怎么有效的使用磁盘,主要是结合多线程、数据压缩、分片的方法,尽可能的提高算法的效率。
3、简单介绍下Boosting

Boosting是一个迭代提升的过程,所以它肯定是串行的算法(尽管xgboost可以在节点分裂属性选择上做并行计算)。基于训练集,先训练弱学习器,然后根据前一个弱学习器分错的样本,改变样本的概率分布构成新的训练集,从而可以训练出一个更强的学习器。这样反复迭代提升,就能得到一系列分类器。最后,将这些分类器组合起来,就能构成一个很强的学习器,代表算法有AdaBoost, gbdt, xgboost。

4、简单介绍下AdaBoost

给定一个二分类的训练数据集
T={(x1,y1),…,(xN,yN)}
其中,x_i 是n维的, 类标y_i={-1,+1}

AdaBoost算法的步骤:
(1) 初始化训练数据的权值分布:D1=(w11,…,wi1,…,w1N),w1i=1/N,i=1,2,…,N(即初始时,每个样本视为一样的)
(2) 对m=1,2,…,M
(2a) 对具有权值分布Dm的训练数据集学习,得到一个基本分类器Gm(x)
(2b) 计算Gm(x)在训练数据集上的分类错误率:em=P(Gm(xi)!=yi)
(2c) 根据分类错误率计算Gm(x)的加权系数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值