Bandit 推荐系统间探索与利益的均衡

Bandit算法


该算法是为了解决MAB问题(多臂赌博机问题)

问题原形是,面对多个一样的老虎机,每个老虎机吐钱几率不一样。要怎么样选择才能达到利益最大化。

这里会有一个EE问题,即Exploitation-Exploration(E&E)我们如何在利益和探索之间均衡。我们已经有几台的吐钱率高,我们是选择只在这几台操作,还是要继续探索其他可能吐钱率更好的机器。


对于Bantid算法我们的核心思想是,使遗憾度最低。

Bandit 推荐系统间探索与利益的均衡_第1张图片
图片发自App


前者是 最好机器上的获利,后者是所选机器的获利。两者之差就是遗憾度。


我们又可以按照是否利用上下文(商品和用户特征值),分为两类。当然利用上下文的要好很多。


LinUCB

该算法是从不使用上下文的UCB改进而来。

UCB算法,会计算一个得分

Bandit 推荐系统间探索与利益的均衡_第2张图片
图片发自App



+号前面是收益,后面是最大置信上限

ni是一共的尝试次数,n是该商品的尝试次数。

该式子很好的均衡了探索和已知利益。

最后对每个商品的得分排序,选出最该推荐的商品。


由于该算法没有任何的上下文信息,所以雅虎对其进行了修改。

他们假设,我们的上下文与收益是成线性关系

Bandit 推荐系统间探索与利益的均衡_第3张图片
图片发自App


现在我们的任务是学习到这个参数theta,这样对于新来的数据,我们就可以根据数据上下文计算其收益。


Bandit 推荐系统间探索与利益的均衡_第4张图片
图片发自App


我们采用岭回归(L2正则),由于我们的方程只有一个未知量。我们用标准化解法

Bandit 推荐系统间探索与利益的均衡_第5张图片
图片发自App


(一般只用于数据量比较少的时候,不然计算起来很缓慢)


Bandit 推荐系统间探索与利益的均衡_第6张图片
图片发自App


得到theta,这时我们可以把theta表示为

theta = A转置*b    b = DTc


于是我们实时计算步骤在此

Bandit 推荐系统间探索与利益的均衡_第7张图片
图片发自App


这就是我们的LinUCB了。


该算法的速度很快是线性的。

不是上面说theta标准化运算数据量大会很慢吗?其实因为我们是实时更新,所以A和b都是每次更新一行,最后运算的不过是b*A


置信上限是什么呢?

程序中的

图片发自App

是置信上限。它是由L2参数theta服从高斯分布得来的。具体过程我也没研究。

你可能感兴趣的:(Bandit 推荐系统间探索与利益的均衡)