算法工程师面试题(二)

11 .boost算法的思路是什么样的?讲一下你对adaboost 和 gbdt的了解?

boost的核心思想不同于bagging,它在基于样本预测结果对照与真实值得差距,进行修正,再预测再修正,逐步靠近正确值。
在这里插入图片描述
adaboost初始数据权重都是1/M,然后通过训练每一个弱分类器Classifier使得在每一次y_pred误差最小,得到每一个弱Classifier的权重方法对:(αi,yi)然后提高错分了的数据的权重,降低正确分类的数据权重,循环训练,最后组合最后若干次的训练弱Classifier对,得到强分类器。

其中,αi由误差决定:
在这里插入图片描述
该弱分类器分类错误率em越大,则该若分类器作用越小。
剖析了原理之后,我们发现,这样做对异常点非常敏感,异常点非常容易错分,会影响后续若干个弱分类器。

不足:
1、adaboost存在异常点敏感的问题;
2、gbdt一定程度上优化了adaboost异常点敏感的问题,但是存在难以并行的缺点;

3、两者的目标都是优化bias,必然导致训练出来的数据var的不稳定。

亮点:
1.发现非线性的特征关系,网格化的切分feature
2.拟合的效果相较于其他分类器更加精准,且训练参数较少

gbdt:
gbdt的核心在于下面这个公式:

在这里插入图片描述

L(y,y_pred):预测值与实际值间的误差
F(x):前若干个弱分类器的组合。

关键的在于当前预测结果=对前若干个弱分类器+当前弱分类器修正,所以对前若干个分类器组合求偏导的方向进行梯度处理,保证L(x)出来的值最小。

这边结果在于你选取什么样的误差函数:

在这里插入图片描述

Loss即为损失函数,Derivative即为导数。

除此之外,在每一步弱分类器构建的同时,它还考虑了正则化:
Ω=入T+μ*linalg.norm(f(xi))

T为子叶节点数目,同时也对预测结果得分的值进行了l1或者l2压缩,避免过拟合。在求解速度上,对异常值处理上面都要比gbdt要快,而且基于R、python版本都有package。

12.用户关系、社群算法有了解,讲讲什么叫做Modularity Q?

比如,用户1一共收过150个红包,发了100个红包,其中20个被用户2抢过。
用户2一共收过100个红包,发了50个红包,其中30个被用户1抢过。

similarity(user1=>user2)=(30+20)/(150+100)
similarity(user2=>user1)=(30+20)/(50+100)
similarity(user2=>user1)=(30+20+30+20)/(150+100+50+100)

社区算法主要是用来衡量用户关系网中,不同用户、链接、信息之间的相似程度。
Kernighan-Lin算法(后面简称了KL算法)
KL算法中,先随机切分原数据集群,得到不同社区集,随机交换不同社区集内的不同点,观察优化值得变化程度是否为正向,循环即可。
在这里插入图片描述
共需执行次数:循环次数x集群A内点的个数x集群B内点的个数

Q-modularity:
在这里插入图片描述
E:关系点连接线之间的个数
I:关系点连接线两端都在社群内的数量
O:关系点连接线有至少一端在社群外的连接线的数量

13 关于优化实时推荐的算法

冷启动

很多人有一种错觉,只要业务上线时间长了就不存在所谓的冷启动问题,实则不是,新用户是持续进入的、流失用户也是在增长的、很多盲目用户(没有有价值行为)等等都可以归纳为冷启动问题,这类问题的核心在于你可用的数据很少,甚至没有,可采取热门推荐的方法。

威尔逊区间法:综合考虑总的行为用户中,支持率与支持总数的平衡
hacker new排序:综合考虑时间对支持率的影响
pagerank排序:考虑用户流向下的页面权重排序
梯度效率排序:考虑商品增速下的支持率的影响
在这里插入图片描述
这个是苏宁易购的首页推荐位,1、2、3分别是三个推荐位,我们在做算法的时候常常会特别注意,不能用太多相关性比较高的变量,会产生共线性,但在推荐内容上,“58同城”的算法推荐团队之前有一份研究证明,同一个页面上由不同算法产出的推荐结果不存在相互影响。

所以,我非常赞同不同的算法产出不同的结果同时展示,因为我们不知道对目标用户是概率模型、距离模型、线性模型等不同模型中哪个产出的结果更加合适。

文章:
《深度学习下的电商商品推荐》(http://www.jianshu.com/p/00a28141521f)
《偏RSVD及扩展的矩阵分解方法》(http://www.jianshu.com/p/a3e633e396a0)
你的对象是用户,不是冰冷的数字

不同的推荐场景需要使用不同的用户行为。举例假设存在经典的关系:买了炸鸡和番茄酱的用户,接下来的一周有35%的用户会来买汽水。所以,很多工程师会选择只要买了炸鸡和番茄酱的用户,就弹窗汽水,因为就35%的百分比而言,是非常高的支持度了。其实只要有用户画像的支持就会发现,这35%的用户中,80%的都是年龄在青少年,如果在推送之前做一个简单的逻辑判断只针对所有青少年进行推送汽水的话,35%轻而易举的上升到了70%,这是任何算都无法比拟的。

14 什么是P、NP、NP-Hard、NP-Complete问题?(了解)

P:很快可以得出解的问题
NP:一定有解,但可很快速验证答案的问题
NP-Hard:比所有的NP问题都难的问题
NP-Complete:

  1. 是NP hard的问题
  2. 是NP问题

15 常见的防止过拟合的方法是什么?为什么l1、l2正则会防止过拟合?

   欠拟合、正常、过拟合:

在这里插入图片描述
举了几个例子:

针对error递归的问题,l1,l2正则化

扩充数据量,使得数据更加符合真实分布

bagging等算法技巧
在这里插入图片描述
在这里插入图片描述

l1中函数与约束点偏向相切于四个端点,端点处压缩了某个特征=0;l2中函数与约束点偏向相切于圆,会造成某些特征值压缩的接近于0;

根据奥卡姆剃刀原理,当两个假说具有完全相同的解释力和预测力时,我们以那个较为简单的假说作为讨论依据,而通常过拟合的模型的特征维度过高过多,所以一定程度可以缓解过拟合。
l2,其实就给了系数w一个期望是0,协方差矩阵是 1/alpha的先验分布。l1对应的是Laplace先验。

我们相当于是给模型参数w设置一个协方差为1/alpha 的零均值高斯分布先验。
在这里插入图片描述

根据贝叶斯定律:

在这里插入图片描述

在这里插入图片描述

有了上面的式子就很简单了,alpha在0-正无穷之间,如果a接近0的话,左侧及为正常的MSE也就是没有做任何的惩罚。如果alpha越大的话,说明预测值越接近真实值的同时,协方差也控制的很小,模型越平稳,Var也越小,所以整体的模型更加有效,避免了过拟合导致训练数据拟合效果很差的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值