您的位置:首页 > 职场人生

机器学习岗位面试问题汇总 之 集成学习

2017-06-26 20:05 387 查看
自己结合网络内容总结,欢迎指正欢迎补充。

最新更新:20170626—版本1(只给出问题)

最近更新:20170627—版本2(补充答案)

总体性问题

1.学习器结合可能带来的好处

(1)提高泛化能力 (2)减低局部最优风险 (3)假设空间扩大,更好相似

2.模型融合的方法/策略

(1)2个平均 (2)3个投票 (3)学习法:stacking

3.常见融合框架的原理;优缺点;融合一定会提升性能么?为什么融合可能会提高预测效果?

原理:多个比一个好+保证准确度、防止过拟合+弱学习器明显+好而不同

常见:bagging(并行+少方差),boosting(串行+少偏差),stacking(输出–>输入)

不一定,好而不同

模型有差异、体现不同表达能力

4.Bagging 和 Boosting 的区别和联系

联系:多个基学习器学习+多基学习器共同预测

区别:(1)取样方式==>精度 (2)训练集相关性===>并行/串行 (3)预测函数是否含权重

5.为什么说Bagging是减少了方差(variance),而Boosting是减少了偏差(bias)?

Bagging和boosting的原理导致的

R F

1.简要说明RF

一种集成方法、bagging的思想、分类和回归、树构成、学习过程+预测过程、优缺点

2.RF与传统bagging的区别

(1)采样:RF有放回选取和整体样本数目相同的样本,一般bagging用的样本<总体样本数 (2)特征采样:RF对特征进行采样,BAGGING用全部特征

3.RF的学习过程和预测过程

学习过程:N个样本有放回选N个,M个特征选m个,训练树(全分裂=无法继续分裂/所有样本指向同一分类),如此重复直至训练k棵树

预测过程:k棵树分别训练,多数投票/均值得最终结论

4.RF的随机性体现在哪里?

取样本、选特征

5.RF的参数问题(sklearn)

弱学习器最大迭代次数,oob_score,max_feature特征数:M=sqrt(M)/log2,树的深度,树的个数(与具体样本有关),叶子节点最小分裂数

N_estimators—>max_depth+min_samples_split—>min_samples_split+min_samples_leaf—->max_feature

参考:

RF调参经验:http://www.cnblogs.com/pinard/p/6160412.html

RF分类官方API:

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier

RF回归官方API:

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor

6.RF的泛化误差估计

Oob,用未被选择到的样本进行误差估计

7.RF的学习算法

ID3:离散 C4.5:连续 CART:离散或连续

8.RF的优点

(1)在数据集上表现良好,在当先很多数据集上要优于现有的很多算法 (2)可以并行,且不是对所有属性进行训练,训练速度相对较快 (3)防止过拟合 (4)能够处理高维特征,且不用做特征选择,可以给出特征重要性的评分,训练过程中,可以检测到feature的相互影响 (5)泛化误差估计 (6)实现简单 (7)创建RF时,对泛化误差进行的是无偏估计

GBDT

1.简要说明GBDT

Boosting算法,但与传统boosting有区别、拟合上一步的残差,传统意义上说不能并行,只能用CART回归树,降低偏差

2.GBDT与传统Boosting(AdaBoost)的区别

迭代思路不同:传统boosting对训练样本进行加权,GBDT则是拟合残差,下一棵树沿残差梯度下降的方向进行拟合

3.GBDT正则化的方式

(1)同AdaBoost,通过步长 (2)CART树的剪枝 (3)子抽样,不放回,SGBT,可以实现一定程度上的并行

4.GBDT的优缺点

优点:(1)调参少的情况下,准确率也高(SVM) (2)灵活处理各种数据,包括连续和离散,无需归一化处理(LR) (3)模型非线性变换多,特征不用经过复杂处理即可表达复杂信息 (4)从一定程度上可以防止过拟合,小步而非大步拟合

缺点:(1)一般来说传统的GBDT只能串行,但是也可以通过子采样比例(0.5~0.8)实现某种意义上的并行,但一般这就不叫GBDT了。 (2)对异常值敏感,但是可以采取一些健壮的损失函数缓解,如Huber./Quantile损失函数

5.GBDT预测时每一棵树是否能并行?

可以,训练需串行,预测可并行

6.GBDT和RF的区别与联系

联系:多棵树进行训练+多棵树共同进行预测

区别:(1)取样方式 (2)预测时,RF多数投票,GBDT加权累加 (3)样本的关系—>并行和串行 (4)学期器的种类,GBDT只能用CART回归树 (5)对异常值的敏感性 (6)通过减少方差/偏差提高性能

7.GBDT的调参

Learning-rate+n_estimators—->max_deep+min_samples_split—>min_samples_split+min_samples_leaf—->max_feature—>subsample—->learning_rate/2+n_estimators*2

参考:

调参经验:http://www.cnblogs.com/pinard/p/6143927.html

GBDT分类官方API:

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier

GBDT回归官方API:

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor

8.GBDT的算法推导

见打印资料

参考:http://www.cnblogs.com/pinard/p/6140514.html

XGBOOST

1.XGBOOST相比于GBDT有何不同?XGBOOST为什么快?XGBOOST如何支持并行?

(1)GBDT只能用CART回归树,而XGBOOST可以用CART树(回归/分类),还可以用用想LR之类的线性模型,相当于加入L1、L2正则项的LR或线性回归 (2)列抽样,可以并行,不是树粒度上的,是特征粒度上的,block块,并行计算所有信息增益等信息 (3)可处理多种特征,且对缺失值也不用进行处理 (4)GBDT在残差梯度下降方向拟合,一阶导;XGBOOST泰勒展开至二阶导 (5)近似直方图算法,高效生产候选分割点 (6)shrink,缩减,叶子节点同时乘,防止过拟合 (7)可以自己定义评价函数 (8)代价函数含正则化项,防止过拟合

2.XGBOOST调参

Booster:‘gbtree’;

Objective: “reg:linear”-线性回归/ “reg:logistic”-逻辑回归/ “binary:logistic”-二分类的逻辑回归问题,输出为概率

树模型调参

参考:

调参经验1:http://blog.csdn.net/u010414589/article/details/51153310

调参经验2:http://blog.csdn.net/zc02051126/article/details/46711047

官方API:

http://xgboost.readthedocs.io/en/latest/parameter.html#general-parameters

3.XGBOOST的推导

见打印资料

参考:

xgboost原理:http://blog.csdn.net/a819825294/article/details/51206410

陈天奇xgboost讲义:http://download.csdn.net/detail/u010496169/9881566

AdaBoost

1.简述AdaBoost

扯扯为什么集成,扯扯boosting方法,说明AdaBoost,基学习器可选择多,但一般用决策树(CART)和神经网络

2.AdaBoost的正则化

Rate(步长)

3.AdaBoost的优缺点

优点:(1)容易理解、实现简单 (2)易编码 (3)分类精度高 (4)可以使用各种回归模型构建基分类器,非常灵活 (5)作为二元分类器是,构造简单、结果可理解、少参数 (6)相对来说,不宜过拟合

缺点:(1)只能串行 (2)对异常值敏感

4.AdaBoost的算法步骤

Step1: 初始所有样本权重1/N

Step2: for k in range(K):

Step3: 构建基学习器hk

Step4: 计算错误率:ek

Step5: if ek>0/5 then break;

Step6: 计算该分类器权重:ak

Step7: 计算新的样本权重:wk

Step8: 终止,输出加权最终强学习器

参考:见西瓜书(《机器学习》,周志华)

5.AdaBoost的推导

见西瓜书(《机器学习》,周志华)

6.前向分布算法过程

见《统计学习方法》

参考

《统计学习方法》,李航

《机器学习》,周志华
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: