机器学习面试题hot50(一)

本文概述了过拟合的定义及其解决策略,包括数据层面的扩充、模型简化和训练技巧。深入探讨了XGBoost与GBDT的区别,涉及目标函数、训练效率和特征处理。此外,讲解了ROC曲线和AUC指标在评估分类性能的重要性。
摘要由CSDN通过智能技术生成

【欢迎关注公众号“一懂算法”,获取更多“面试题资源”】

1、什么是过拟合,如何解决过拟合?

  • 首先,过拟合就是在训练集上表现明显好于在验证集或测试集上的表现。在训练损失曲线中,验证集loss不降反增,或者稳定后明显高于训练集loss
  • 可以通过以下几种层面缓解过拟合:
    • 数据层面
      1. 增大样本量:获取更多的新数据,增大训练的样本量
      2. 数据扩充/增强:在难以获取新数据时,对数据进行变换扩充,比如图像旋转、对称、平移等;信号领域,可以通过添加不同信噪比的噪声等方式。
      3. 连续特征分箱:也就是将连续变量离散化,划分为多个区间。比如对玩游戏的判断,70岁和110岁其实没有太大区别,但是它们的数值差异可能会对模型权重造成一定波动,但是如果将其划分到同一区间,相当于在一定程度上减小了数据波动的影响,从而起到了防止过拟合的作用
      4. 特征降维/特征筛选:筛除冗余特征
      5. 正负样本调整均衡
    • 模型层面
      1. 降低模型复杂度,减少模型参数
      2. 增加dropout层
      3. 增加正则化项
    • 训练方式层面
      1. 提前终止
      2. 集成学习:bagging
      3. 多任务学习:共享embedding
      4. 交叉验证
  • 建议,根据三个层面答出关键词即可,不用答的太细,面试官感兴趣会自己提问深入。

2、了解XGBoost吗?它和GBDT的区别是什么?

  • 首先XGBoost是boosting集成算法中的一种,是GBDT的工程实现。也是一种加法模型,通过多棵的叠加构成最终的模型。构建每棵树的过程主要是通过对损失函数进行二阶泰勒展开,然后最小化损失函数获取叶子节点的值。
  • 它和GBDT的区别如下(常见7个):
    • 目标函数层面(3个):
      1. GBDT以CART作为基分类器,而xgboost还支持线性分类器,比如SVM
      2. GBDT在迭代时只用到了一阶导数信息,而xgboost对目标函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。二阶导数有利于梯度下降的更快更准,并且方便xgboost自定义损失函数
      3. xgboost在目标函数中直接加入了正则项,用于控制树模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点值的平方和。
    • 从训练层面(4个)(记忆:缩列并缺——“缩裂且还了一块”):
      1. xgboost引入了减因子(Shrinkage)。相当于给生成的每棵树一个缩减权重,用于削弱每棵树的影响,类似于学习率衰减,减小学习步长
      2. 类似于随机森林,xgboost支持采样,降低过拟合。
      3. 特征层面上的行: xgboost在训练之前对数据的特征进行了预排序,保存为block结构。在训练过程中计算每个特征的增益时,并非串行的,而是多个特征同时计算,最终选增益最大的那个特征去做分裂,完成并行化计算。
      4. xgboost支持对失值的处理:讲缺失特征值的样本分别分配到左右两个节点,然后看哪种情形的增益更大,就选择哪一种

3、讲一下ROC和AUC

  • ROC的全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,用来评判分类、检测结果的好坏。它的横坐标是FPR(假阳性率、假正例率),纵坐标是TPR(真阳性率、召回率)。【FPR:所有的负例中,有多少被误判为了正例;TPR:所有的正例中,有多少被正确判为了正例】
  • 其绘图过程为:从(0,0)开始,对应按照预测概率排好序的表,依次设置为正例。然后查对一个,坐标往上走(1/总的真正例数),查错一个则往右走(1/总的真反例数分之一),最终一定会走到(1,1)
  • AUC(area under curve)为ROC曲线下的面积,体现了样本预测的排序质量

4、讲一下逻辑回归吧,它的损失函数是什么样的,为什么不用MSE,和极大似然有什么关系?

  • 首先,逻辑回归是一种分类算法,形式上就是线性回归加上一个sigmoid函数。它假设数据服从伯努利分布,然后利用极大似然估计来构造目标函数,通常通过梯度下降法来进行求解。
  • 其损失函数是交叉熵,可由极大似然估计推导得出。
  • 如果使用平方损失函数,梯度更新的速度会和sigmoid函数的梯度相关,两端的区域梯度很小,导致训练速度会非常慢,并且平方损失得到的是非凸的。
  • 采用极大似然是因为我们想要让每一个样本的预测都要得到最大的概率,即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数

5、了解SVM吗?它在线性不可分和非线性情况下是如何处理的?

  • 首先,SVM是一种分类算法
    • 它通过寻找一个分离超平面来进行分类
    • 但是在线性可分的场景下,可能有无数个超平面。对此,为了让算法有更高的泛化能力和准确性,算法选择了到训练集样本点几何间隔最大的超平面。(这一点可以结合样本点图进行解释,如果超平面离某个样本点很近,那么如果有新的样本点,很容易就误判了)
    • 而几何间隔的表达式为|wx+b|/||w||,又由于w,b可以成比例缩放,并且对应的超平面不发生改变,因此可以让距离超平面最近的点满足wx+b=1,则最优化问题可以表示为max1/||w|| s.t. yi(wxi+b)-1>=0.而max 1/||w||又等价于min 1/2||w||^2,为一个凸二次规划问题
    • 对于上述的凸二次规划问题,SVM采用了拉格朗日对偶性,通过求解对偶问题来得到原始问题的最优解。(这样做的原因:对偶问题往往更容易求解,并且可以自然的引入核函数,从而推广到非线性分类的问题)分步骤如下:
      1. 构建拉格朗日函数L(w,b,alpha)
      2. minmaxL(w,b,alpha)转为maxminL(w,b,alpha)
      3. 利用求偏导等于0求取minL(w,b,alpha)。求导后可得用alpha来表示的w,带回原式。得到一个max(…)问题
      4. 把max(…)取个相反数,再转换为min(-…)的问题。
    • 对第五步得到的最优化问题,采用SMO算法来进行求解。
    • 求解出参数后,算法可表示为f(x)=sign(…)的形式
  • 在训练集线性不可分时,上述方法中的不等式约束并不能都成立。对此可通过引入松弛变量来将硬间隔变成一个软间隔的问题。具体变化有:
    1. 在最优化目标中加入松弛变量CΣζi,约束条件>=1变成>=1-ζi,且ζi>0
    2. 在拉格朗日函数也进行对应变化
    3. 得到拉格朗日函数后,同样极小极大变为极大极小
    4. 对极小,求偏导等于0然后代回原式,然后取相反极大变极小,发现最终的优化目标形式和线性可分时是一样的,但是约束条件有变化。统一形式后,只比原来多了0<=alphai<=C一个约束
  • 在非线性情形下,通过引入核函数,将原空间的数据映射到新空间,然后在新空间中用线性分类方法进行分类。

6、了解bagging和boosting吗?它们的区别是什么?

  • 首先两者都是集成模型,通过多个弱分类器的组合来打造强分类器。前者主要针对于弱分类器的过拟合,后者针对若分类器的欠拟合,后者最早的是Adaboost,现在主要是GBDT和XGboost;
  • 具体的,bagging方法从原始样本集中有放回的随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。然后相应训练k个模型,分类则可通过k个模型投票,回归则可以求均值。
  • 早期应用在adaboost中的boosting算法则是保持训练集不变,但是通过改变训练集样本的权重来迭代训练新的分类器,简单说就是,把上一轮训练得到的分类器中分错的样本更大的权重,让下一轮的分类器着重对待这部分样本。
  • Bagging + 决策树 = 随机森林;AdaBoost + 决策树 = 提升树;Gradient Boosting + 决策树 = GBDT

7、决策树有哪些分裂准则,或者说如何进行特征选择?

  • 主要有三种:ID3、C4.5、CART
  • ID3基于信息增益来判断
  • C4.5基于信息增益比来进行分裂
  • CART基于基尼系数来进行分裂

8、随机森林的随机性体现在哪里?

  • 样本随机性:样本随机抽取
  • 特征随机性:特征随机抽取

9、L1和L2正则化的区别是什么?

  • 形式上L1正则化就是各权重的绝对值之和,L2则是平方和
  • L1更容易获取稀疏解(进一步追问,可以从解空间形状、先验分布形状、函数叠加三个方面去回答)
  • L1正则先验分布是拉普拉斯分布,L2是高斯分布

10、讲一下kmeans算法的流程,k值如何选取?

  • 流程如下:
    1. 选择K值,代表输出K个类
    2. 为每个聚类选择一个初始聚类中心;
    3. 将样本集按照最小距离原则分配到最邻近聚类;
    4. 使用每个聚类的样本均值更新聚类中心;
    5. 重复步骤2、3,直到聚类中心不再发生变化;
    6. 输出最终的聚类中心和k个簇划分;
  • k值的选取:利用肘部法,随着聚类数k的增大,聚类的误差平方和会呈现手肘的形状,然后选择“肘关节”部位对应的k值即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值