|
看了下 @王喆 的回答,很赞, 摘一下他回答中提到的一些面试问题:
面试官如何判断面试者的机器学习水平? - 王喆的回答 - 知乎 https://www.zhihu.com/question/62482926/answer/529823808
我来试着答一下:
(1) M棵树 加权求和(boosting思想):
(2)单步求解各回归树(前向分步加法模型) ; 第m步求解:
(3) loss为mse时拟合残差, 根据公式很容易得到, 以单样本为例:
,
残差 , 相当于把样做如下处理:, 拟合rm求最小化loss得到第m步的回归树 ;
(4)更一般化, 推广到任意一阶可导函数, 根据一阶泰勒展开; 对于关于 的函数损失 , 当 ,
loss变化: , loss必减小
这里, loss关于 的负梯度 称为"伪残差", 所以一般化的GBDT, 每一步可看做实在拟合"伪残差", 来生成一棵分布loss最小的树 ;
(5)其它都是一些细节了, 比如和adaboost区别, 和xgboost区别, 和随机森林的区别, 比如gbdt能降低偏差(这是显然的, 每一步都在拟合目标和预测值的残差);
2. 决策树节点分裂时如何选择特征,写出Gini index和Information Gain的公式并举例说明(理论基础)
(1)能将有限样本分开的树结构有无穷多种, 决策树核心思想是用"启发式"算法来找最优决策树;
(2) 节点分裂时根据不同启发式算法, 特征选择方式不同;
(3) 对于特征A, 假设有三个值, 将特征空间分为D1, D2, D3三个区域, gini(D, A) = D1/D gini(D1) + D2/D gini(D2) + D3/D gini(D3), 再假设是个二分类问题, 两个标签, gini(D1) = p1(1-p1)+p2(1-p2) (只关注D1所在的行), 想象一下, 每次计算特征的gini时, 按照各特征的值对样本全局排序, 这样比较好计算;
3.分类树和回归树的区别是什么?(理论基础)
(1)启发函数不同啊, CART里分类用gini, 回归用平方差;
(2)结点的值不同啊, 分类存储的是最优分裂特征, 回归存储的是最佳切分点;
(3) 回归树也可以解分类问题啊;
4. 与Random Forest作比较,并以此介绍什么是模型的Bias和Variance(理论基础)
(1) rf:有放回自助采样+列采样, 假设r是相关系数, 根据 , 有放回自助采样增加了各模型的独立性, 一方面, 各模型训练样本完全独立时, 方差 , 降低到原来的1/n; 另一方面, 各模型样本完全一样时, , 方差不变; 一般的rf采样得到的样本, 独立同分布又不完全一样, 所以方差在sigma^2/n和sigma^2之间;
(2) rf对分类问题加权投票, 回归问题取均值, , 不会降低偏差;
(3)gbdt降低偏差是因为每一步都是基于上一轮残差或"伪残差"(loss关于上一棵树的负梯度)拟合样本, 偏差自然会减小;
(4)偏差太大模型欠拟合, 偏差太小模型过拟合, 方差太小模型泛化性能会交叉, 总之就是在做一个trade-off, 来寻求结构风险最小化;
5. XGBoost的参数调优有哪些经验(工程能力)
(1) 从正则化项来考虑: 调第一项 , 控制叶节点个数, 调 , 平滑叶节点权重;
(2) 考虑gain, 我们预期C(分列前)-C(分裂后)的gain应该大于0, 但有时候gain会小于0, 此时是否需要early_stopping? (注意虽然当前收益为负, 有可能对后续各步有正向收益), 所以需要加树的深度来做trade-off, 某次split的gain为负时, 是否达到earlystopping条件? 是否达到设定的最小树深度, 如果没有, 就把这个split节点也加进来;
(3) 从shrinkage公式来考虑, , 学习速率可以控制拟合速度, 也就是单步生成的树的权重;
(4) 从随机森林借鉴过来的列采样, 这也算一个参数吧, 可以控制每轮训练样本子集间的相关性(增加非相关性), 降低方差(参考公式: );
(5) 还有啥? 超参寻优, 参考sklearn的gridsearchcv, randomsearchcv; 做一下k-fold交叉验证, 找一下方差最小的最优参数, 比如迭代次数, 树的深度等
(6) 借鉴一下kaggle, 做一下EDA, 缺失值填充(xgboost的默认处理方式不一定符合你需求,归一化, 相关性分析;
(7) 做一下stacking ?
6. XGBoost的正则化是如何实现的(工程能力)
正则化是个很宽泛的概念, 举几个典型的:
(1) , 第一个参数控制第m步生成树的叶节点个数, 第二个参数是l2正则, 平滑每个结点权重;
(2) eraly_stopping, 某次叶节点分裂时, 如果gain为负, 是否停止增长? 这也算一种正则;
(3) 后剪枝;
(4)学习速率控制优化步长(单棵树的权重);
7.XGBoost的并行化部分是如何实现的(工程能力)
寻找结点分裂:
假设生成f(x)需要m步, 样本特征有d维, 样本个数n个, 则每次寻找最优结点时间复杂度:
, 其中每轮对feature values排序部分的时间复杂度 是可以优化的部分, 可以预排序存储好, 直接调用, 这样总的时间复杂度下降到:
8. 为什么预测股票涨跌一般都会出现严重的过拟合现象(业务理解)
这个问题比较任性, 为啥预测股票一定会过拟合? 不太能理解, 如果是问过拟合的原因的话, 无非两个:
(1) 数据问题: 数据量太少
(2) 模型问题: 模型太复杂, 模型学到了噪声
9. 如果选用一种其他的模型替代XGBoost,你会选用什么?(业务理解和知识面)
(1)特定领域用特定模型, 一般传统机器学习的分类问题最好还是用xgboost这种ensemble方法来解.
(2)业务理解,特征工程远比对模型做"优中选优"更有收益, 好特征带来的收益都是百分之几, 模型优化, 带来的收益一般在小数点后1-2位, 也就是百分之0.几的样子
(后续想到什么再补充.) |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|