/【雷火UX数据挖掘】推荐系统之MAB问题与Bandit算法

【雷火UX数据挖掘】推荐系统之MAB问题与Bandit算法


在推荐系统中,需要在探索(explore 未知领域)和利用(exploit 现有知识)之间找到平衡,即Exploit-Explore问题。利用可以理解为推荐用户确定感兴趣的东西,探索可以理解为尝试发现用户新的兴趣,否则反复推荐用户感兴趣的东西,会使用户感到疲劳。但是不断探索新的兴趣,必然会影响用户的点击率。在探索和利用之间进行取舍,是开发推荐系统所面临的一个难点。
01
MAB问题

其实,上述问题可以抽象为一个MAB问题(Multi-armed bandit problem),中文译名叫做多臂赌博机问题。顾名思义,它最初起源于赌场,即一个赌徒进入赌场后,有多台老虎机,每台老虎机赢钱的概率是不一样的,如何知道每台老虎机赢钱的分布,并制定一个最大化收益的策略呢?


02
Bandit算法

为了解决这一问题,可以尝试使用Bandit算法。Bandit算法其实是一类算法的统称,基本思路可以归纳为两点:

1. 对于一个选择,如果实验的次数足够多且收益更大那么就更加倾向于选择它,反之则倾向于不选择它;
2. 对于一个选择,如果实验次数太少而不能确定这种选择的好坏,那么就多尝试几次,直到确定它的好坏。
03
汤普森采样算法

受限于篇幅的原因,本文只介绍一种常见的Bandit算法:汤普森采样算法。它的原理是:在候选池中,选择每个物品产生的收益都遵循一个单独的概率分布,每次选择时,让每个物品的概率分布随机产生一个数,最后推荐那个随机数最大的对应的物品。

这个概率分布就是贝塔分布,它的概率分布函数如下图所示:

● 在贝塔分布中有两个参数α和β,它决定了分布曲线的形状:
1. 当α+β越大时,曲线就会越窄,分布就越集中,反之曲线就越宽,分布就越分散;
2. 当α/(α+β)越大,分布的中心位置就越靠近1,反之就越靠近0。
● 将贝塔分布的这一特性用于推荐系统中,就是将用户点击一个物品的次数看做参数α,推荐但没有点击的次数看作参数β。那么可以有以下3种情况:
1. 当一个物品的α+β足够大(被推荐的次数足够多),那么它的分布会很窄,即我们已经非常能确定推荐这个物品的收益了,这时候根据贝塔分布产生的收益已经接近它的平均收益了;
2. 当一个物品的α+β足够大且α/(α+β)更大(被推荐的次数足够多且用户的点击率很高),意味着它的贝塔分布足够窄且更逼近1,根据这种分布产生的随机数倾向于更大,也就更有可能被推荐;
3. 当一个物品的α+β很小(被推荐的次数很少),由于它产生的分布曲线很宽,因此有可能产生一个较大的随机数,从而被选择推荐,这样就起到了探索的作用。
04
总  结
Bandit算法是一类算法的总称,它可以用来解决推荐系统的MAB问题。其实它还可以用来解决冷启动问题,这一点留给读者自行思考。除了汤普森采样算法,常见的Bandit算法还有UCB算法,Epsilon贪婪算法等。

往期推荐


本文来自微信公众号“网易雷火UX用户体验中心”(ID:LeihuoUX)。大作社经授权转载,该文观点仅代表作者本人,大作社平台仅提供信息存储空间服务。