《2019实用机器学习算法.docx》由会员分享,可在线阅读,更多相关《2019实用机器学习算法.docx(250页珍藏版)》请在课桌文档上搜索。
1、实用机器学习算法目录第1部分机器学习工作流程第1章什么是机器学习31.1理解机器学习31.2 使用数据进行决策6122机器学习方法1.3 跟踪机器学习流程:从数据到部署131.3.1 数据集合和预处理131. 3.2数据构建模型1433模型性能评估16总结1.1-6本章术语1HXI第2章实用数据处理202. 1起步:数据收集212.1.2如何获得目标变量的真实值232.1.4训练集是否有足够的代表性2622262.2.1分类特征272.2.3简单特征工程312.3数据可视化:332.3.1马赛克图342.3.2盒图352.3.3密度图372. 42.3.4散点图38总结382.5本章术语3B第
2、3章建模和预测403. 1基础机器学习建模403.1.4有监督和无监督学习443.2323多类另!1分类513.3 回归:预测数值型数据52543.3.1构建回归器并预测3. 3.2对复杂的非线性数据进行回归563.4总结5735Vq58第4章模型评估与优化54. 1模型泛化:评估新数据的预测准确性604. 1.1问题:过度拟合与乐观模型604. 1.2解决方案:交叉验证62Xtt4.1 3交叉验证的注意事项654.24.3 回归模型评估744. 3.1使用简单回归性能指标754.4参数调整优化模型774. 4.1机器学习算法和它们的调整参数774.5总结31第5章基础特征工程835.1.1
3、I4$fE.83512使用特征工程的5个原因845.1.3 特征工程与领域专业知识855. 2基本特征工程过程865. 2.2处理日期和时间特征875.35.3.1 前向选择和反向消除35.3.2 数据探索的特征选择4533实用特征选择实例5总结.8第2部分实际应用第6章案例:NYC出租车数据1036. 1数据:NYC出租车旅程和收费信息1036.1.1数据可视化1046.1.2定义问题并准备数据1076.26.2.1 基本线性模型1016.2.2 非线性分类器1623包含分类特征112总结1156.4第7章高级特征工程1177.1高级文本特征1177.1.1 词袋模型“77.1.2 主题建模
4、W7.1.3 1.3内容拓展1227.27. 2.2提取物体和形状1257.37. 3.1时间序列数据的类型1288. 3.2时间序列数据的预测1307.47,34事件流的特征工程135总结1357.5第8章NLP高级案例:电影评论情感预测1388. 1研究数据和应用场景1388. 1.3应用场景有哪些1408. 2提取基本NLP特征并构建初始模型1428. 2.2用朴素贝叶斯算法构建模型1448. 2.3tf-idf算法规范词袋特征1478. 2.4优化模型参数1488.38. 3.1Word2vec1528 4&3.2154总结1569 .5iS9L了fj不王157I.1扩展前需考虑的问题
5、1571.1.1 识别关键点1581.1.2 选取训练数据子样本代替扩展性151l21.3可扩展的数据管理系统160机器学习建模流程扩展1621.31.3.1 预测容量扩展166I413.2预测速度扩展1662 3 4 5 60.0.SSS案例:数字显示广告170显不广告170数字广告数据171特征工程和建模策略172数据大小和形状173奇异值分解175资源估计和优化17710.8K近邻算法17810.1随机森林算法18010.10其他实用考虑18110.11总结18210.12本章术语18310.13摘要和结论183附录常用机器学习算法185名词术语中英文对照187第1部分机器学习工作流程在
6、本书的第1部分,将介绍基本的机器学习工作流程,每章都涵盖流程中的一个工作步骤.第1章,介绍机器学习的用途,以及为什么要阅读本书。第2章研究基本机器学习流程中的数据处理,读者将学习到一些通用方式,从现实世界和纷乱的数据中清理和提取有价值的信息第3章,随着一些模型算法及其应用的学习,开始构建简单的机器学习模型:第4章,深入研究机器学习模型,并对它们进行评估和性能优化。第5章,致力于特征工程,从数据中提取特征是构建和优化机器学习系统的重要组成部分。第1章什么是机器学习1959年,IBM公司的计算机科学家亚瑟-塞缪尔编写了一个跳棋程序,每个棋盘位置根据胜出的可能赋予一个数值。首先,该数值基于一个公式,
7、该公式使用诸如每方的棋子数和国王的数目作为因数,这个公式起到了作用,使塞缪尔找到了提升性能的方法。他让程序和自己对弈,并用对弈结果对位置赋值进行精确化。到了20世纪70年代中期,此程序已经拥有相当于业余棋手的能力支塞缪尔写出了可以根据经验提升自己性能的程序,机器学习(MaChineLeaming,ML)随之诞生。本书不打算描述机器学习算法的令人畏惧的数学细节(虽然对于常用的算法,我们也会“窥探”它的内部工作机制),而是针对非机器学习专家在实际应用中集成机器学习给出指导和所面临的挑战。在第1章中,我们通过一个真实的商业问题一借贷审核应用,来证明机器学习在替代常用方法时所具有的优势。1.1理解机器
8、学习当讨论人类学习时,我们会对死记硬背或记忆和智力进行区分。记住一个电话号码和一系列指令无疑是学习,但当我们讨论学习(learning)时,通常具有更广泛的意义。当孩子们一起玩耍时,他们都会观察其他孩子对他的反应,这种体验形成他们将来的社会行JonathanSchaeffer.领先一步:电脑跳根之美M.纽约:Springer.2009.为。他们的过去不会重演.通常和他们交互的可认识的特征一操场,教室,妈妈,爸爸.兄妹,朋友,陌生人,成年人,小朋友,家里的人,外面的人,向他们提供一些暗示,依据过去的经验对新的情况做出判断。他们的学习不仅仅是收集知识,而是构建自己的洞察力(insight)。想象一
9、下使用卡片教孩子认识狗和猫的情景,你出示一张卡片,根据孩子的选择把卡片放在正确或错误的位置上。随着孩子的练习,他的表现就会得到提升。有趣的是,没必要事先教孩子认识猫和狗的技巧,因为人类的认知内建分类机制,所需要的只是样本(examples)o随着孩子对卡片的熟悉,他不仅能够区分卡片上的图像,还能够区分绝大多数猫和狗的图片,更不用说实物了。这种以经验获得知识,并推广到未知的概括(generalize)能力,无论对人类学习还是机器学习都是非常关键的。当然,人类学习远比最先进的机器学习算法还要复杂得多,但计算机在记忆容量、查找和数据处理方面更有优越性。它们的经验来自处理的历史数据使用本书描述的技术一
10、通过经验创造和优化实现的算法。如果这不能算作真正的洞察力,则至少也是一种概括能力。人类和机器学习非常相似,以至于使我们联想到人工智能(ArtificialIntelligence.AI)这个术语和一个非常明显的问题“人工智能和机器学习有什么区别。”关于这个问题还没有达成共识,但大多数人认为机器学习是人工智能的一种,而人工智能则含义更广,它包括机器人技术、语言处理和计算机视觉。机器学习更频繁地应用到人工智能相关的领域,使这两个概念的区别更加模糊。我们可以这么说,机器学习的训练指的是知识的特殊形式和相互关联的一套技术。可以很清楚地说机器学习是什么、不是什么,但对人工智能不能这么说。引用汤姆-米契尔
11、的定义,如果计算机程序对于某个任务,它的性能能够通过可计算的值进行衡量,并能通过经验得到提高,我们就称之为学习氢“对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序从经验E学习。”机器学习顾问凯格,进行了程序精确识别狗和猫的图片的比赛参加者使用提供的25,OOO张打了标记的样本图片训练各自的算法,然后通过12,500张未标记的图片测试他们的程序识别能力。当我们向人们解释凯格的比赛时,他们首先想到的是成功识别狗和猫的一套规则。猫的耳朵呈圆三角形而且是直立的;狗的耳朵是下垂的但并不总是如此。试想一下,对于一个从来没见过狗或猫的人,在没有
12、样本的情况下你如何教他区分。人们对样本使用形状、颜色、质地、比例和其他特征进行学习和归纳。机器学习根据要解决的问题,使用一系列策略或策略组合进行学习。这些策略体现在近十几年间学者和从业者开发的算法,涵盖统计学、计算科学、机器人科学和应用数学,应用于在线搜索、娱乐、数字广告和语言翻译。它们各有优缺点,有一些汤姆-米契尔.机器学习M.McGrawHill11997.见“狗和猫识别比赛地址为是分类器,另一些对数值测量进行预测,还有一些对可比较实体(例如,人、机器、处理过程、猫和狗)辨别异同。它们的共同特性是从样本(经验)学习,并应用到新的未知情况都具备概括归纳能力。在猫和狗的识别比赛中,学习阶段参加
13、者尝试了许多算法进行正确的分类。在几万次的学习中,程序执行分类算法,评测结果,然后进行细微的调整并取得一定的进步。获胜者对于未知情况分类的准确率达到98.914%。考虑到人的错误率大约7%,这个结果已经非常不错了。图17示出了这一过程。机器学习分析已标记的图片并构建模型,然后用于识别未标记的图片。在示例中只有一个猫的图片标记错误。图1-1猫和狗识别比赛的机器学习过程注意,我们这里描述的是带有监督机制的机器学习,这不只是机器学习特有的类型。稍后我们讨论其他类型的机器学习。机器学习可广泛地应用于商业领域,从欺诈检测到客户定位、产品推荐、实时工业监控、情感分析和医疗诊断。可解决数据量巨大而不能手工处
14、理的问题,对于大数据量应用,机器学习有时可发现数据之间微妙的联系,而这种联系在人工审查时很难发现。当这些“微弱”联系组合在一起时,就变成了强大的预测器。从数据中学习,并将获得的知识用于将来决策的过程是非常强大的。事实上,机器学习正迅速成为推动现代“数据驱动经济”发展的强力引擎。图1-2微型贷款的审批流程表17描述了监督机器学习技术的广泛应用和某些实际应用,这并不全面.因为潜在的应用有可能几页纸都写不完。表1-1监督机制机器学习应用实例,按解决问题的类型分类问题描述应用实例分类基于输入确定每个输入所属的分类垃圾邮件过滤、情感分析、欺诈检测、客户广告定位、流失预测、支持案例标记、内容个性化、制造缺
15、陷检测、客户细分、事件发现、基因学、药效学回归基于输入预测每个输入的实际输出股票市场预测、需求预测、价格估计、广告竞价优化、风险管理、资产管理、天气预报、优育预测推荐预测用户喜欢的方案产品推荐、工作招聘、NetfliX奖金、在线约会、内容推荐插补对于缺失的数据推断其价值不完整的医疗记录、客户数据缺失、人口数据普杳输入数据1.2使用数据进行决策在接下来的例子中,我们介绍一个从机器学习获利的真实问题。我们将介绍各种常用的可选方案,从而证明机器学习是最好的方法。假定你掌管着一个小型借贷公司,向陷入困境的个人小型企业贷款。早期.公司每周收到为数不多的申请.你可以用几天的时间人工审核每个请求,并对每位申
16、请人进行背景调查,以决定是否放款,这个流程的示意图如图1-2所示。早期的客户对你的反应时间和服务十分满意,公司的名誉也不胫而走。随着公司的声名鹊起,申请的人越来越多,很快就达到每周收到几百份申请的水平。对于这些猛增的申请你企图加班加点完成它,但等待办理的还是越来越多。某些申请人在焦虑等待的过程中可能会转投到你的竞争对手那里。很明显企图人工处理每个申请不是一个好的办法,坦率地说,承受这样的压力不值得。那么该怎么办呢?在这部分里,你将探索几个方法以加快申请审核来适应不断增长的业务需求。1.2.1传统方法先让我们介绍用于申请审核的两种方法:人工分析和商业规则。对于每种方法,我们详细分析其实现技术并突
17、出它不能达到你扩展业务的目的。雇佣更多的分析员你决定雇佣其他的分析员把你解脱出来。你对花钱雇个新人不感兴趣,而是想和另一个人共同审核贷款申请,这样你就可以在相同的时间里处理大约两倍的申请。这个新的分析员可以帮你把一周内积压的申请处理完毕。起初的几周,你们两个加班加点,但申请数量仍然持续增长,在短短的一个月里增长到每周100O份申请。为了跟上申请增长的速度,你必须雇佣两个以上的分析员。随着业务的发展,这种增加雇员的方法并不能解决持续发展的问题:所有新增货款的收益全都用于了新增的雇佣人员,而没有用于关键的微型借贷基金。按照申请的增加雇佣更多的人员,这种方式阻碍了你的业务发展。更重要的是,你发现招聘
18、过程既耗费时间又耗费金钱,进一步削减了你的商业利益。最后,新雇佣的人在处理贷款申请时因缺乏经验而比其他人要慢.团队管理的压力也使你感到焦虑。除了开销增加的弊端外,人工处理还带来了有意无意的主观偏见。为了确保申请处理的一致性,你对审批过程研发一套指导规则并对新员工进行培训,但这增加了开销并且可能无法消除这种偏见。采用商业规则想象一下,1000份贷款已超过偿还日期,70%按时偿还,如图1-3所示。现在你必须注意贷款申请和偿还之间的关系了。特别是,你经过人工调查得到一系列过滤规则,过滤出一批“优良”信贷可以按时偿还。通过对几百个贷款申请的人工分析,得到了判断借贷信誉好坏的丰富经验白,通过反思和回溯测
19、试还款状况你注意到信用背景调查数据的几个趋势:大多数的贷款超过7500美元信贷额度的借款人拖欠。大多数没有支票账户的借款人按时偿还贷款。现在你可以通过这两条规则设计一套过滤机制,削减人工处理的贷款申请的数量。你首先要过滤信用额度超过7500美元的借贷图1-3经过几个月运作,收到2.500份贷款申请求。通过分析历史数据,发现信用额度超过7500请批准了10份其中700份申请及时偿还,美元的86个信贷申请中有44个拖欠还款。与剩下300份贷款拖欠。这些初始数据对于构建贷款的28舟相比,大约5居的高额信贷申请拖欠。这评估体系是至关重要的看起来好像是排除高风险信贷的好方法,但你很快就会发现在信贷申请中
20、只有8.6%(1000你可以使用统计相关性确定哪些数据因素与贷款偿还结果相关。O在本例中.我们使用德国信贷数据集。你可在http:mngbz95r4下载该数据。个中有86个)的申请属于高额度贷款,这就意味着你还必须人工处理超过90%的贷款申请。你还需要更多的过滤规则使这个数字降到合理水平。你的第二个过滤规则是自动接受任何没有支票账户的申请人。这看起是相当不错的规贝山因为在394个货款申请中有348个(88%)按时偿还了货款。加上这第二条规则,可以使自动被接收或拒绝的申请达到了45%。因此,你只需要人工分析大约一半的申请。图1-4所示显示了这些过滤规则。图1-4使用两条商业规则可使你只需处理新增
21、申请的52%使用这两个规则,你可以把业务扩大到原来的两倍而不必雇佣其他人员,因为你只要处理新增申请的52%。另外,对于IoOO份已知结果的申请,你期望过滤规则错误拒绝率在4.2%左右(每1000份申请中错误拒绝42份),错误接收率在4.6%左右(每100O份申请中错误接收46份)。随着业务的增长,你希望系统能接收或拒绝越来越多的申请,从而免遭拖欠的损失。为了做到这一点,你必须增加新的商业规则,很快你就遇到了以下几个问题: 人工发现有效的过滤规则变得越来越困难,这不是不可能的,因为过滤系统的复杂性在增加。 商业规则变得如此复杂和不透明,测试它们,剔除老的不相关的规则变得几乎不可能。 你的规则构建
22、毫无统计学严谨性。你虽然非常确信更好的分析数据能得到更好的“规则”,但又不能肯定。 因为贷款偿还模式随着时间的变化而变化,或许随着申请人群的变化而变化,规则系统不能适应这种变化。为了适应这种变化,规则系统必须不断地调整。所有商业规则方法的缺陷可归结一个弱点:规则系统不能从数据中自动学习。数据驱动的系统,从简单的统计学模型到复杂的机器学习都可克服这些问题。1.2.2机器学习方法最终,你决定在微型信贷申请评估过程中采用全自动、数据驱动的决策方法。机器学习是一个不错的选择,因为它的处理过程是全自动的,可以适应不断增长的业务需要。另外,它不同于商业规则,机器学习直接从数据中学习最优的决策而不是任意的编
23、写好的决策规则。这种从基于规则到基于机器学习的决策过渡意味着你的决策更加精确,而且随着借贷的增多,精确性会得到提高。可以确信你的机器学习系统可用最少的处理换来优化的决策。在机器学习中,数据为获得关于手头问题的见解提供了基础。为了确定是否接收每个新的贷款申请,机器学习使用历史训练数据来预测应采取的最佳行动。为了启动机器学习用于贷款审批,你可以把已掌握的100O份借贷数据作为训练样本。训练样本由每个贷款的输入数据和是否及时偿还的结果组成。输入数据由一系列数值或分类指标组成,用于捕获每个申请中相关的方面,如申请人的信用指数、性别和职业等。图1-5示出了历史数据训练机器学习的模型。在收到新的借货申请时
24、,从申请数据中可立即预测出将来可能的偿还情况。图1-5基本机器学习的工作流程(以微型贷款为例)机器学习模型决定对于每个贷款申请如何用于最佳的贷款预测。通过查找并使用训练集中的模式,机器学习将产生一个模型(现在你可以认为这是一个黑盒),用于根据申请者的数据预测每个申请的结果。下一步是选择要使用的机器学习算法。机器学习的类型有很多,从简单的统计模型到更复杂的方法都有。在此我们比较两个例子:第一个是简单参数化模型,第二个是分类树的非参数集合。不要被这些术语所困扰,你很快就会发现,机器学习使用很多算法和方式对它们进行分类。几乎所有传统的统计商业模型都属于第一类。这些参数化模型使用简单固定的方程来表示输
25、入和结果的关系。数据用于学习这些方程中未知项的最佳的值。例如,线性回归、逻辑回归和自回归模型都属于这一类。回归模型将在第3章详细描述。在本例中,你可以使用逻辑回归来模拟贷款审核流程。在逻辑回归中,每一笔贷款的偿还概率的对数(对数概率)被建模为一个输入特征的线性函数。例如,如果一个新的申请包含3个相关特征申请人的信用额度、学历和年龄,那么逻辑回归试图用这个方程预测申请人将会拖欠的对数概率(我们称之为y):方程中每个系数(在本例中为6。、B、Bz和83)的最佳数值是从100O个训练样本中学习获得的。当你可以使用像这样的方程表示输入和输出之间的关系时,从输入(信用额度、学历和年龄)预测输入(y)是非
26、常简单的。你所要做的就是使用历史数据找出哪些B、62和S3的值得到的输出结果最佳。但当输入与输出间的关系比较复杂时,像逻辑回归这样的模型应用就会受到限制。例如,使用图1-6左侧图中的数据集,有两个特征输入,任务是把每个数据点分成两类。这两类由非线性曲线(决策边界,如图中的曲线所示)分离在独立的二维特征空间中。中间图所示是该数据集应用逻辑回归模型的结果。逻辑回归基于一条直线分成两个区域,从而导致许多分类错误(许多点划分在错误的区域内)。机器学习模型特征I图1-6在两类分类中,单个数据点要么属于圆形类要么属于方形类。这些分布在二维特征空间中的数据由非线性决策边界进行划分,如图中曲线所示。然而,简单
27、统计模型数据分类精确性比较低(中图),机器学习模型(右图)以少许代价即可发现正确的分类边界中间图所示的模型问题在于企图以简单的参数化模型解释复杂的非线性的现象。参数化和非参数化模型的形式化定义很复杂,而且对于本书而言太过数学化。但最根本的是,参数化模型在你提前理解输入和需要的输出之间的关系时能工作得很好。如果对非线性关系有充分的了解,则可以对输入或输出变量进行转换,以便于参数化模型仍能继续工作。例如,如果某些疾病在老年群体中发病率较高,你可能发现发病率和研究主体年龄的平方存在线性关系。但问题在实际应用中,并不容易找到这种转换关系。你需要更灵活的模型,它可以自动发现复杂的趋势和数据结构,而不必事
28、先知道关系模式的样子。这正是非参数化机器学习算法的用武之地。在图1-6的右侧图中,你看到了对这个问题应用非参数化学习算法(在本例中是随机森林分类器算法)的结果。很显然,预测的决策边界与真实边界非常接近,所以分类精确性比参数化模型要高。对于复杂的高维度的数据集,非参数化的机器学习模型可获得很高的精确度,因此成为许多数据驱动问题的首选。非参数化方法的实例包括许多应用广泛的机器学习方法,如k-近邻算法(k-nearestneighbors)%核函数平滑(KernelSmoothing)x支持向量机(supportvectormachines)%决策树(decisiontrees)和组合方法(ense
29、mblemethods)。在本书中我们将讲述所有这些方法,并且在附录中给出了重点算法的简单描述。线性算法有一些特性,使得它们在某些场合很有吸引力。它们很容易解释和推理,计算速度快且非常适合于大数据处理。回到微型借贷问题,扩大商业规模的最好选择是采用一个非参数化的机器学习模型。这个模型能够发现和手工处理一样的规则,但很有可能有一些不同,因为需要优化统计结果。更有可能的是,机器学习模型将自动发现你没有发现的输入变量和期望结果之间的其他更深层次的关系。除了能够提供自动化的工作流程之外,你还能获得更高的精确度,这意味着更大的商业价值。试想一下如果机器学习模型的精确度比逻辑回归模型的精确度高25%,在这
30、种情况下,机器学习模型对新的贷款申请将有更低的错判率:对于不能偿还贷款的申请接收率和对于能够偿还贷款的拒绝率都会降低。总而言之,这意味着贷款的回报更高,能够使你增加贷款数量,从而创造更多的商业价值。我们希望你已经尝到了机器学习带来的甜头。在进一步讨论机器学习的工作流程之前,我们将列出机器学习的一些优势和面临的挑战。1. 2.3机器学习的五大优势作为微型信贷实例的总结,我们列出了使用机器学习系统相对于传统替代方案,如人工分析、商业规则和简单统计模型的突出优势。机器学习的五大优势如下: 精确机器学习使用数据发现解决问题的优化的决策引擎C随着数据的增多,精确性也随之提高。 自动化由于结果只能是有效的
31、和抛弃的,机器学习可自动学习新的模式。这意味着用户可以把机器学习直接嵌入到自动工作流中。 迅速一机器学习可以在新数据进入的几毫秒内产生结果,允许系统做出实时反应。 可自定义许多数据驱动的问题可用机器学习解决。机器学习模型通过自己的数据构建,并可用任何评价标准进行优化。 规模化一随着业务的不断发展,机器学习可以很容易地处理数据的增长问题。有些机器学习算法可以使用云计算处理大规模数据。1.2.4面临的挑战要获得这些优势必定面临一些挑战。根据商业问题的大小和形状,其难度大小也不同,小到如儿童剧一样简单,大到如汉尼拔翻越阿尔卑斯山一样困难。最突出的困难是获取可用形式的数据。据估计,数据科学家80$的时
32、间花费在数据准备上。你一定听说过当前商业捕骁的数据比以往任何时候都要多得多其实数据科学家也是。你可能还听说过这些数据指的是业务处理的“废弃物”。换句话说我们新的数据宝库不是用来设计满足机器学习系统的输入需求;从这些废料中提取有用数据是一件非常烦琐和杂乱的工作。相关联的挑战是对问题进行公式化表示,以便于应用机器学习并产生可操作和度量的结果。在我们例子中目标很明确:预测谁可以偿还贷款,谁会拖欠。分类很容易实现,结果也很容易度量。很幸运.某些实际问题是这样简单的。例如,给定我们知道的潜在客户的信息史蒂夫洛尔.“对于大数据研究者而言,数据清理工作是获得深层理解的障碍”N.纽约时报,2014-8-17.
33、http:/mng.bz7W8n.(这个我们有丰富的数据),预测他们是否会购买我们的产品,这是很容易实现的。一个更有难度的例子是这样的:寻找最佳媒体和广告单位组合,为新产品提高品牌知名度。简单地定制问题,需要构建一种测量品牌知名度的方法,对正在考虑的替代媒体的理解,以及反映替代品和相关结果的经验数据。当预测结果相当复杂时,选择算法以及如何应用是非常费力的。心脏病研究人员要预测术后并发症,需要的病人数据量大得惊人,但机器学习算法自然不需要心电图数据和DNA序列O特征工程(featureengineering)就是把诸如此类的输入转换成可预测的特征的过程。如果不提到危害预测模型的问题,那就是我们的
34、失职:如果一个模型非常适合训练数据.但要对非训练集的真实数据进行预测就不能使人满意,这就是过度拟合问题(Overfitting)o你将看到机器学习可解决各种各样的问题,有些比其他办法更容易。你可能还会注意到解决方案的价值与花费的精力并不成正比。事实上,机器学习并不是万能的金钥匙。在本书中,你将看到机器学习对于解决许多现实的数据驱动的问题是不错的选择。1.3跟踪机器学习流程:从数据到部署本节我们将介绍把机器学习模型集成到个人的应用或数据处理中的主要流程。机器学习流程(MLWorkfI。W)有5个主要组成部分:数据准备、模型构建、模型评估、模型优化和新数据预测。这些步骤有内在的顺序,但许多实际机器
35、学习的应用是一个迭代过程,每个步骤都要重复好几遍。这5个部分在第24章将详细讨论,但我们在此做简要介绍以激发读者学习的欲望。图1-7示出了这个工作流程,后面的部分对这些概念做了全面说明。这个图将贯穿本书,因为我们要介绍机器学习流程的各个组成部分。图1-7机器学习系统工作流程。从历史数据使用机器学习算法构建模型,然后需要对模型的性能、精确性和是否适应需求规模进行优化。通过最后的模型可以进行新数据预测1.3.1数据集合和预处理机器学习系统的数据收集和预处理通常涉及数据表格化(如果数据不是表格数据)。数据表格化可认为是一个电子表格,数据以行和列的形式存储,每一行对应一个实例(instance)或样本
36、(example),每一列表示该实例的一个度量。当然,可能有一些特殊和变化,但可以说大多数机器学习算法需要这种格式的数据。别担心,当遇到这种特殊情况时可以进行处理C图1-8示出了这种格式的简单数据。图1-8在表格数据集中,行称为样本.列表示特征表格数据首先要注意的是每一列包含相同类型的数据,而行数据典型地可包含各种类型的数据。在图1-8中,有4种类型的数据:姓名是字符串变量,年龄是整型变量.收入是单浮点型变量,婚姻状况为分类变量(包含离散的分类值)。像这样的数据集称为异构数据集(相对于同构数据集),在第2章我们将解释为什么以及如何将这种类型的数据转换成其他类型,这与使用的机器学习算法有关。实际
37、数据在有些方面是比较“混乱”的。假定在数据采集阶段,对于某个样本的特定度量不可获得,也没有办法找到相应的缺失信息。在这种情况下,表格中将包含一个或多个缺失值(missingvalue),这将给后面的建模和预测带来麻烦。在某些情况下,从事数据采集的人对于数据记录这样重复的工作很容易犯错误。这将导致某些错误数据,你必须能够处理这种情况,或者至少知道特定的算法在误导性数据存在的情况下表现怎样。在第2章你将进一步学习如何处理缺失和误导性数据。1.3.2数据构建模型成功构建机器学习系统的第一步是提出一个可由数据回答的问题。使用这个简单的申请人表格,你可以构建一个预测申请人是否单身的机器学习模型。例如,这
38、个信息对于显示相关广告的时候很有用。这种情况下,你使用婚姻状况作为目标(target)或标记(IabeI),剩下的变量作为特征(features)o机器学习算法的任务就是如何从一系列输入特征中成功预测目标。那么对于婚姻状况不明的人,你可以基于输入的特征使用模型预测其婚姻状况。图1-9显示了在试验数据上的这一过程。图1-9机器学习建模过程现在可以把机器学习算法看作实现从特征到输出数据的映射的黑盒。为了构建一个有用的模型,你需要的数据比两行多得多。与其他常用的方法相比,机器学习算法的一个优点是可以处理许多特征。图1-9只显示了4个特征,其中个人编号和姓名在预测婚姻状况时可能是无用的。有些算法对于不
39、能提供信息的特征是相对免疫的,然而如果把这些特征省略则可产生更高的精度。第3章将详细介绍算法类型和它们在各种问题和数据集上的表现。值得注意的是,有时也可以从这些貌似无用的特征中提取到有价值的信息。位置特征本身可能没什么作用,但可导出诸如人口密度这样的有用特征。这种类型的数据增强称作特征提取(featureextraction),在实际机器学习项目中是非常重要的,这也是第57章的主题。有了机器学习模型,就可以对新数据三标变量未知的数据进行预测了。图1-10显示了使用图1-9构建的模型进行预测的过程。图1-10用模型对新数据进行预测返回的预测目标格式与进行模型学习的源数据格式相同。使用模型进行预测
40、可看作新数据填补空白目标的过程。有些机器学习算法可以输出每个分类的可能性(概率)。在我们的已婚/单身的例子中,概率性(probabilistic)机器学习模型对于每个新人会输出两个值:这个人已婚的概率和单身的概率。到此为止,我们忽略了一些细节,但原则上已经构建了第一个机器学习系统。每个机器学习系统就是构建模型并利用模型进行预测。让我们以伪代码的方式描述一下机器学习的工作流程,它看起来如此简单,见清单17。清单机器学习程序的初始结构data=load_dat.aCdata45eople.csv)model=buiId_modeICdat.a,target.=Marit.alSatatUS)new
41、_data=load_data(data/hew_peopIe-csv)predictions=modeI-predictCnew_data)虽然我们对于这些函数还没有编程实现,但其基本结构就是这样的了。通过第3章的学习,你将理解这些步骤;余下的章节中(第410章)保证你对于要解决的问题可构建出最好的模型。1.3.3模型性能评估模型的性能不经验证很少在机器学习系统中使用。虽然本章忽略了太多细节,让我们假定你已经知道如何构建模型和进行预测。在应用模型对新数据进行预测之前,你可以通过某些聪明的手段对模型的工作情况有所了解。对于某些数据,人为剔除目标变量,作为测试数据。然后从剩下的数据中构建模型,并
42、对测试数据进行预测。图1-11显示了模型测试过程。图171当使用测试数据评价模型性能时.假装目标变量未知并将预测结果与真实结果进行比较让我们也来看看这个流程的伪代码,见清单1-2o清单2模型评价的机器学习流程data=load_data)training_dat,a.testing_data=split_datadatamodel=buiId_modeICtraining_data,target=MaritaIstatus)true_values=testing_data.extract-columnMaritalstatus)predictions=modeI.predict(testing
43、_data)accuracy=compare_predictionspredictions/true-VaIues)你现在可以将预测结果与已知的“真实”值进行比较以判断模型的精确性。在伪代码中,这个功能隐藏在compare_predictions函数中,第4章的绝大部分内容将详细讨论这个函数对于各种机器学习问题是什么样的。1. 3.4模型性能优化机器学习的最后一个问题也在第4章中进行讨论:如何利用模型评估的结果对模型进行改进。改进模型的精确度有以下3种方式: 调整模型参数一机器学习算法是由特定于底层算法的参数进行配置的,这些参数的优化与数据的类型和结构有关。每个参数的值,或它们的任意组合都会影
44、响模型的性能。我们介绍各种发现和选择最佳参数值的方法,并说明这些方法对于要解决问题的数据集,确定最佳算法时是如何使用的。 特征子集的选择一许多机器学习问题包含大量的特征,并且这些特征的噪声有时使得算法很难发现数据的真实信息,即使这些特征本身是非常有用的。对于许多机器学习问题,数据量大是一件好事,但有时也会起反作用。因为事先不可能知道噪声何时会影响模型的性能,所以在确定大多数通用且精确模型的特征时,一定要谨慎从事。 数据预处理一如果在网上搜索,你会发现许多可快速用于各种机器学习的数据集C但实际上数据集不会这么单纯,必须进行清洗和处理,这个过程被广泛称为数据改写(datamunging)或数据打磨
45、(datawrangling)。数据集中可能包含同物异名,缺失的或不正确的值,这些都会损害模型的性能。这听起来像是边缘情况,但你会吃惊地发现:即使在复杂的数据驱动的组织中,这种情况也经常发生。有了这些机器学习的必要基础,在详细学习本节讨论的主要内容之前,将简要介绍机器学习中更高级的特性。1.4提高模型性能的高级技巧前面的部分介绍了实际机器学习项目必需的几个步骤,现在来了解一下进一步提升模型性能的其他技巧。根据问题和数据的不同,有些技巧可显著提高精确度,但有时对训练和预测速度有一定影响。这些技巧将在第510章详细讨论,本节先列出其主要思想。1. 4.1数据预处理和特征工程在第2章你将看到各种类型
46、的数据和常见数据混乱的处理。除这些必要的数据清洗之外,你还可以再进一步地从数据中提取附加数据,用于提升模型的性能。对于任何问题域,领域知识决定收集的数据。这珍贵的领域知识还可以从收集的数据中提取有价值的值,在模型构建之前添加到模型的特征集中。我们把这个过程称作特征工程(featureengineering),当掌握了前面介绍的机器学习必备的基础知识后,你会发现大部时间都在进行优化。这也是机器学习最具创造性的部分,你可以使用知识和想象力找到提升模型的方法,并对数据进行挖掘以提取潜在的价值。你将广泛使用我们的统计验证模型的评估和优化步骤,来区分什么是好的想法,以及哪些是实用的。这里是一些重要的特征工程的例子:日期和时间在许多数据集中有日期和时间变量,但它们本身对机器学习算法没什么用处,机器学习算法倾向于用原始数字或类别表示它们。但这种信息可能是很有价值的,如果你要预测广告何时播出,则在一年的什么时间、一周的什么时间以及一天的什么时间播出广告是非常重要的。使用特征工程,这些信息可从日期和时间中提取,并用于数据模型。还有.当观察重复活动的日期和时间时,如用户在一年