面经收集
1.RF和GBDT,XGBOOST的区别?
(1)GBDT与随机森林(Random Forest,RF)的区别与联系?
相同点:都是由多棵树组成,最终的结果都是由多棵树一起决定。
不同点:1)集成的方式:随机森林属于Bagging思想,而GBDT是Boosting思想。2)偏差-方差权衡:RF不断的降低模型的方差,而GBDT不断的降低模型的偏差。3)训练样本方式:RF每次迭代的样本是从全部训练集中有放回抽样形成的,而GBDT每次使用全部样本。4)并行性:RF的树可以并行生成,而GBDT只能顺序生成(需要等上一棵树完全生成)。5)最终结果:RF最终是多棵树进行多数表决(回归问题是取平均),而GBDT是加权融合。6)数据敏感性:RF对异常值不敏感,而GBDT对异常值比较敏感。7)泛化能力:RF不易过拟合,而GBDT容易过拟合。
(2)xgboost与传统GBDT的区别与联系
1) GBDT是机器学习算法,xgboost是该算法的工程实现;2) xgboost在代价函数里加入了正则项,用于控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力;3) 传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数,而且xgboost工具支持自定义代价函数,(损失函数变为二阶,可以求最小值,换形式写一下后会发现二阶导数是loss的权重)只要函数可一阶和二阶求导;4) 传统GBDT以CART作为基分类器,xgboost还支持多种类型的基分类器,比如线性分类器;5) xgboost借鉴了随机森林的做法,支持对数据进行采样,不仅能降低过拟合,还能减少计算;6) 传统的GBDT没有设计对缺失值进行处理,xgboost能够自动学习出缺失值的处理策略
2.crf损失函数?过拟合怎么解决?正则化项有哪些,作用分别是什么?
笔记里有,过拟合有几个解决办法
1)数据增强;2)减少特征;3)L1,L2正则化;4)Dropout;5)early stopping;6)控制模型复杂度,别太复杂
3.模型优化方法(梯度下降?还有呢?不知道)?
牛顿法、拟牛顿法
4.l1正则化和l2正则化分别加了什么先验条件?(拉普拉斯分布和正态分布),L1和L2适用于什么场景,具体怎样实现的呢?
5.SVM损失函数怎样求解的呢,可以用梯度下降法求解吗?
6.梯度下降法求解适合用于什么场景?
7.过拟合的欠拟合介绍,怎样解决过拟合?
最后是一道概率+算法问题:给N个绳子,每次取两个端点打结在一起,求最终绳子打结的期望(先用数学公式描述,再用代码描述)
最后就是一个编程题:旋转矩阵二分查找(要求时间复杂度是log(n))
算法题:给两个字符串,可以对其中一个字符串进行增删移动添加操作求将其中一个字符串转变成另一个字符串的最小操作步骤