机器学习:从入门到绝不放弃!

2018 年 3 月 19 日 图灵教育 图小敏整理

前段时间,人工智能又战略级霸屏,从两会工作报告到南京大学成立国内首个“人工智能学院”,已经没有什么可以阻挡人工智能的飞速发展了。机器学习作为人工智能一个不可缺少的研究课题,其重要性也是不言而喻。


不管你之前有没有关注过,机器学习也早已覆盖了你的生活。从自动推荐看什么电影、点什么食物、买什么商品,到个性化的在线电台和从照片中识别好友等等,这些服务的核心都是机器学习算法。


之前已经有很多人加入了机器学习的行列,在知乎上仅机器学习这个话题就有850,279的人关注。前几天谷歌发布机器学习速成课,各种霸屏,相信会引发新的“机器学习热”。小图贴心地给出了《谷歌机器学习速成课预备书单》,在微博和微信收到了小伙伴们的好评。


可能你也曾想奋不顾身一跃入坑,怎奈老是觉得机器学习知识体系过于庞杂,或者担忧自己的数学成为短板,还没开始,就已放弃......


今天这篇文章分享给那些入坑受阻,或者还没来得及入坑但一直处于备战状态,还差临门一脚的读者;以及因为恐惧数学想入坑却犹豫不决的读者。


一、什么是机器学习?

1. 机器学习是人工智能的一个分支


机器学习是实现人工智能的一种途径,它从数据中提取知识,在近30多年已发展为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。


机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。


机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。


2. 机器学习能够解决什么问题?


最成功的机器学习算法是能够将决策过程自动化的那些算法,这些决策过程是从已知示例中泛化得出的。


在这种叫作监督学习(supervised learning)的方法中,用户将成对的输入和预期输出提供给算法,算法会找到一种方法,根据给定输入给出预期输出。


垃圾邮件分类就是监督学习很好的例子,利用机器学习算法,用户为算法提供大量电子邮件(作为输入),以及这些邮件是否为垃圾邮件的信息(作为预期输出)。给定一封新邮件,算法就能够预测它是否为垃圾邮件。


还有另一类算法是无监督学习算法(unsupervised learning algorithm)。在无监督学习中,只有输入数据是已知的,没有为算法提供输出数据。


检测网站的异常访问模式就是无监督学习:

想要识别网站的滥用或bug,找到异常的访问模式往往是很有用的。每种异常访问模式都互不相同,而且你可能没有任何记录在案的异常行为示例。在这个例子中你只是观察流量,并不知道什么是正常访问行为和异常访问行为,所以这是一个无监督学习问题。


无论是监督学习任务还是无监督学习任务,将输入数据表征为计算机可以理解的形式都是十分重要的。通常来说,将数据想象成表格是很有用的。


3. 怎样构建机器学习解决方案?


构建机器学习解决方案的时候,最重要的部分是理解你正在处理的数据,以及这些数据与你想要解决的任务之间的关系。


在构建机器学习解决方案的过程中,你应该给出下列问题的答案,或者至少要将这些问题记在脑中。


  • 我想要回答的问题是什么?已经收集到的数据能够回答这个问题吗?

  • 要将我的问题表示成机器学习问题,用哪种方法最好?

  • 我收集的数据是否足够表达我想要解决的问题?

  • 我提取了数据的哪些特征?这些特征能否实现正确的预测?

  • 如何衡量应用是否成功?

  • 机器学习解决方案与我的研究或商业产品中的其他部分是如何相互影响的?


从更大的层面来看,机器学习算法和方法只是解决特定问题的过程中的一部分,一定要始终牢记整个项目的大局。许多人浪费大量时间构建复杂的机器学习解决方案,最终却发现没有解决正确的问题。


二、选择Python入坑机器学习

Python 既有通用编程语言的强大功能,也有特定领域脚本语言(比如MATLAB 或R)的易用性。它有用于数据加载、可视化、统计、自然语言处理、图像处理等各种功能的库。这个大型工具箱为数据科学家提供了大量的通用功能和专用功能。


使用Python 的主要优点之一,就是利用终端或其他类似Jupyter Notebook 的工具能够直接与代码进行交互;机器学习和数据分析本质上都是迭代过程,由数据驱动分析。这些过程必须要有快速迭代和易于交互的工具。


作为通用编程语言,Python 还可以用来创建复杂的图形用户界面(graphical user interface,GUI)和Web 服务,也可以集成到现有系统中。


三、机器学习必要的库和工具

1. scikit-learn


scikit-learn 是一个开源项目,可以免费使用和分发,任何人都可以轻松获取其源代码来查看其背后的原理。scikit-learn 项目正在不断地开发和改进中,它的用户社区非常活跃。它包含许多目前最先进的机器学习算法,每个算法都有详细的文档。

http://scikit-learn.org/stable/documentation


scikit-learn 是一个非常流行的工具,也是最有名的Python 机器学习库。它广泛应用于工业界和学术界,网上有大量的教程和代码片段。scikit-learn也可以与其他大量Python 科学计算工具一起使用。


2. Jupyter Notebook


Jupyter Notebook 是可以在浏览器中运行代码的交互环境。这个工具在探索性数据分析方面非常有用,在数据科学家中广为使用。它支持多种编程语言。用Jupyter Notebook 整合代码、文本和图像非常方便。


3. NumPy


NumPy 是Python 科学计算的基础包之一。它的功能包括多维数组、高级数学函数(比如线性代数运算和傅里叶变换),以及伪随机数生成器。


在 scikit-learn 中,NumPy 数组是基本数据结构。scikit-learn 接受 NumPy 数组格式的数据。你用到的所有数据都必须转换成 NumPy 数组。NumPy 的核心功能是 ndarray 类,即多维(n 维)数组。数组的所有元素必须是同一类型。


4. SciPy


SciPy 是 Python 中用于科学计算的函数集合。它具有线性代数高级程序、数学函数优化、信号处理、特殊数学函数和统计分布等多项功能。scikit-learn 利用 SciPy 中的函数集合来实现算法。


5. matplotlib


matplotlib 是 Python 主要的科学绘图库,其功能为生成可发布的可视化内容,如折线图、直方图、散点图等。


6. pandas


pandas 是用于处理和分析数据的 Python 库。它基于一种叫作 DataFrame 的数据结构,这种数据结构模仿了R 语言中的DataFrame。简单来说,一个pandas DataFrame 是一张表格,类似于 Excel 表格。pandas 中包含大量用于修改表格和操作表格的方法,尤其是可以像 SQL 一样对表格进行查询和连接。


NumPy 要求数组中的所有元素类型必须完全相同,而 pandas 不是这样,每一列数据的类型可以互不相同(比如整型、日期、浮点数和字符串)。


pandas 的另一个强大之处在于,它可以从许多文件格式和数据库中提取数据,如SQL、Excel 文件和逗号分隔值(CSV)文件。


四、参考图书推荐

今天介绍的这两本图书,有个共同点,使用 Python 实现那是必然的,我们强调的共同点是这两本书偏重实现与实践,而不纠缠数学,是小伙伴们上手Python 机器学习的首选参考书。

1. 《Python机器学习基础教程》

最新上架、非常受欢迎的机器学习入门书:

Andreas C. Müller ,Sarah Guido 著

 张亮(hysic) 译

¥ 79.00元 / 电子书 ¥ 39.99元

 

这是近期非常受读者喜爱的 Python 机器学习入门书。原版 Introduction to Machine Learning with Python: A Guide for Data Scientists 在 Amazon 不论是算法还是机器学习分类都是稳居前十的。第一作者 Andreas C. Müller 是 scikit-learn 库维护者和核心贡献者,去他 GitHub 页面翻了翻,发现这书的 star 是1.9k,关注度还是不错的。


《Python机器学习基础教程》重点讨论的是机器学习算法的实践而不是其背后的数学,为数学所困的小伙伴们大可放心。跟着书中的内容,你可以使用 Python 和 scikit-learn 库一步一步构建一个有效的机器学习应用。

长按识别京东购买


目录

第1章 引言

1.1 为何选择机器学习

1.2 为何选择Python

1.3 scikit-learn

1.4 必要的库和工具

1.5 Python 2与Python 3的对比

1.6 本书用到的版本

1.7 第一个应用:鸢尾花分类

1.8 小结与展望


第2章 监督学习

2.1 分类与回归

2.2 泛化、过拟合与欠拟合

2.3 监督学习算法

2.4 分类器的不确定度估计

2.5 小结与展望


第3章 无监督学习与预处理

3.1 无监督学习的类型

3.2 无监督学习的挑战

3.3 预处理与缩放

3.4 降维、特征提取与流形学习

3.5 聚类

3.6 小结与展望


第4章 数据表示与特征工程

4.1 分类变量

4.2 分箱、离散化、线性模型与树

4.3 交互特征与多项式特征

4.4 单变量非线性变换

4.5 自动化特征选择

4.6 利用专家知识

4.7 小结与展望


第5章 模型评估与改进

5.1 交叉验证

5.2 网格搜索

5.3 评估指标与评分

5.4 小结与展望


第6章 算法链与管道

6.1 用预处理进行参数选择

6.2 构建管道

6.3 在网格搜索中使用管道

6.4 通用的管道接口

6.5 网格搜索预处理步骤与模型参数

6.6 网格搜索选择使用哪个模型

6.7 小结与展望


第7章 处理文本数据

7.1 用字符串表示的数据类型

7.2 示例应用:电影评论的情感分析

7.3 将文本数据表示为词袋

7.4 停用词

7.5 用tf-idf缩放数据

7.6 研究模型系数

7.7 多个单词的词袋(n元分词)

7.8 高级分词、词干提取与词形还原

7.9 主题建模与文档聚类

7.10 小结与展望


第8章 全书总结

8.1 处理机器学习问题

8.2 从原型到生产

8.3 测试生产系统

8.4 构建你自己的估计器

8.5 下一步怎么走

8.6 总结


2. 《机器学习实战》

最畅销的机器学习实战图书,介绍并实现机器学习主流算法:


Peter Harrington 著

李锐,李鹏,曲亚东,王斌 译

¥ 69.00元 / 电子书  ¥ 39.99元

图灵最受欢迎的机器学习算法书。跟前一本风格类似,也是更多地讨论如何编码实现机器学习算法,而尽量减少讨论数学理论。将数学矩阵描述的机器学习算法转化为可以实际工作的应用程序,是本书的主要目的。


全书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用Python代码来阐释如何处理统计数据,进行数据分析及可视化。


通过各种实例,读者可从中学会机器学习的核心算法,并能将其运用于一些策略性任务中,如分类、预测、推荐。另外,还可用它们来实现一些更高级的功能,如汇总和简化等。


长按识别京东购买


目录

第一部分 分类

第1章 机器学习基础 阅读

第2章 k-近邻算法

第3章 决策树

第4章 基于概率论的分类方法:朴素贝叶斯 阅读

第5章 Logistic回归

第6章 支持向量机

第7章 利用AdaBoost元算法提高分类性能


第二部分 利用回归预测数值型数据

第8章 预测数值型数据:回归

第9章 树回归


第三部分 无监督学习

第10章 利用K-均值聚类算法对未标注数据分组

第11章 使用Apriori算法进行关联分析

第12章 使用FP-growth算法来高效发现频繁项集


第四部分 其他工具

第13章 利用PCA来简化数据

第14章 利用SVD简化数据

第15章 大数据与MapReduce


附录A Python入门

附录B 线性代数

附录C 概率论复习

附录D 资源



<赠书福利>


你是从什么时候开始学习机器学习的?觉得机器学习中最收智商税的是什么知识点?你是如何做到拨云见日的?跟小伙伴们分享一下你的机器学习历险记。如果你还没开始接触机器学习,说一下为何想入坑。精选评论选取 3 位小伙伴,《Python机器学习基础教程》《机器学习实战》两本图书任选一。PS:大家也可以选取图灵机器学习书单中的其他图书。

截止:3月21日12:00。



  点击【阅读原文】查看更多图灵机器学习图书

登录查看更多
5

相关内容

现实生活中常常会有这样的问题:缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高。很自然地,我们希望计算机能代我们完成这些工作,或至少提供一些帮助。根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
340+阅读 · 2020年3月17日
机器学习速查手册,135页pdf
专知会员服务
340+阅读 · 2020年3月15日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
199+阅读 · 2020年2月11日
【机器学习课程】机器学习中的常识性问题
专知会员服务
74+阅读 · 2019年12月2日
深入浅出,一篇超棒的机器学习入门文章
七月在线实验室
4+阅读 · 2019年1月7日
干货 | 机器学习怎么从入门到不放弃!
THU数据派
6+阅读 · 2018年6月8日
关于机器学习,你需要知道的三件事!
云栖社区
3+阅读 · 2018年3月3日
最适合机器学习新手的10种算法
论智
9+阅读 · 2018年1月23日
【干货】机器学习和深度学习概念入门(下)
机器学习研究会
6+阅读 · 2017年12月31日
【机器学习】从零开始入门机器学习算法实践
产业智能官
10+阅读 · 2017年12月1日
干货 | 从零开始入门机器学习算法实践
雷锋网
9+阅读 · 2017年11月30日
快速掌握机器学习,这 3 种算法你必须知道
开源中国
8+阅读 · 2017年11月9日
A Survey on Bayesian Deep Learning
Arxiv
63+阅读 · 2020年7月2日
Learning Discriminative Model Prediction for Tracking
Logically-Constrained Reinforcement Learning
Arxiv
3+阅读 · 2018年12月6日
Arxiv
5+阅读 · 2018年5月21日
VIP会员
相关VIP内容
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
340+阅读 · 2020年3月17日
机器学习速查手册,135页pdf
专知会员服务
340+阅读 · 2020年3月15日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
199+阅读 · 2020年2月11日
【机器学习课程】机器学习中的常识性问题
专知会员服务
74+阅读 · 2019年12月2日
相关资讯
深入浅出,一篇超棒的机器学习入门文章
七月在线实验室
4+阅读 · 2019年1月7日
干货 | 机器学习怎么从入门到不放弃!
THU数据派
6+阅读 · 2018年6月8日
关于机器学习,你需要知道的三件事!
云栖社区
3+阅读 · 2018年3月3日
最适合机器学习新手的10种算法
论智
9+阅读 · 2018年1月23日
【干货】机器学习和深度学习概念入门(下)
机器学习研究会
6+阅读 · 2017年12月31日
【机器学习】从零开始入门机器学习算法实践
产业智能官
10+阅读 · 2017年12月1日
干货 | 从零开始入门机器学习算法实践
雷锋网
9+阅读 · 2017年11月30日
快速掌握机器学习,这 3 种算法你必须知道
开源中国
8+阅读 · 2017年11月9日
Top
微信扫码咨询专知VIP会员