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

2019-03-29  本文已影响0人  机器不能学习

Bandit算法

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

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

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

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

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

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

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

LinUCB

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

UCB算法,会计算一个得分

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

theta = A转置*b    b = DTc

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

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

这就是我们的LinUCB了。

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

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

置信上限是什么呢?

程序中的

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

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

上一篇 下一篇

猜你喜欢

热点阅读