Bandit算法

一。算法评价指标

累计遗憾

最好的选择收益(Wopt)减去实际的选择收益( Wb(i))就是遗憾,每个臂的收益不是0就是1,伯努利收益。

对比哪个遗憾增长慢,哪个算法效果好。因此方法是,1.慢慢地试,把机会给“确定好的”和“还不确定的”。

关键因素:

臂:有几个选项。(具体的物品,推荐策略,物品类别)

回报:喜欢/不喜欢收益。

环境:决定每个臂不同的因素,称为环境。(推荐系统面临的这个用户不可捉摸的环境)

二。常用的Bandit算法

1.汤普森采样算法  

随机a.b => 用贝塔分布产生随机数 => 排序 =》最大值为对应候选 =》观察反馈,点了a+1没点b+1

贝塔分布特点:

a+b越大,分布越集中。越小 越不确定,因此可能产生一个较大的随机数,排序时被优先选出 起到探索作用。

 a/(a+b)越大越接近于1,好,越小越差。


pyhton实现

2.UCB算法(置信区间上界)

方法:为每个臂评分=》分高的输出=》观察反馈=》更新参数


UCB目标函数

评价公式是 每个候选臂的平均收益+Bonus, Bonus越大,候选的平均收益置信区间越宽,约不确定,越需要更多的选择机会。

t是目前的总选择次数,Tjt是这个臂被选择的次数。(平均+探索)


3.Epsilon贪婪算法

方法: 选一个(0,1)的之间较小的数,作为Epsilon。=》 1-Epsilon 这个概率值作为平均收益去选择=》更新

Epsilon越接近于0,在探索上越保守。


UCB和汤普森效果比较好

你可能感兴趣的:(Bandit算法)