《Scala机器学习》一一2.6 优化和交互

2.6 优化和交互
虽然收集的数据只能用于理解业务,但任何数据驱动业务的目标是通过基于数据和模型的决策来自动优化业务行为。人们希望将人为干预减少到最低限度。下面这个简图可以描述一个周期:
对于进入系统的新信息反复执行该循环。可以通过调整系统的参数来提高整个系统性能。
反馈回路
虽然大多数系统仍然
需要人们的参与,但是近几年来出现了可以自己管理整个反馈循环的系统,其范围可从广告系统到自动驾驶汽车。
这个问题属于最优控制理论,也是一个让成本函数最小化的优化问题,人们用一组微分方程来描述该系统的成本函数。最优控制是通过一组控制策略来让成本函数在给定约束的情况下变得最小。例如,为了在一定时间内完成给定的路线,需要找到一种方法来驱动汽车,使其消耗的燃料最小;另外一个例子是在有限库存和有限时间的情况下,在网站上投放广告获得最大利润。用于最佳控制的大多数软件包是用高级语言(比如C或MATLAB(PROPT、SNOPT、RIOTS、DIDO、DIRECT和GPOPS))编写的,但它们能提供Scala的接口。
但在许多情况下,用于优化、状态转换和微分方程的参数是不确定的。马尔可夫决策过程(MDP)提供了一种用于建立决策模型的数学框架,这些决策的结果有一部分是随机的,有一部分是在决策者的控制下得到的。在MDP中,需要处理一组离散的可能状态和一组动作。“奖励”和状态转换取决于状态和动作。MDP可用来研究优化问题的求解,这些优化问题是基于动态规划和强化学习的。

时间: 2024-10-06 11:11:48

《Scala机器学习》一一2.6 优化和交互的相关文章

《Scala机器学习》一一导读

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

《Scala机器学习》一一第2章 数据管道和建模

**第2章数据管道和建模**上一章介绍了一些研究数据的基本工具.本章将深入介绍一些更复杂的主题,其中包括建立统计模型.最优控制以及科学驱动(science-driven)的工具等问题.不过事先声明,本书只会涉及最优控制的若干主题,因为本书是介绍基于Scala的机器学习(ML),而不是数据驱动的企业管理理论,企业管理理论本身就足以写成一本书.本章不会介绍基于Scala的具体实现,而是在一个高层次上探讨构建数据驱动型企业的问题.后面的章节将详细讨论如何实现这些细节.本章也特别强调不确定性的处理.不确

《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机器学习》一一第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机器学习》一一2.1 影响图

2.1 影响图 决策过程会涉及多个方面,但通常关于不确定条件下做决策的书都会介绍影响图(Influence Diagrams for Team Decision Analysis, Decision Analysis 2 (4): 207–228).影响图可以帮助分析和理解决策过程.决策可以很简单,比如在个性化环境中选择要展示给用户的下一篇新闻文章:也可以很复杂,比如检测企业网络中的恶意软件或者决定下一个研究项目内容.假设要根据天气来决定一个人是否要乘船旅行.可以将决策过程描述为一个图表.图2-

《Scala机器学习》一一1.2 去除分类字段的重复值

1.2 去除分类字段的重复值 请准备好数据集和电脑.为了方便起见,本书已经提供了一些关于点击流(clickstream)数据的样本,它们是经过预处理过的,在https://github.com/alexvk/ml-in-scala.git上可以找到这些数据.chapter01/data/clickstream文件夹中包含了时间戳.会话编号(session ID),以及在调用时的一些额外事件信息(比如URL.类别信息等).首先要对数据集的各个列做一些变换,以此得到数据的分布情况. 图1-1给出了在