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

简介:

本节书摘来异步社区《Python机器学习——预测分析核心算法》一书中的第1章,第1.5节,作者:【美】Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 构建预测模型的流程

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

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

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

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

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

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

(2)设定训练目标。

(3)训练模型。

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

注意

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

1.5.1 构造一个机器学习问题

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

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

538d09a762a08c2d68c2cd672fd5b811a51129fe

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

1e16a33fca0071ce4986f62bdca0dd29b3ab22e1

与问题随之而来的是定量的训练目标,或者部分任务是数据提取(这些数据叫作目标或标签)。例如,考虑建立一个自动化预测证劵交易的系统。为了实现交易的自动化,第一步可能是预测证劵的价格变化。这些价格是很容易获得的,因此利用历史数据构建一个训练模型来预测未来价格的变化应该是容易的。但是即使这一过程包含了多种算法的选择和实验,未来价格的变化仍然可以用多种方法来计算。这种价格的变化可以是当前价格与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 确定训练后模型的性能

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

相关文章
|
11天前
|
机器学习/深度学习 数据采集 人工智能
构建高效机器学习模型的五大技巧
【4月更文挑战第7天】 在数据科学迅猛发展的今天,机器学习已成为解决复杂问题的重要工具。然而,构建一个既精确又高效的机器学习模型并非易事。本文将分享五种提升机器学习模型性能的有效技巧,包括数据预处理、特征工程、模型选择、超参数调优以及交叉验证。这些方法不仅能帮助初学者快速提高模型准确度,也为经验丰富的数据科学家提供了进一步提升模型性能的思路。
|
14天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
15天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型的最佳实践
【4月更文挑战第3天】在数据驱动的时代,构建高效的机器学习模型已成为解决复杂问题的关键。本文将探讨一系列实用的技术策略,旨在提高模型的性能和泛化能力。我们将从数据预处理、特征工程、模型选择、超参数调优到集成学习等方面进行详细讨论,并通过实例分析展示如何在实践中应用这些策略。
15 1
|
2天前
|
数据采集 NoSQL 搜索推荐
五一假期畅游指南:Python技术构建的热门景点分析系统解读
五一假期畅游指南:Python技术构建的热门景点分析系统解读
|
2天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从特征工程到模型调优
【4月更文挑战第16天】 在数据驱动的时代,机器学习已成为解决复杂问题的关键工具。本文旨在分享一套实用的技术流程,帮助读者构建高效的机器学习模型。我们将重点讨论特征工程的重要性、选择合适算法的策略,以及通过交叉验证和网格搜索进行模型调优的方法。文章的目标是为初学者提供一个清晰的指南,同时为有经验的实践者提供一些高级技巧。
|
3天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
7天前
|
JavaScript 搜索推荐 前端开发
音乐发现平台:借助Python和Vue构建个性化音乐推荐系统
【4月更文挑战第11天】本文介绍了如何使用Python和Vue.js构建个性化音乐推荐系统。首先确保安装Python、Node.js、数据库系统和Git。后端可选择Flask或Django搭建RESTful API,处理歌曲数据。前端利用Vue.js创建用户界面,结合Vue CLI、Vuex和Vue Router实现功能丰富的SPA。通过Vuex管理状态,Axios与后端通信。这种前后端分离的架构利于协作和系统扩展,助力打造定制化音乐体验。
|
7天前
|
机器学习/深度学习 人工智能 算法
|
9天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。
|
10天前
|
机器学习/深度学习 数据可视化 算法
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】
【python】Python大豆特征数据分析 [机器学习版一](代码+论文)【独一无二】