面试必备资源!程序员面试——算法工程师面试大全第三部分

1.L1 和 L2 正则化的区别

L1 是模型各个参数的绝对值之和,L2 为各个参数平方和的开方值.L1 更趋向于产生少量的特征,其它特征为 0,最优的参数值很大概率出现在坐标轴上,从而导致产生稀疏的权重矩阵,而 L2 会选择更多的矩阵,但是这些矩阵趋向于 0.

2.Loss Function 有哪些,怎么用?

平方损失(预测问题),交叉熵(分类问题),hinge 损失(SVM 支持向量机),CART 回归树的残差损失

聚类:

3.什么是 DBSCAN

DBSCAN 是一种基于密度的空间聚类算法,它不需要定义簇的个数,而是将具有足够高密度的 区域划分为簇,并在有噪声的数据中发现任意形状的簇,在此算法中将簇定义为密度相连的点的 最大集合.

4.k-means 算法流程

从数据集中随机选择 k 个聚类样本作为初始的聚类中心,然后计算数据集中每个样本到这 k 个聚类中心的距离,并将此样本分到距离最小的聚类中心所对应的类中.将所有样本归类后,对于 每个类别重新计算每个类别的聚类中心即每个类中所有样本的质心,重复以上操作直到聚类中心不变为止.

5.LDA 的原理

LDA 是一种基于有监督学习的降维方式,将数据集在低维度的空间进行投影,要使得投影后的同类别的数据点间的距离尽可能的靠近,而不同类别间的数据点的距离尽可能的远.

6.协同过滤的 itemCF,userCF 区别适用场景

Item CF 和 User CF 两个方法都能很好的给出推荐,并可以达到不错的效果.但是他们之 间还是有不同之处的,而且适用性也有区别.下面进行一下对比

计算复杂度:

Item CF 和 User CF 是基于协同过滤推荐的两个最基本的算法,User CF 是很早以前就提 出来了,Item CF 是从 Amazon 的论文和专利发表之后(2001 年左右)开始流行,大家都觉得 Item CF从性能和复杂度上比 User CF 更优,其中的一个主要原因就是对于一个在线网站,用户的数量往往大大超过物品的数量,同时物品的数据相对稳定,因此计算物品的相似度不但计算量较小,同时也不必频繁更新.但我们往往忽略了这种情况只适应于提供商品的电子商务网站, 对于新闻,博客或者微内容的推荐系统,情况往往是相反的,物品的数量是海量的,同时也是更新频繁的,所以单从复杂度的角度,这两个算法在不同的系统中各有优势,推荐引擎的设计者需要根据自己应用的特点选择更加合适的算法.

适用场景:

在非社交网络的网站中,内容内在的联系是很重要的推荐原则,它比基于相似用户的推荐原则更加有效.比如在购书网站上,当你看一本书的时候,推荐引擎会给你推荐相关的书籍,这个推荐的重要性远远超过了网站首页对该用户的综合推荐.可以看到,在这种情况下,Item CF 的 推荐成为了引导用户浏览的重要手段.同时 Item CF 便于为推荐做出解释,在一个非社交网络的网站中,给某个用户推荐一本书,同时给出的解释是某某和你有相似兴趣的人也看了这本书, 这很难让用户信服,因为用户可能根本不认识那个人;但如果解释说是因为这本书和你以前看的某本书相似,用户可能就觉得合理而采纳了此推荐.

相反的,在现今很流行的社交网络站点中,User CF 是一个更不错的选择,User CF 加上社会网络信息,可以增加用户对推荐解释的信服程度.

7.协同过滤中的算法怎么细分

协同过滤算法通过对用户历史行为数据挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐相似的商品.协同过的算法分为两类分为基于用户的协同过滤算法和基于物品的协 同过滤的算法.基于用户的协同过滤是基于用户对物品的偏好找到相邻邻居用户然后将邻居用户喜欢的推荐给当前的用户.基于物品的协同过滤是计算邻居时采用物品本身,基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好推荐相似的物品给他.

8.FM 公式

9.bagging 和 boosting 的区别

Bagging 是从训练集中进行子抽样组成每个基模型所需要的子训练集,然后对所有基模型预 测的结果进行综合操作产生最终的预测结果.

Boosting 中基模型按次序进行训练,而基模型的训练集按照某种策略每次都进行一定的转化,最后以一定的方式将基分类器组合成一个强分类器.

Bagging 的训练集是在原始集中有放回的选取,而 Boosting 每轮的训练集不变,只是训练集 中的每个样本在分类器中的权重都会发生变化,此权值会根据上一轮的结果进行调整.

Bagging 的各个预测函数可以并行生成,Boosting 的各预测函数只能顺序生成.

Bagging 中整体模型的期望近似于基模型的期望,所以整体模型的偏差相似于基模型的偏差, 因此 Bagging 中的基模型为强模型(强模型拥有低偏差高方差).

Boosting 中的基模型为弱模型,若不是弱模型会导致整体模型的方差很大.

10.XGBOOST 和 GDBT 的区别

GDBT 在函数空间中利用梯度下降法进行优化而 XGB 在函数空间中使用了牛顿法进行优化. 即 GDBT 在优化中使用了一阶导数信息,而 XGB 对损失函数进行了二阶泰勒展开,用到了一阶和二 阶倒数信息.XGB 在损失函数中加入了正则项(树叶子节点个数,每个叶子节点上输出 score 的 L2 模平方和.对于缺失的样本,XGB 可以自动学习出它的分裂方向.GDBT 的节点分裂方式使用的是 gini 系数,XGB 通过优化推导出分裂前后的增益来选择分裂节点.XGB 在处理每个特征列时可以做到并行。

11.GDBT 的原理,以及常用的调参参数、

先用一个初始值去学习一棵树,然后在叶子处得到预测值以及预测后的残差,之后的树则基于之前树的残差不断的拟合得到,从而训练出一系列的树作为模型.

n_estimators 基学习器的最大迭代次数,learning_rate 学习率,max_lead_nodes 最大叶子节点数,max_depth 树的最大深度,min_samples_leaf 叶子节点上最少样本数.

12.stacking 和 blending 的区别?

Stacking和blending的区别在于数据的划分,blending用不相交的数据训练不同的基模型, 并将其输出取加权平均.而 stacking 是将数据集划分为两个不相交的集合,在第一个集合的数据集中训练多个模型,在第二个数据集中测试这些模型,将预测结果作为输入,将正确的标签作为输 出,再训练一个高层的模型.

13.AdaBoost 和 GBDT 的区别

AdaBoost 通过调整错分的数据点的权重来改进模型,而 GBDT 是从负梯度的方向去拟合改进 模型.AdaBoost 改变了训练数据的权值,即样本的概率分布,减少上一轮被正确分类的样本权值, 提高被错误分类的样本权值,而随机森林在训练每棵树的时候,随机挑选部分训练集进行训练.在 对新数据进行预测时,AdaBoost 中所有树加权投票进行预测,每棵树的权重和错误率有关,而随机森林对所有树的结果按照少数服从多数的原则进行预测。

14.随机森林和 GBDT 的区别

1)随机森林采用的 bagging 思想,而 GBDT 采用的 boosting 思想.这两种方法都是 Bootstrap 思想的应用,Bootstrap 是一种有放回的抽样方法思想.虽然都是有放回的抽样,但二者的区别 在于:Bagging 采用有放回的均匀取样,而 Boosting 根据错误率来取样(Boosting 初始化时对 每一个训练样例赋相等的权重 1/n,然后用该算法对训练集训练 t轮,每次训练后,对训练失败的样例赋以较大的权重),因此 Boosting 的分类精度要优于 Bagging.Bagging 的训练集的选择是随机的,各训练集之间相互独立,弱分类器可并行,而 Boosting 的训练集的选择与前一轮 的学习结果有关,是串行的.

2)组成随机森林的树可以是分类树,也可以是回归树;而 GBDT 只能由回归树组成.3)组成随机森林的树可以并行生成;而 GBDT 只能是串行生成.4)对于最 终的输出结果而言,随机森林采用多数投票等;而 GBDT 则是将所有结果累加起来,或者加权累 加起来.5)随机森林对异常值不敏感;GBDT 对异常值非常敏感.6)随机森林对训练集一视同仁;GBDT 是基于权值的弱分类器的集成.7)随机森林是通过减少模型方差提高性能;GBDT 是通过减少模型偏差提高性能.

发布了374 篇原创文章 · 获赞 194 · 访问量 51万+

猜你喜欢

转载自blog.csdn.net/qq_32146369/article/details/104487448