bandit算法原理及Python实现
来源:互联网 发布:顶尖硬盘数据恢复软件 编辑:程序博客网 时间:2024/06/04 20:05
Bandit算法是在线学习的一种,一切通过数据收集而得到的概率预估任务,都能通过Bandit系列算法来进行在线优化。这里的“在线”,指的不是互联网意义上的线上,而是只算法模型参数根据观察数据不断演变。
以多臂老虎机问题为例,首先我们假设每个臂是否产生收益,其背后有一个概率分布,产生收益的概率为p
我们不断地试验,去估计出一个置信度较高的概率p的概率分布就能近似解决这个问题了。
怎么能估计概率p的概率分布呢? 答案是假设概率p的概率分布符合beta(wins, lose)分布,它有两个参数: wins, lose。
每个臂都维护一个beta分布的参数。每次试验后,选中一个臂,摇一下,有收益则该臂的wins增加1,否则该臂的lose增加1。
初始化beta参数胜率和败率都为0.5
prior_a = 1. # aka successes prior_b = 1. # aka failuresestimated_beta_params = np.zeros((K,2))estimated_beta_params[:,0] += prior_a # allocating the initial conditionsestimated_beta_params[:,1] += prior_b
Beta分布:
对于硬币或者骰子这样的简单实验,我们事先能很准确地掌握系统成功的概率。然而通常情况下,系统成功的概率是未知的。为了测试系统的成功概率p,我们做n次试验,统计成功的次数k,于是很直观地就可以计算出p=k/n。然而由于系统成功的概率是未知的,这个公式计算出的p只是系统成功概率的最佳估计。也就是说实际上p也可能为其它的值,只是为其它的值的概率较小。例如有某种特殊的硬币,我们事先完全无法确定它出现正面的概率。然后抛10次硬币,出现5次正面,于是我们认为硬币出现正面的概率最可能是0.5。但是即使硬币出现正面的概率为0.4,也会出现抛10次出现5次正面的情况。因此我们并不能完全确定硬币出现正面的概率就是0.5,所以p也是一个随机变量,它符合Beta分布.Beta分布是一个连续分布,由于它描述概率p的分布,因此其取值范围为0到1。
Beta分布有α和β两个参数,其中α为成功次数加1,β为失败次数加1。
几个bandit策略
http://blog.csdn.net/z1185196212/article/details/53374194
- bandit算法原理及Python实现
- bandit算法原理及Python实现
- bandit算法原理及Python实现
- bandit算法原理及Python实现
- logistic回归算法原理及python实现
- 聚类算法原理及python实现
- 感知机算法原理(PLA原理)及 Python 实现
- 推荐系统的EE问题及Bandit算法
- ID3算法的原理及实现(Python)
- K近邻算法原理及实现(Python)
- 决策树之CART算法原理及python实现
- 集成学习AdaBoost算法原理及python实现
- 常用排序和查找算法的原理及python实现
- bandit 算法资料大全
- PCA原理及Python实现
- CART算法原理及实现
- 谱聚类算法原理及实现
- CART算法原理及实现
- Windows系统下的多显示器模式编程
- spring cloud教程之使用spring boot创建一个应用
- Tensorflow session
- 大型网站架构演化历程
- [AS2.2]对话框+popupwindow的总结使用
- bandit算法原理及Python实现
- 使用Spring Sleuth和Zipkin跟踪微服务
- JVM的底层实现原理
- 【并查集】POJ 1611 The Suspects
- mySQL安装
- 软件测试学习需看的书
- 与 SQL Server 2012 建立连接时出现与网络相关的或特定于实例的错误。
- Matlab生成c代码
- spring boot/cloud 应用监控