《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程

1.5 构建预测模型的流程

使用机器学习需要几项不同的技能。一项就是编程技能,本书不会把重点放在这。其他的技能用于获得合适的模型进行训练和部署。这些其他技能将是本书重点关注的。那么这些其他技能包括哪些内容?

最初,问题是用多少有些模糊的日常语言来描述的,如“给网站访问者展示他们很可能点击的链接”。将其转换为一个实用的系统需要用具体的数学语言对问题进行重述,找到预测所需的数据集,然后训练预测模型,预测网站访问者对出现的链接点击的可能性。对问题用数学语言进行重叙,其中就包含了对可获得的数据资源中抽取何种特征以及对这些特征如何构建的假设。

当遇到一个新问题时,应该如何着手?首先,需要浏览可获得的数据,确定哪类数据可能用于预测。“浏览”的意思是对数据进行各种统计意义上的检测分析,以获得直观感受这些数据透露了什么信息,这些信息又与要预测的有怎样的关系。在某种程度上,直觉可以指导你做些工作,也可以量化结果,测试潜在的这些预测特征与结果的相关性。第2章将详细介绍对数据集测试分析的过程,本书余下部分所述的算法及其比较会用到这些数据集。

假设通过某种方法,选择了一组特征,开始训练机器学习算法。这将产生一个训练好的模型,然后是估计它的性能。下一步,可能会考虑对特征集进行调整,包括增加新的特征,删除已证明没什么帮助的特征,或者选择另外一种类型的训练目标(也叫作目标函数),通过上述调整看看能否提高性能。可以反复调整设计决策来提高性能。可能会把导致性能比较差的数据单独提出来,然后尝试是否可以从中发现背后的规律。这可以导致添加新的特征到预测模型中,也可以把数据集分成不同的部分分别考虑,分别建立不同的预测模型。

本书的目的是让你熟悉上述处理过程,以后遇到新问题就可以独立完成上述步骤。当重述问题、提取特征、训练算法、评估算法时,需要熟悉不同算法所要求的输入数据结构。此过程通常包括如下步骤。

(1)提取或组合预测所需的特征。

(2)设定训练目标。

(3)训练模型。

(4)评估模型在测试数据上的性能表现。

注意

在完成第一遍过程后,可以通过选择不同的特征集、不同的目标等手段来提高预测的性能。
机器学习要求不仅仅是熟悉一些工具包。它是开发一个可以实际部署的模型的全部过程,包括对机器学习算法的理解和实际的操作。本书的目标就是在这方面提供帮助。本书假设读者具有大学本科的基础数学知识、理解基本的概率和统计知识,但是本书不预设读者具有机器学习的背景知识。同时本书倾向于给读者直接提供针对广泛问题具有最佳性能的算法,而不需要通览所有机器学习相关的算法或方法。有相当数量的算法很有趣,但是因为各种原因并没有获得广泛使用。例如,这些算法可能扩展性不好,不能对内部的运行机理提供直观的解释,或者很难使用,等等。例如,众所周知随机森林算法(本书将会介绍)在在线机器学习算法竞争中遥遥领先。通常有非常切实的原因导致某些算法被经常使用,本书的目标就是在你通读完本书后对这方面具有充分了解。

1.5.1 构造一个机器学习问题

参加机器学习算法竞赛可以看作是解决真实机器学习问题的一个仿真。首先机器学习算法竞赛会提供一个简短的描述(例如,宣称一个保险公司想基于现有机动车保险政策更好地预测保费损失率)。作为参赛选手,你要做的第一步就是仔细审视数据集中的数据,确定需要做哪种形式的预测。通过对数据的审视,可以获得直观的感受:这些数据代表什么,它们是如何与预测任务关联起来的。数据通常可以揭示可行的方法。图1-5描述了从通用语言对预测目标的描述,到对数据的整理准备,以作为机器学习算法输入的基本步骤。

首先,通俗的说法“获得更好的结果”需要先转换成可测量可优化的具体目标。作为网站的拥有者,更好的结果可以是提高点击率或更高的销售额(或更高的利润)。下一步就是收集数据,只要其有助于预测:特定用户有多大可能性会点击各种不同类型的链接,或购买在线提供的各种商品。将这些数据表示为特征的矩阵,如图1-5所示。以网站为例,这些特征可能包括:网站访问者之前浏览的其他网页、访问者之前购买的商品。除了用于预测的这些特征,针对此类问题的机器学习算法还需要已知正确的答案用于训练。在图1-5中表示为“目标”。本书涵盖的算法通过用户过去的行为来发现用户的购买模式,当然算法不是单纯地记忆用户过去的行为,毕竟一个用户不可能重复购买他昨天刚刚购买的商品。第3章将详细讨论无记忆行为的预测模型的训练过程。

通常构造一个机器学习问题可以采用不同的方法。这就导致了问题的构造、模型的选择、模型的训练、模型性能评估这一过程会发生多次迭代,如图1-6所示。

与问题随之而来的是定量的训练目标,或者部分任务是数据提取(这些数据叫作目标或标签)。例如,考虑建立一个自动化预测证劵交易的系统。为了实现交易的自动化,第一步可能是预测证劵的价格变化。这些价格是很容易获得的,因此利用历史数据构建一个训练模型来预测未来价格的变化应该是容易的。但是即使这一过程包含了多种算法的选择和实验,未来价格的变化仍然可以用多种方法来计算。这种价格的变化可以是当前价格与10分钟之后的价格的差异、当前价格与10天之后的价格差异,也可以是当前价格与接下来的10分钟内价格的最高值、最低值之间的差异。价格的变化可以用一个2值的变量来表示:“高”或“低”,这依赖于10分钟之后价格是升高还是降低。所有这些选择将会导致不同的预测模型,这个预测模型将用于决定是买入还是卖出证劵,需要实验来确定最佳的选择。

1.5.2 特征提取和特征工程

确定哪些特征可用于预测也需要实验尝试。这个过程就是特征提取和特征工程。特征提取就是一个把自由形式的各种数据(如一个文档中的字词、一个网页中的字词)转换成行、列形式的数字的过程。例如,垃圾邮件过滤的问题,输入就是邮件的文本,需要提取的东西包括:文本中大写字母的数量、所有大写的词的数量、在文档中出现词“买”的次数,等等,诸如此类的数值型特征。然后基于这些特征把垃圾邮件从非垃圾邮件中区分出来。

特征工程就是对特征进行整理组合,以达到更富有信息量的过程。建立一个证劵交易系统包括特征提取和特征工程。特征提取将决定哪些特征可以用来预测价格。过往的价格、相关证劵的价格、利率、从最近发布的新闻提取的特征都是现有公开讨论的各种交易系统的输入数据。而且证劵的价格还有一系列的工程化特征,包括:指数平滑异同移动平均线(moving average convergence and divergence,MACD)、相对强弱指数(relative strength index,RSI)等。这些特征都是过往价格的函数,它们的发明者都认为这些特征对于证劵交易是非常有用的。

选好一系列合理的特征后,就像本书描述的那样,需要训练一个预测模型,评价它的性能,然后决定是否部署此模型。为了确保模型的性能足够满足要求,通常需要调整采用的特征。一个确定使用哪些特征的方法就是尝试所有的组合,但是这样时间代价太大。不可避免地,你面临着提高性能的压力,但是又需要迅速获得一个训练好的模型投入使用。本书讨论的算法有一个很好的特征,它们提供对每个特征对最终预测结果的贡献的度量。经过一轮训练,将会对特征打分以标识其重要性。这些信息可以帮助加速特征工程的过程。

注意

数据准备和特征工程估计会占开发一个机器学习模型80%~90%的时间。
模型的训练也是一个过程,每次开始都是先选择作为基线的特征集合。作为一个现代机器学习算法(如本书描述的算法),通常训练100~5000个不同的模型,然后从中精选出一个模型进行部署。产生如此之多的模型的原因是提供不同复杂度的模型,这样可以挑选出一个与问题、数据集最匹配的模型。如果不想模型太简单又不想放弃性能,不想模型太复杂又不想出现过拟合问题,那么需要从不同复杂度的模型中选择一个最合适的。

1.5.3 确定训练后模型的性能

一个模型合适与否是由此模型在测试数据集上的表现来决定的。这个虽然概念上很简单,却是非常重要的一步。需要留出一部分数据,不用于训练,用于模型的测试。在训练完成之后,用这部分数据集测试算法的性能。本书讨论了留出这部分测试数据的方法。不同的方法各有其优势,主要依赖于训练数据的规模。就像字面上理解那么简单,人们持续地提出各种复杂的方法让测试数据“渗入”训练过程。在处理过程的最后阶段,你将获得一个算法,此算法读取数据,产生准确的预测。在这个过程中,你可能需要检测环境条件的变化,这种变化往往会导致潜在的一些统计特性的变化。

时间: 2024-09-07 10:50:27

《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程的相关文章

《Python机器学习——预测分析核心算法》——导读

前言 Python机器学习--预测分析核心算法 从数据中提取有助于决策的信息正在改变着现代商业的组织,同时也对软件开发人员产生了直接的影响.一方面是对新的软件开发技能的需求,市场分析师预计到2018年对具有高级统计和机器学习技术的人才需求缺口将达140000-190000人.这对具有上述技能的人员来说意味着丰厚的薪水和可供选择的多种有趣的项目.另一方面对开发人员的影响就是逐步出现了统计和机器学习相关的核心工具,这减轻了开发人员的负担.当他们尝试新的算法时,不需要重复发明"轮子".在所有

《Python机器学习——预测分析核心算法》——第1章 关于预测的两类核心算法

第1章 关于预测的两类核心算法 Python机器学习--预测分析核心算法 本书集中于机器学习领域,只关注那些最有效和获得广泛使用的算法.不会提供关于机器学习技术领域的全面综述.这种全面性的综述往往会提供太多的算法,但是这些算法并没有在从业者中获得积极的应用. 本书涉及的机器学习问题通常是指"函数逼近(function approximation)"问题.函数逼近问题是有监督学习(supervised learning)问题的一个子集.线性回归和逻辑回归是解决此类函数逼近问题最常见的算法

《Python机器学习——预测分析核心算法》——第2章 通过理解数据来了解问题

第2章 通过理解数据来了解问题 Python机器学习--预测分析核心算法新数据集(问题)就像一个包装好的礼物,它充满了承诺和希望.一旦你能解决它,你就收获了喜悦.但是直到你打开它,它都一直保持着神秘.本章就是告诉你怎么"打开"新的数据集,看清楚里面都有什么,知道如何处置这些数据,并且开始思考如何利用这些数据构建相应的模型. 本章有两个目的:一是熟悉这些数据集,这些数据集被用来作为解决各种类型问题的例子,主要是利用第4章和第6章介绍的算法:另一个目的就是展示Python中分析数据的工具包

《Python机器学习——预测分析核心算法》——1.6 各章内容及其依赖关系

1.6 各章内容及其依赖关系 依赖于读者的背景和是否有时间来了解基本原理,读者可以采用不同的方式来阅读本书.图1-7为本书各章之间的依赖关系. 第2章仔细审视各种数据集.这些数据集用于本书中的问题实例,用以说明算法的使用,以及各种算法之间基于性能和其他特征的比较.面对一个新的机器学习问题的起点就是深入专研数据集,深入理解数据集,了解它们的问题和特质.第2章的部分内容就是展示Python中可以用于数据集探索的一些工具集.可以浏览第2章中的部分例子,不需要阅读全部例子就可以了解整个流程,当在后续章节

《Python机器学习——预测分析核心算法》——1.1 为什么这两类算法如此有用

1.1 为什么这两类算法如此有用 有几个因素造就了惩罚线性回归和集成方法成为有用的算法集.简单地说,面对实践中遇到的绝大多数预测分析(函数逼近)问题,这两类算法都具有最优或接近最优的性能.这些问题包含:大数据集.小数据集.宽数据集(wide data sets)[1].高瘦数据集(tall skinny data sets)[2].复杂问题.简单问题,等等.Rich Caruana及其同事的两篇论文为上述论断提供了证据. 1."An Empirical Comparison of Supervi

《Python机器学习——预测分析核心算法》——2.4 基于因素变量的实数值预测:鲍鱼的年龄

2.4 基于因素变量的实数值预测:鲍鱼的年龄 探测未爆炸的水雷数据集的工具同样可以用于回归问题.在给定物理测量值的情况下,预测鲍鱼的年龄就是此类问题的一个实例.鲍鱼的属性中包括因素属性,下面将说明属性中含有因素属性后与上例有什么不同. 鲍鱼数据集的问题是根据某些测量值预测鲍鱼年龄.当然可以对鲍鱼进行切片,然后数年轮获得鲍鱼年龄的精确值,就像通过数树的年轮得到树的年龄一样.但是问题是这种方法代价比较大,耗时(需要在显微镜下数年轮).因此更方便经济的方法是做些简单的测量,如鲍鱼的长度.宽度.重量等指

《Python机器学习——预测分析核心算法》——1.4 算法的选择

1.4 算法的选择 这2类算法的概要比较如表1-4所示.惩罚线性回归的优势在于训练速度非常快.大规模数据集的训练时间可以是小时.天,甚至是几周.要获得一个可以部署的解决方案往往需要进行多次训练.过长的训练时间会影响大数据问题的解决进度及其部署.训练所需时间当然越短越好,因此惩罚线性回归因其训练所需时间短而获得广泛使用就是显而易见的了.依赖于问题,此类算法相比集成方法可能会有一些性能上的劣势.第3章将更深入地分析哪类问题适用于惩罚回归,哪类问题适用于集成方法.即使在某些情况下,惩罚线性回归的性能不

《Python机器学习——预测分析核心算法》——2.1 “解剖”一个新问题

2.1 "解剖"一个新问题 本书介绍的算法通常是从一个充满了数字,可能是特征(变量)的矩阵(或表格)开始的.表2-1展示了一些术语,代表了一个小规模的二维机器学习数据集.此表提供了一个数据集的基本印象,这样对"列代表属性特征,行代表实例"等约定就比较熟悉.这个例子中的问题是预测下一年在线购买书籍所需花费的金额. 数据是按照行和列组织的.每行代表一个实例(或者叫一个例子.观察).在表2-1中每列指定相应的列名,用来指明在一个机器学习问题中所起的作用.标明为"

《Python机器学习——预测分析核心算法》——小结

小结 本章介绍了本书要解决的问题以及构建预测模型的处理流程.本书关注两类算法族.限定介绍的算法的数量,可以让我们更透彻地解释这些算法的背景知识以及这些算法的运行机理.本章通过性能对比说明了为什么选择这两类算法.讨论了这两类算法族的特性和各自的优势,并且详细描述了各自适合解决的问题. 本章还介绍了构建一个预测模型的步骤,每个步骤的各种选择的权衡,对输出结果的考虑.非模型训练时使用的数据可以用来评估预测模型. 本书的目的是使机器学习知之甚少的程序员通过本书的学习,能够胜任将机器学习技术引入项目的工作