00:01
第八章全书总结现在你知道了如何使用重要的机器学习算法进行监督学习和无监督学习,这让你可以解决很多机器学习问题。在带你探索机器学习提供的所有可能性之前,我们希望给你一些最后的建议,一些额外的资源,并提供关于如何进一步提高机器学习和数据科学技能的建议。8.1处理机器学习问题。学完了本书介绍的所有强大的方法,你现在可能很想马上行动,开始用你最喜欢的算法来解决数据相关的问题,但这通常并不是开始分析的一个好方法。机器学习算法通常只是更大的数据分析与决策过程的一小部分。为了有效的利用机器学习,我们需要退后一步,全面的思考问题。首先,你应该思考想要回答什么类型的问题。你想要做探索性分析,只是看看能否在数据中找到有趣的内容,或者你已经有了特定的目标。通常来说,你在开始时有一个目标,比如检测欺诈用户交易、推荐电影或者找到未知的行星。如果你有这样的目标,那么在构建系统来实现目标之前。
01:25
你应该首先思考如何定义并衡量所谓的成功,以及成功的解决方案对总体业务目标或研究目标有什么样的影响。假设你的目标是欺诈检测,然后就出现了下列问题。如何度量欺诈检测?是否实际有效?我有没有评估算法的核实数据?如果我成功了,那么我的解决方案会对业务造成什么样的影响?正如第五章中所说,你最好能使用商业指标直接度量算法的性能,比如增加利润和减少损失。但是通常难以做到。一个更容易回答的问题是,如果我构建出完美的模型,那么会怎么样?如果完美的检测出所有欺诈行为可以为你的公司每月节省100美元,那么这些省下来的钱。
02:19
可能都不够保证让你动手去开发算法。如果模型可能为你的公司每月节省上万美元,那么这个问题就值得去探索。假设你已经定义好了要解决的问题。知道一种解决方案可能对你的项目产生重大的影响。此外,你还确定拥有合适的信息来评估模型是否成功。接下来的步骤通常是获取数据并构建工作原型。本书中我们讨论过许多你可以使用的模型,以及如何正确的评估和调节这些模型。但在尝试这些模型时,请你记住,这个只是更大的数据科学工作流程中的一个小部分。模型构建通常是收集新数据、清洗数据、构建模型和分析模型。
03:14
这个反馈环路的一部分分析模型所犯的错误通常告诉我们。数据中缺失了哪些内容,还可以收集哪些额外的数据,或者如何重新规划任务,使机器学习更加高效?收集更多数据或不同的数据,或者稍微改变任务的规划,可能会比连续运行网格搜索来挑战的回报更高。参与决策过程的人,你还应该考虑是否应该让人参与决策过程以及如何参与有些过程,比如无人驾驶汽车的行人检测需要立即做出决定,其他过程可能不需要立刻的响应,所以可以让人来决定不确定的决测。举个例子,医疗应用可能需要非常高的精度,单靠机器学习算法可能无法达到。
04:08
但如果一个算法可以自动完成,90%。50%甚至只有10%的决策过程,那么都可能已经减少了响应时间或降低了成本。许多应用都以简单情况为主,算法可以对其做出决策,还有相对较少的复杂情况可以将其交给人来决定。八条二,从原型到生产本书中所讨论的工具对许多机器学习应用来说都是很好的,可以非常快速的进行分析和原型设计。许多组织,甚至是非常大型的组织,比如国际银行和全球社交媒体公司也将pth和STEM用于生产系统。但是许多公司用有复杂的技术架构将P集成到这些系统中并不是很容易。
05:00
这不一定是个问题。在许多公司中,数据分析团队使用P或R等语言可以对想法进行快速的测试,而生产团队则是使用勾color c、加加和Java等语言来构建鲁邦性更好的可扩展系统。数据分析的需求与构建实设服务并不相同。所以这些任务使用不同的语言也是有道理的。一个常见的解决方案是使用一种高性能语言。在更大的框架内重新实现分析团队找到解决方案。这种方法比嵌入整个库或整个编程语言并与不同的数据格式相互转换要更加的简单。无论你能否在生产系统中使用S,重要的是要记住生产系统的要求。与一次性的分析脚本不同,如果将一个算法部署到更大的系统中,那么会涉及软件工程方面的很多内容,比如可靠性、可预测性、运行时间和内存需求。对于在这些领域表现良好的机器学习系统来说,简单就是关键。
06:09
请仔细检查数据处理和预测流程中的每一个部分,并问你自己这些问题。每个步骤增加了多少的复杂度?每个组件对数据或计算基础架构的变化的鲁棒性有多高?每个组件的优点能否使其复杂度变得合理?如果你正在构建复杂的机器学习系统,我们强烈推荐阅读Google机器学习团队的研究者发布的论论文。我们新人领the high interest credit card of technical date这篇文章重点介绍了在大规模生产中创建并维护机器学习软件的权衡。虽然技术债务问题在大规模的长期项目中特别的紧迫。但即使是短期和较小的系统。
07:02
吸取的教训也有助于我们构建更好的软件8.3测试生产系统。在这一本书中,我们介绍了。如何基于事先收集的测试集来评估算法的预测结果,这被称为离线评估of life evaluation。但如果你的机器学习系统是面向用户的,那么这只是评估算法的第一步,下一步通常是在线测试online testing或实时测试。Like testing。对在整个系统中使用算法的结果进行评估。改变网站向用户呈现推荐结果或搜索结果可能会极大的改变用户的行为,并导致意想不到的结果。为了防止出现这种意外,大部分面向用户的服务都会采用AB测试。AB test,这是一种忙的来用户研究形式。在AB测试中,在用户不知情的情况下。
08:05
未选中的一部分用户提供使用算法A的网站或服务,而为其余用户提供算法B。对于两组用户在一段时间内记录相关的成功指标。然后对算法A和算法B的指标进行对比,并根据这些指标的两种方法做出选择。使用AB测试让我们能够在实际情况下评估算法,这可能有助于我们发现用户与模型交互时的意外接触。通常情况下,A是一个新模型,而B是已经建立的系统。在线测试中还有比AB测试更为复杂的基础,比如band算法。White the bandit of reasons for website optimization。华文出版社一书对这一主题做出了很好的介绍。8.4,构建你自己的估计器。本书包含在争论中实现的大量工具和算法,可用于各种类型的任务。但是你通常需要对数据做一些特殊的处理。这些处理方法没有在S争论中实现,再将数据传入S模型与管道之前,只做数据预处理可能也就足够了。
09:21
但如果你的预处理依赖于数据,而且你还想要使用网格搜索交叉验证,那么事情就变得有点复杂了。我们在第六章中讨论过将所有依赖与数据的处理过程放在交叉验证循环中的重要性。那么如何同时使用你自己的处理过程与在论工具?有一种简单的解决方案,构建你自己的估计器。实现一个与S接口兼容的估计器是非常简单的,从而可以与type gra CD和Co e或一起使用。你可以在文档中找到详细说明。
10:02
单相能是其要点。实现一个变换器内最简单的方法就是从basema和transform继承。然后实现。魔法方法。普通方法和transform。实现一颗分类器或回归器的方法是类似的,你只需要从class或继承,而不是继承transform mix。此外,你还需要实现predict方法,而不必实现transform方法。从上门的例子中可以看出,实现你自己的估计器需要很扫的代码。随着时间的推移,大部分用户都会构建出一组自定义的模型。
11:01
8.5下一步怎么走?本书对机器学习进行了介绍,并让你成为一名高效的从业者。但是,如果你想进一步提高机器学习技能,下面是一些关于书籍和更专业的资源的建议,以便你进一步深入研究八篇定义理论。在本书中,我们试图直观的解释大多数常见机器学习算法的工作原理。而不要求你在数学或者计算机科学方面具有坚实的基础。虽然说我在视频中不停的科普。一些数学方面的理论,但是那些东西了解即可。因为。我讲的也不是很细。但是我们讨论的许多模型都使用了概率论、线性代数和最优化方面的理论。
12:02
虽然没有必要理解这些算法的所有些细节,但我们认为了解算法背后的一些理论知识可以让你成为更为优秀的数据科学家。关于机器学习理论有许多好书,如果我们所讲的内容激起了你对机器学习可能性的兴趣。那么我们建议你挑选至少一本深入阅读。我们在前文中已经提到过hastyher和friendman合著的统计学习基础一书,这里值得重新推荐一下。另一本相当好读的书是Steven marland跟machine learning等。Or perspective?Man and hall c RC出版社,他还附带有潘代码。还有两本强烈推荐的经典著作,一本是chop bishop的pattern the and machine learning spring出版社,着重于盖率框架,另一本是heavy machine的machine learning。
13:12
A prob probistic perspective MIT出版社全面讨论了机器学习算法,有1000多页,深入介绍我最先进的方法,内容比这本书要丰富的多。8.5.2其他机器学习的框架和包虽然是X。是本书作者最喜欢的机器学习软件包,Python也是他们最喜欢的机器学习语言。但还有许多其他选择。根据你的需求,P和thanks可能不是你在特定情况下的最佳选择。通常情况下,P很适和尝试和评估模型,但更大型的外B服务。应用使用更常用的。
14:03
Java或C加加编写部署模型可能需要有这些系统进行集成。你想要考虑在等等之外的选择,可能还有一些原因,就是你对统计建模和推断比预测更感兴趣。在这种情况下,你应该考虑使用models包。他用更具有统计学意义的接口实现了多种线性模型。如果你还没有对P情有独钟,那么还可以考虑一下R语言,这是数据科学家的另一种语言,R是专门针对统计分析设计的语言。因其出色的可视化功能和许多可用的统计建模包,通常是非常专业化的文明。另一个常用的机器学习软件模式photo rabbit通常简称为VW。以避免绕口。一个用C加加编写的高度优化的机器学习包,还有命令行界面BW。
15:04
对大型数据集合流数据特别的有用。对于在集群上分布式运行的机器学习算法,在取得本数时最常用的一种解决方案是ML,一个基于Spark分布式计算环境构建的color8.8.5.3。排序推荐系统。与其他学习类型,本书是一本入门书,所以我们重点介绍最常见的机器学习任务。监督学习中的分类与回归,无监督学习中的聚类和信号分解,还有很多类型的机器学习都有很多重要的应用,有两个特别重要的主题没有包含在本书中。第一个是排序问题软品对于特定的查询,我们希望检索出安相关性排序的答案。你今天可能已经使用过排序系统,它是搜索引擎的运行原理,你输入搜索查询并获取答案的有序列表,他们按照相关性进行排序。
16:08
Many。The heaven和schools合作的introduction to informationrival1书给出了对排序问题的很好介绍。第二个主题是推荐系统the commander system就是根据用户偏好向他们提供建议。你可能已经在您可能认识的人购买此商品的顾客还购买了或者您的最佳选择本标题下遇到过推荐系统。关于这一主题有大量的文献。如果想立刻投身于这个主题。你可能对目前经典的Netflix大奖挑战Netflix price challenge感兴趣。Netflix视频流网站发布了关于电影片好的大型数据集,并对给出最佳推荐团队奖励100万美元。另一种常见的应用是时间序列预测,比如股票价格。这一方面也有大量的文献。还有许多类型的机器学习任务比我们这里列出的要多得多。我们建议你从书籍、研究论文和在线社区中获取信息,以找到最适合你实际情况的。
17:18
三是。8.5.4概率建模推断与概率编程大部分机器学习软件包都提供了预定义的机器学习模型,每一种模型都应用了一种特定的算法,但是许多现实世界的问题都具有特殊的结构,如果将这种结构正确的纳入模型。则可以得到性能更好的预测。通常来说,具体问题的结构可以用概率论的语言来描述,这种结构通常来自于你想要预测的情况的数学模型。为了理解结构化问题的含义。请思考下面这个例子,假设你想要构建一个在户外空间提供非常详细的位置估计的移动应用,以帮助用户定位历史遗迹。
18:07
手机提供了许多传感器来帮助你获取精确的位置测量,比如GPS、加速度计和指南针。你可能还有该区域的精确地图。这个问题是高度结构化的。你从地图中知道了感兴趣的地点的位置和路径,你还从GPS中得到了操对的位置,而用户设备中的加速度计和指南针可以为你提供非常精确的相对测量。但是,将这些工具全部放入配合机器学习系统中来预测位置可能并不是一个最好的主意,这将会丢掉您已经知道的关于现实世界如何运行的所有信息。如果指南针和加速度计告诉你域名用户正在向北走,而GPS告诉你该用户正在向南走,你可能不相信GPS。如果未知估计告诉你。
19:03
用户刚刚走过了一堵墙,你应该也会非常怀疑。可以使用概率模型来表述这种情况,然后再使用机器学习或概率推断来找出你应该对哪种测量方法的信任程度,并推断出单用户位置的最佳预测。一旦你用正确的方式对现状和不同因素共同作用的模型进行表述,那么就有一些方法可以利用这些自定义模型直接计算出预测结果。这些方法中最普遍的方法被称为概率编程语言,他们提供了一种非常优雅、用非常紧凑的方法来表述机器学习的问题。概率编程语言的常见例子有PMC可用于pthon和STEM,可用于多种语言的框架包括pthon。虽然这些软件包需要你对概率论有一些了解,但他们大大简化了新模型的创建过程。8.5.5神经网络虽然我们在第二章和第七章都简要涉及了神经网络的主题,但这是机器学习快速发展的领域,每周都会发布新方法和新应用。积极学习和人工智能领域的最新突破更由这些进步所驱动。比如阿尔法斗程序在围棋比赛中战胜人类冠军,语音理解的性能不断的提高,以及接近实时的语音翻译的出现。虽然这一领域的进步非常迅速,以致当前对最新进展的任何参考都很快的过时。
20:47
但I am good fellow。有。东和aon的新书迪布伦里。MIT出版社对这一组题。
21:02
进行了全面的介绍。8.5.6。推广到更大的数据集。在本书中,我们总是假设所处理的数据可以被称之为内存RAM中的一个朗派数组或散派系数矩阵。即使现在,服务器通常都具有数百GB的RAM。但这也是对你所能处理数据的大小根本限制,不是所有人都买得起这么大型的机器,甚至连从云端供应商租一台都负担不起。不过,在大多数应用中,用于构建机器学习系统的数据量相对较少,很少有机器学习数据集包含数百GB以上的数据。在多数情况下,这张扩展内存或从云端供应商租一台机器变为可行的解决方案。但是如果你需要处理PB级别的数据,或者需要节省处理大量数据的费用,那么有两种基本策略,和外学习,Also for learning与集群上的并行化paraization over a和外学习是指。
22:17
无法保存到主存储器的数据中进行学习,但从单排但在单台计算机上。甚至是一台计算机和单个处理器进行学习。数据从硬盘或网络等来源进行读取,一次读取一个样本或者多个样本组成的数据块,这样一个数据块都可以读入RAM,然后处理这个数据子集并更新模型以体现从数据中学到的内容。然后舍弃该数据块并读取下一块数据。在一争论中的一些模型实现了额外学习,你可以在在线用户指南中找到相关细节。因为核外学习要求所有数据都有一台计算机处理,所以在非常大的数据集上运行时间可能会很长。此外,并非所有机器学习算法都可以用这种方法来实现。
23:11
另一种扩展策略是将数据分配给计算机集群中的多台计算机,让每台计算机出的部分数据。对于某些模型来说,这种方法要快得多,而可以处理的数据大小仅授性集群的大小。但是这种计算通常需要相对复杂的技术架构。目前最常用的分布式计算平台之一是在卡之上构建的Spark平台。Spark在ML Li包中包含一些机器学习功能。如果你的数据已经我于卡文件系统中,或者你已经使用Spark来预处理数据,那么这可能是最简单的选项。但如果你还没有这样的基础架构建立B。
24:00
集成一个Spark集群可能发式过大。前面提到的CW包提供了一些分布式的功能,在这种情况下可能是更好的解决方案。8.5.7磨练你的技术。与生活中的许多事情一样,只有实践才能让你成为本书所接受主题方面的专家。对于不同的任务和不同的数据集,特征提取、预处理、可视化和模型构建可能的差异很大。你或许足够信率已经能够访问大量数据集和任务。如果你还没有想到什么任务,那么一个好的起点是机器学习竞赛,他会发布一个数据集和一个北京任务。许多团队会得到最佳预测结果而展开竞争。许多公司、非盈利组织和大学都会举办这种比赛。要想找到这种比赛最常去的地方,这是咖。这是一个定期举办数据科学比赛的网站,其中有一些比赛会提供大量的资金卡。论坛也是关于机器学习最新工具和技巧的很好的信息来源,在网站上可以找到大量的数据集。
25:09
在open ML平台。可以找到更多的数据集及相关的任务,该平台拥有两万多个数据集以及五万多个相关的机器学习任务,梳理这些数据集可以提供练习机器学习技能的一个好机会,比赛的一个缺点是提供了特定的指标来优化。通常。还提供了一个固定的已经预处理过的数据集。请记住,定义问题和收集数据也是现实世界问题的重要方面,用正确的方式表示问题可能比努力提高分类器精度的最后一个百分点要重要的多。8.6中间,我们希望已经让你相信了机器学习在大量应用中的实用性,以及在实践中实现机器学习的简单性。继续挖掘数据,同时千万不要忽视大局。
我来说两句