推荐系统的EE问题以及Bandit算法

EE问题是推荐系统的核心概念,所有的算法都是基于解决EE问题而存在的。

EE问题

Exploration & Exploitation (探索与开发)问题是为了平衡推荐系统的准确性和多样性

Exploration就是探索,如果一味的推荐用户已知感兴趣的东西,用户很快就会腻,所以要不断的探索用户新的兴趣。

Exploitation就是开发,根据用户已知的信息,推荐出对应的东西。

简单来说就是一个好的推荐系统不仅仅会根据已知的用户信息迎合其兴趣来推荐相关物品,还会探索未知的用户信息然后推荐用户感兴趣的物品。

还有个有趣的例子,假设一个风投公司想使他的收益最大化,这时他总会面临一个两难问题: 何时去投资那些已经成功的公司?何时去投资那些还没有成功但具有很大潜力的公司?简单说就是,收益总是伴随着风险而存在。

类比过来就是一个推荐系统想使其收益最大化,他就要知道既要给用户推荐已知兴趣的item,还要推荐未知兴趣的item。

比如应用前端曝光内容有限,就要权衡EE问题,曝光给用户的item集合既能反应出用户已有的兴趣,还能挖掘出用户新的兴趣。

Bandit算法

bandit算法是解决EE问题的一种有效算法。

来源于赌博学,解决的问题是这样的:

一个赌徒要去摇老虎机,走进赌场一看,一排老虎机,外表一模一样,但是每个老虎机吐钱的概率可不一样,他不知道每个老虎机吐钱的概率分布是什么,那么每次该选择哪个老虎机可以做大最大化收益呢?这就是多臂赌博机问题(Multi-armed bandit problem,K-armed bandit problem)

怎么解决这个问题呢?我们不能盲目的去试,而是有策略的快速试一试,这个策略就是Bandit算法。

那如何将Bandit算法和推荐系统中的EE问题联系起来呢?

假设我们已经做过了一些实验,得到了每个老虎机的吐钱概率,如果想要获得最大的收益,我们会一直摇那个吐钱概率最高的老虎机,这就是Exploitation,但是当前获得的信息并不是老虎机吐钱的真实概率,可能还有更好的老虎机吐钱概率更高,需要进一步探索,这就是Exploration问题。