Python机器学习:预测分析核心算法
上QQ阅读APP看书,第一时间看更新

前言

从数据中提取有助于决策的信息正在改变着现代商业的组织,同时也对软件开发人员产生了直接的影响。一方面是对新的软件开发技能的需求,市场分析师预计到2018年对具有高级统计和机器学习技术的人才需求缺口将达140000~190000人。这对具有上述技能的人员来说意味着丰厚的薪水和可供选择的多种有趣的项目。另一方面对开发人员的影响就是逐步出现了统计和机器学习相关的核心工具,这减轻了开发人员的负担。当他们尝试新的算法时,不需要重复发明“轮子”。在所有通用计算机语言中,Python的开发人员已经站在了最前沿,他们已开发了当前最先进的机器学习工具包,但从拥有这些工具包到如何有效地使用它们仍然存在一定的距离。

开发人员可以通过在线课程、阅读质量上乘的书籍等方式来获得机器学习的相关知识。它们通常都对机器学习的算法、应用实例给出了精彩的阐述,但是因为当前算法如此之多,以至于很难在一门课程或一本书中覆盖全部算法的相关细节。

这给实践者带来了困难。当面临众多算法时,机器学习新手可能需要多次尝试才能做出决定,这往往需要开发人员来填补从问题提炼到最终问题解决之间的所有算法使用方便的细节。

本书尝试填补这一鸿沟,所采用的方法就是只集中于两类核心的“算法族”,这两类算法族已在广泛的应用领域中证明了其最佳的性能。此论断的证据如下:这两类算法在众多机器学习算法竞争者中已获得支配性地位,新开发的机器学习工具包都会率先支持此两类算法,以及研究工作给出的性能对比结论(见第1章)。重点关注这两类算法使我们可以更详细地介绍算法的使用原则,并通过一系列的示例细节来展示针对不同问题如何使用这些算法。

本书主要通过代码实例来展示所讨论的算法的使用原则。以我在加州山景城的黑客道场(Hacker Dojo)授课的经验来看,我发现开发人员更愿意通过直接看代码示例来了解算法原理,而不是通过数学公式推导。

本书使用Python语言,因为它能提供将功能和专业性良好结合的机器学习算法包。Python是一种经常使用的计算机语言,以产生精炼、可读性代码而著称。这导致目前已有相当数量的业界旗舰公司采用Python语言进行原型系统开发和部署。Python语言开发人员获得了广泛的支持,包括大量的同业开发人员组成的社区、各种开发工具、扩展库等等。Python广泛应用于企业级应用和科学研究领域。它有相当数量的工具包支持计算密集型应用,如机器学习。它也收集了当前机器学习领域的代表性算法(这样就可以省去重复性劳动)。Python相比专门的统计语言如R或SAS(Statistical Analysis System)是一门更通用的语言,它的机器学习算法包吸收了当前一流的算法,并且在一直扩充。