《Scala机器学习》一一2.3 探索与利用问题

2.3 探索与利用问题

探索(exploration)与利用(exploitation)的应用很广,从资金分配到研究自动驾驶汽车项目都在使用,但它最初也是源于赌博问题。该问题的经典形式是一个多臂赌博机(老虎机)问题,即假设有一个或多个手臂的赌博机,按次序以未知概率来拉动每个手臂,以此来表示独立同分布的回报。在这种简化模型中不断独立地重复。假设多个手臂间的回报是独立的。其目标是最大化回报(比如赢钱的金额),同时还要最小化学习成本(即在小于最优获胜率的情况下拉动手臂的次数)。假设已经给定了一个手臂选择策略,显然需要在寻找一个能得到最优回报的手臂与利用已知最好手臂之间做出权衡。

其中Si是N次试验中选择的第i个臂。多臂赌博机问题在20世纪30年代被广泛研究,而在本世纪初,随着金融和互联网广告技术领域的出现,它再次受到关注。通常由于问题的随机性,使pseudo-regret的期望界好于N的平方根。pseudo-regret可以控制到以log N为界(Regret Analysis of Stochastic and Nonstochastic Multi-armed Bandit Problems by Sebastien Bubeck and Nicolo Cesa-Bianchi,http://arxiv.org/pdf/1204.5721.pdf)。
在实践中最常用的策略是策略,这种策略选择最优的手臂的概率是(1―),而选择另一个手臂概率为。这种方法可能会在那些根本不带来回报的手臂上花费大量的资源。UCB策略优化了策略,通过预估最大回报的手臂,然后再加上回报估计的某些标准偏差。这个方法需要在每一轮中再次计算最佳手臂,并且需要近似估计均值和标准偏差。另外,UCB必须在每轮中重新计算估计值,这可能会带来扩展性问题。
最后来介绍Thompson采样策略。它使用一个固定的随机采样,该采样服从-伯努利后验估计,并且赋给下一个能给出最小期望后悔(regret)的手臂。这种数据可以避免参数重新计算。尽管需要假设具体的数,但下图仍对这些模型的性能进行了有效比较:

图2-4 当K=5时,单臂老虎机和不同策略的情形下,对采用不同研究-利用策略的模拟结果
图2-4显示了不同策略的仿真结果(http://engineering.richrelevance.com/recommenda-tions-thompson-sampling)。随机策略仅仅是随机地分配手臂,对应于纯粹的探索(explora-tion)模式。朴素策略是随机达到特定的阈值,再转成利用(exploitation)模式。Upper Confidence Bound(UCB)模式使用95%的置信区间,而UCB1是UCB的修改版,它考虑了分布的对数正态性。最后是Thompson策略,它通过实际的后验分布给出一个随机抽样来优化后悔值。
探索和利用模型对初始条件和异常值非常敏感,特别是在低响应的情形下。这已经在基本卡死的臂上进行过了大量的试验。
另一种增强的策略是基于额外的信息(如位置)来估计更好的先验,或者根据这些额外的信息限制手臂集,以便探索K。但这些会涉及更专业的领域(如个性化或在线广告)。

时间: 2024-07-30 22:57:55

《Scala机器学习》一一2.3 探索与利用问题的相关文章

《Scala机器学习》一一导读

前 言 这是一本关于机器学习的书,它以Scala为重点,介绍了函数式编程方法以及如何在Spark上处理大数据.九个月前,当我受邀写作本书时,我的第一反应是:Scala.大数据.机器学习,每一个主题我都曾彻底调研过,也参加了很多的讨论,结合任何两个话题来写都具有挑战性,更不用说在一本书中结合这三个主题.这个挑战激发了我的兴趣,于是就有了这本书.并不是每一章的内容都像我所希望的那样圆满,但技术每天都在快速发展.我有一份具体的工作,写作只是表达我想法的一种方式. 下面先介绍机器学习.机器学习经历了翻天

《Scala机器学习》一一2.2 序贯试验和风险处理

2.2 序贯试验和风险处理如果风险偏好是为了多赚钱,但不会太在意丢失本金,那会怎么样呢?本节将简单研究为什么人的偏好是不对称的,并且也有科学证据表明:由于进化的原因,这种不对称性在我们的头脑中根深蒂固.不过必须要对参数化非对称函数的期望值进行优化,函数具体形式如下: ![image](https://yqfile.alicdn.com/595860d9091f51896de2f9e2dfe041d2366fc1fb.png) (2-1) 为什么在分析中会出现非对称函数?一个例子是重复投注或重新投

《Scala机器学习》一一第1章 探索数据分析

第1章 探索数据分析 在本书深入研究复杂的数据分析方法之前,先来关注一些基本的数据探索任务,这些任务几乎会占据数据科学家80%-90%的工作时间.据估计,每年仅仅是数据准备.清洗.转换和数据聚合就有440亿美元的产值(Data Preparation in the Big Data Era by Federico Castanedo; Best Practices for Data Integration, O?Reilly Media, 2015).即便如此,人们最近才开始把更多的时间花费在如

《Scala机器学习》一一第3章 使用Spark和MLlib

第3章 使用Spark和MLlib 上一章介绍了在全局数据驱动的企业架构中的什么地方以及如何利用统计和机器学习来处理知识,但接下来不会介绍Spark和MLlib的具体实现,MLlib是Spark顶层的机器学习库.Spark是大数据生态系统中相对较新的成员,它基于内存使用而不是磁盘来进行优化.数据仍然可以根据需要转储到磁盘上,但Spark只有在明确指示这样做或活动数据集不适合内存时才会执行转储.如果节点出现故障或由于某些原因从内存中擦除信息,Spark会利用存储的信息来重新计算活动数据集.这与传统

《Scala机器学习》一一3.2 理解Spark的架构

3.2 理解Spark的架构 并行化是将工作负载划分为在不同线程或不同节点上执行的子任务.下面介绍Spark实现并行化的原理,以及它如何管理子任务的执行和子任务之间的通信.3.2.1 任务调度Spark工作负载的划分由弹性分布式数据集(Resilient Distributed Dataset,RDD)的分区数决定,这是Spark的基本抽象和管道结构.RDD是一种可并行操作的.不可变元素的分区集合.具体细节可能取决于Spark的运行模式,图3-2为Spark任务/资源调度的示意图. 图3-2 通

《Scala机器学习》一一3.3 应用

3.3 应用 下面会介绍Spark/Scala中的一些实际示例和库,具体会从一个非常经典的单词计数问题开始.3.3.1 单词计数 大多数现代机器学习算法需要多次传递数据.如果数据能存放在单台机器的内存中,则该数据会容易获得,并且不会呈现性能瓶颈.如果数据太大,单台机器的内存容纳不下,则可保存在磁盘(或数据库)上,这样虽然可得到更大的存储空间,但存取速度大约会降为原来的1/100.另外还有一种方式就是分割数据集,将其存储在网络中的多台机器上,并通过网络来传输结果.虽然对这种方式仍有争议,但分析表明

《Scala机器学习》一一2.5 数据驱动系统的基本组件

2.5 数据驱动系统的基本组件 简单地说,一个数据驱动架构包含如下的组件(或者可精简为以下这些组件): 数据收集:需要从系统和设备上收集数据.大多数的系统有日志,或者至少可选择将日志写入本地文件系统.一些系统可以通过网络来传输信息,比如syslog.但若没有审计信息,缺少持久层意味着有可能丢失数据. 数据转换层:也被称为提取.变换和加载(ETL).现在数据转换层也可以进行实时处理,即通过最近的数据来计算汇总信息.数据转换层也用来重新格式化数据和索引数据,以便能被UI组件有效地访问. 数据分析和机

《Scala机器学习》一一3.4 机器学习库

3.4 机器学习库 Spark是基于内存的存储系统,它本质上能提高节点内和节点之间的数据访问速度.这似乎与ML有一种自然契合,因为许多算法需要对数据进行多次传递或重新分区.MLlib是一个开源库,但仍有一些私人公司还在不断按自己的方式来实现MLlib中的算法. 在第5章会看到大多数标准机器学习算法可以表示为优化问题.例如,经典线性回归会最小化回归直线与实际y值之间的距离平方和: 其中,是由下面的线性表达式所得到的预测值: A通常称为斜率,B通常称为截距.线性优化问题更一般化的公式可以写成最小化加

《Scala机器学习》一一1.7 总结

1.7 总结本章试图为后面更复杂的数据科学建立一个通用平台.不要认为这里介绍了一套完整的探索性技术,因为探索性技术可扩展到非常复杂的模式上.但是,本章已经涉及了简单的汇总.抽样.文件操作(如读和写),并使用notebook和Spark DataFrame等工具来工作,Spark的DataFrame也为使用Spark/Scala的数据分析师引入了他们所熟悉的SQL结构.下一章开始介绍数据管道,可将其看作基于数据驱动企业的一部分,并从商业角度给出数据发现的过程:做数据分析试图要完成的最终目标是什么.