华策干货分享之Bandit算法在Smart Decision华策项目的应用实践
推荐系统中的EE问题(Exploration and Exploitation)是计算广告和推荐系统里常见的一个问题。EE问题中的exploitation是利用用户比较明确的兴趣开采迎合,exploration是不断探索用户新的兴趣。为什么会有EE问题?简单来说,是为了平衡推荐系统的准确性和多样性。下面华策主要结合实际案例介绍Bandit算法的应用实践。
Bandit算法是解决EE问题的一种有效的算法。Bandit算法来源于历史悠久的赌博学,它要解决的问题是这样的:一个赌徒,要去摇老虎机,走进赌场一看,有一排外观一模一样的老虎机,但是每个老虎机吐钱的概率不一样,他不知道每个老虎机吐钱的概率分布是什么。那么每次该选择哪个老虎机可以达到最大化收益呢?这就是多臂赌博机问题(Multi-armed bandit problem, K-armed bandit problem, MAB)。
那么怎么解决这个问题呢?最好的办法是去试一试,但不是盲目地试,而是有策略地快速试一试,这些策略就是Bandit算法。
Bandit算法如何同推荐系统中的EE问题联系起来呢?假设我们已经有过一些试验,得到了当前每个老虎机的吐钱概率,如果想要获得最大的收益,我们会持续摇那个吐钱概率最高的老虎机,这就是Exploitation。但是,当前获得的信息并不是老虎机吐钱的真实概率,可能还有吐钱概率更高的老虎机,因此还需要进一步探索,这就是Exploration问题。
Bandit算法需要量化一个核心问题:错误的选择到底有多大的遗憾?能不能少一些遗憾?所以便有了衡量Bandit算法的一个指标:累积遗憾。
这里 t 表示轮数, r表示回报。公式右边的第一项表示第t轮的期望最大收益,而右边的第二项表示当前选择的arm获取的收益,把每次差距累加起来就是总的遗憾。对应同样的问题,采用不同bandit算法来进行实验相同的次数,那么看哪个算法的regret增长最慢,那么哪个算法的效果就是比较好的。
Bandit算法早已应用在Smart Decision华策落地项目中:国内某家券商拥有千万级客户群体,其手机移动端APP对客户展示过滤新闻文章与资讯广告。这样的资讯服务由于其至关重要的时效性,需快速识别客户感兴趣的资讯内容。
传统的资讯推荐模型,包括协同过滤或者基于内容的过滤和混合方法,通过识别用户之间的相似性资讯阅读历史,提供了良好的推荐解决方案。但此方法只是解决了EE问题中的Exploitation,对于用户的历史重叠情景相对较高,资讯推送几乎是静态的,推荐的项目总是类似于用户先前使用的项目。
针对缺少历史数据的新用户和市场上新出现的资讯热点难以捕捉与推送的问题,Smart Decision华策通过结合特征过滤和UCB(Upper Confidence Bound)Bandit 两种方法开发了混合算法实现个性化资讯推荐系统,帮助此券商企业实现真正意义上的千人千面资讯推荐。