前 言Machine Learning Algorithms本书是对机器学习领域的介绍。机器学习不仅对于IT专业人员和分析师,而且对于所有希望利用预测分析、分类、聚类和自然语言处理等技术的科研人员和工程师,都变得越来越重要。当然,本书不可能覆盖所有细节内容,而是只对有些主题进行了简单的描述,给用户更多机会在关注基本概念的基础上通过参考文献深入研究感兴趣的内容。对于本书中可能出现的任何不准确的表达或错误深表歉意,同时感谢所有Packt编辑为本书所付出的辛勤劳动。谨以此书献给我的父母,在他们的信任和鼓励下,我才得以对这个非凡的主题一直保持着巨大的热情。
本书涵盖的内容第1章 对机器学习领域进行简单的介绍,解释了生成智能应用的重要方法的相关基本概念。
第2章 解释了关于最常见的机器学习问题的数学概念,包括可学习性的概念和信息论的一些内容。
第3章 介绍了数据集预处理、如何选择信息量最大的特征以及进行降维的重要技术。
第4章 描述了连续型变量的线性模型,重点介绍了线性回归算法,介绍了Ridge、Lasso和ElasticNet优化以及其他高级技术。
第5章 介绍了线性分类的概念,重点介绍了逻辑回归和随机梯度下降算法,以及几个重要的评估指标。
第6章 解释了贝叶斯概率理论,并描述了朴素贝叶斯分类器的结构。
第7章 引入了支持向量机算法,着重介绍了线性和非线性分类问题。
第8章 解释了层次决策过程的概念,并描述了决策树分类、Bootstrap和袋装树以及投票分类器的概念。
第9章 介绍了聚类的概念,描述了k均值算法和确定聚类最佳数量的多种方法,还介绍了DBSCAN和谱聚类等其他聚类算法。
第10章 继续第9章聚类的内容,介绍了凝聚聚类。
第11章 解释了推荐系统中最常用的算法:基于内容和基于用户的策略、协同过滤和交替最小二乘法。
第12章 解释了词袋的概念,并介绍了有效处理自然语言数据集所需的最重要技术。
第13章 介绍了主题建模的概念,并描述了最重要的算法,如潜在语义分析和潜在狄利克雷分配。同时,还涵盖了情感分析问题,解释了最常用的解决问题的方法。
第14章 介绍了深度学习领域的内容,解释了神经网络和计算图的概念,对TensorFlow和Keras框架的主要概念进行了简要的介绍并列举了几个实例。
第15章 介绍了如何定义一个完整的机器学习管道,重点介绍了每一步的特点和缺点。
阅读本书须知阅读本书不需要特别的数学基础知识。但是,为充分理解所有的算法,需要有线性代数、概率论和微积分的基本知识。
本书中的例子采用Python编写,使用了scikit-learn机器学习框架、自然语言工具包(NLTK)、Crab、langdetect、Spark、gensim和TensorFlow(深度学习框架),环境为Linux、Mac OS X或Windows平台的Python 2.7或3.3+版本。当一个特定的框架被用于特定的任务时,会提供详细的指导和参考内容。
scikit-learn、NLTK和TensorFlow可以按照以下网站提供的说明进行安装:http://scikit-learn.org、http://www.nltk.org和https://www.tensorflow.org。
读者对象本书主要面向希望进入数据科学领域但对机器学习非常陌生的IT专业人员,最好熟悉Python语言。此外,需要基本的数学知识(线性代数、微积分和概率论),以充分理解大部分章节的内容。
排版约定在本书中,你将找到许多区分不同类型信息的文本样式。下面是这些样式的一些例子以及含义:任何命令行输入或输出如下所示:
警告或重要内容。
提示和技巧。
示例代码及彩图下载本书的代码包可以在GitHub上找到,网址为https://github.com/PacktPublishing/Machine-Learning-Algorithms。读者也可以访问华章图书官网www.hzbook.com,通过注册并登录个人账号,下载本书的源代码和彩图。
作者简介Machine Learning AlgorithmsGiuseppe Bonaccorso是一位拥有12年经验的机器学习和大数据方面的专家。他拥有意大利卡塔尼亚大学电子工程专业工程学硕士学位,并在意大利罗马第二大学、英国埃塞克斯大学深造过。在他的职业生涯中,担任过公共管理、军事、公用事业、医疗保健、诊断学和广告等多个业务领域的IT工程师,使用Java、Python、Hadoop、Spark、Theano和TensorFlow等多种技术进行过项目开发与管理。他的主要研究兴趣包括人工智能、机器学习、数据科学和精神哲学。
审校人员简介Machine Learning AlgorithmsManuel Amunategui是SpringML公司数据科学项目副总裁。SpringML是一家初创公司,提供Google Cloud、TensorFlow和Salesforce企业解决方案。在此之前,他曾在华尔街担任量化开发人员,为一家大型股票期权交易商工作,之后担任微软的软件开发人员。他拥有预测分析和国际管理硕士学位。
他是数据科学爱好者、博主(http://amunategui.github.io),担任Udemy.com和O'Reilly Media的培训师,以及Packt出版社的技术审校人员。
Doug Ortiz是ByteCubed的一名高级大数据架构师,他在整个职业生涯中一直从事企业解决方案方面的架构、开发和集成工作。他帮助企业通过一些现有的和新兴的技术,诸如Microsoft BI Stack、Hadoop、NoSQL数据库、SharePoint以及相关工具和技术,重新发现和利用未充分利用的数据。他也是Illustris公司的创始人,可通过
[email protected]与他联系。
在专业领域,他有多平台和产品集成、大数据、数据科学、R和Python方面的丰富经验。Doug还帮助企业深入了解并重视对数据和现有资源的投资,将其转化为有用的信息来源。他利用独特和创新的技术改进、拯救并架构了多个项目。他的爱好是瑜伽和潜水。
Lukasz Tracewski是一名软件开发人员和科学家,专攻机器学习、数字信号处理和云计算。作为开源社区的积极成员,他也是众多研究类出版物的作者。他曾在荷兰一家高科技产业作为软件科学家工作了6年,先后在光刻和电子显微镜方面帮助构建达到生产量与物理精度极限的算法及机器。目前,他在金融行业领导着一支数据科学团队。
4年来,Lukasz一直在自然保护领域利用他的专业技能提供无偿服务,如从录音或卫星图像分析中进行鸟类分类等。他在业余时间从事濒危物种的保护工作。