描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111626817
本书适合对传统数据挖掘和机器学习算法开发感兴趣的读者阅读,也适合需要系统掌握深度学习的开发人员阅读。
第1章 机器学习基础1
1.1 机器学习概述2
1.2 机器学习的发展历程2
1.3 机器学习分类3
1.3.1 监督学习3
1.3.2 无监督学习3
1.3.3 强化学习4
1.3.4 深度学习4
1.4 机器学习的应用4
1.5 开发机器学习的步骤7
1.6 Python语言的优势8
1.6.1 可执行伪代码8
1.6.2 Python语言使用广泛8
1.6.3 Python语言特色8
1.6.4 Python语言的缺点9
1.7 Python开发工具介绍9
1.7.1 IDLE简介10
1.7.2 IPython简介11
1.7.3 PyCharm简介11
1.7.4 Jupyter Notebook简介12
1.7.5 Anaconda和Spyder简介13
1.8 本章小结15
第2章 Python语言简介16
2.1 搭建Python开发环境16
2.1.1 安装Anaconda16
2.1.2 安装Spyder18
2.1.3 运行和保存Python程序19
2.2 Python计算与变量19
2.2.1 用Python做简单的计算20
2.2.2 Python的运算符20
2.2.3 Python的变量21
2.3 Python的字符串22
2.4 Python的列表23
2.5 Python的元组25
2.6 Python的字典27
2.7 网络爬虫的发展历史和分类28
2.7.1 网络爬虫的发展历史28
2.7.2 网络爬虫的分类30
2.8 网络爬虫的原理30
2.8.1 理论概述30
2.8.2 爬虫的工作流程31
2.9 爬虫框架介绍36
2.9.1 Scrapy介绍36
2.9.2 XPath介绍39
2.10 网络爬虫的设计与实现40
2.10.1 网络爬虫的总体设计40
2.10.2 具体实现过程40
2.10.3 爬虫结果与分析45
2.11 本章小结49
第3章 回归分析50
3.1 回归分析概述50
3.1.1 基本概念50
3.1.2 可以解决的问题51
3.1.3 回归分析的步骤51
3.2 线性回归51
3.2.1 简单线性回归分析51
3.2.2 多元线性回归分析52
3.2.3 非线性回归数据分析52
3.3 用Python实现一元线性回归53
3.4 用Python实现多元线性回归56
3.4.1 使用pandas读取数据56
3.4.2 分析数据57
3.4.3 线性回归模型58
3.5 基于线性回归的股票预测62
3.5.1 数据获取62
3.5.2 数据预处理63
3.5.3 编码实现64
3.5.4 结果分析65
3.6 逻辑回归66
3.6.1 构造预测函数67
3.6.2 构造损失函数J68
3.6.3 梯度下降法求解最小值69
3.7 基于逻辑回归的环境数据检测71
3.7.1 数据来源71
3.7.2 数据处理72
3.7.3 异常数据分析72
3.7.4 数据预测74
3.8 本章小结76
第4章 决策树与随机森林77
4.1 决策树77
4.1.1 决策树的基本原理77
4.1.2 决策树的分类78
4.1.3 决策树的优缺点81
4.2 使用决策树对鸢尾花分类82
4.2.1 Iris数据集简介82
4.2.2 读取数据83
4.2.3 鸢尾花类别83
4.2.4 数据可视化84
4.2.5 训练和分类85
4.2.6 数据集多类分类86
4.2.7 实验结果86
4.3 随机森林87
4.3.1 随机森林的基本原理87
4.3.2 随机森林的收敛性88
4.3.3 随机森林的OOB估计89
4.3.4 随机森林的随机特征选取89
4.3.5 随机森林的优缺点90
4.4 葡萄酒数据集的随机森林分类91
4.4.1 数据收集91
4.4.2 相关库函数简介92
4.4.3 数据基本分析93
4.4.4 使用随机森林构建模型97
4.4.5 实验结果98
4.5 本章小结99
第5章 支持向量机100
5.1 SVM的工作原理及分类100
5.1.1 支持向量机的原理100
5.1.2 线性可分的支持向量机101
5.1.3 非线性可分的支持向量机102
5.2 核函数103
5.2.1 核函数简介103
5.2.2 几种常见的核函数104
5.2.3 核函数如何处理非线性数据104
5.2.4 如何选择合适的核函数105
5.3 SVR简介106
5.3.1 SVR原理106
5.3.2 SVR模型106
5.4 时间序列曲线预测107
5.4.1 生成训练数据集107
5.4.2 运用不同的核函数进行支持向量回归108
5.4.3 生成测试数据集109
5.4.4 预测并生成图表110
5.4.5 获取预测误差111
5.4.6 创建数据集112
5.4.7 选取最优参数112
5.4.8 预测并生成图表112
5.4.9 获取预测误差113
5.5 本章小结114
第6章 隐马尔可夫模型115
6.1 隐马尔可夫模型简介115
6.1.1 隐马尔可夫模型的概念115
6.1.2 详例描述116
6.1.3 HMM流程117
6.2 Viterbi算法117
6.3 HMM模型用于中文分词119
6.3.1 UI界面119
6.3.2 数据及其编码119
6.3.3 HMM模型121
6.3.4 实验结果122
6.4 本章小结124
第7章 BP神经网络模型125
7.1 背景介绍125
7.2 结构特点126
7.3 网络模型126
7.4 人工神经网络简介127
7.4.1 神经元127
7.4.2 单层神经网络128
7.4.3 双层神经网络129
7.4.4 多层神经网络130
7.5 BP神经网络131
7.6 通过TensorFlow实现BP神经网络132
7.7 本章小结134
第8章 卷积神经网络135
8.1 传统图像识别技术135
8.1.1 图像预处理135
8.1.2 图像特征提取136
8.1.3 图像分类方法136
8.2 卷积神经网络结构简介137
8.2.1 卷积神经网络发展历程137
8.2.2 卷积神经网络结构简介137
8.3 卷积神经网络的结构及原理139
8.3.1 卷积层139
8.3.2 池化层140
8.3.3 激活函数142
8.3.4 全连接层144
8.3.5 反馈运算144
8.4 卷积神经网络的优点146
8.5 雷达剖面图识别模型148
8.5.1 数据准备148
8.5.2 构建模型150
8.6 模型测试分析157
8.6.1 部署基本模块157
8.6.2 创建项目结构157
8.6.3 训练网络158
8.6.4 自动化测试158
8.7 本章小结160
第9章 循环神经网络161
9.1 自然语言处理161
9.1.1 自然语言处理概述161
9.1.2 自然语言处理应用162
9.2 对话系统163
9.2.1 对话系统分类163
9.2.2 聊天机器人分类164
9.3 基于LSTM结构的循环神经网络165
9.3.1 循环神经网络165
9.3.2 通过时间反向传播166
9.3.3 长短期记忆网络(LSTM)169
9.4 Seq2Seq模型172
9.4.1 Encoder-Decoder框架173
9.4.2 Attention机制174
9.5 聊天机器人的程序实现176
9.5.1 准备数据176
9.5.2 创建模型178
9.5.3 训练模型179
9.5.4 测试模型180
9.6 本章小结181
第10章 聚类与集成算法182
10.1 聚类方法简介182
10.1.1 聚类定义183
10.1.2 聚类要求183
10.2 聚类算法184
10.2.1 划分方法184
10.2.2 层次方法184
10.2.3 基于密度的方法184
10.2.4 基于网格的方法185
10.2.5 基于模型的方法185
10.3 K-Means算法185
10.3.1 K-Means算法概述185
10.3.2 K-Means算法流程185
10.3.3 K-Means算法实现186
10.3.4 实验结果及分析188
10.3.5 K-Means算法存在的问题188
10.4 K-Means 算法189
10.4.1 K-Means 的基本思想189
10.4.2 K-Means 的数学描述190
10.4.3 K-Means 算法流程190
10.5 K-Means 的实现191
10.5.1 数据集191
10.5.2 代码实现192
10.5.3 K-Means 实验结果193
10.6 Adaboost集成算法的原理194
10.6.1 Boosting算法的基本原理194
10.6.2 Adaboost算法介绍195
10.6.3 Adaboost分类问题的损失函数优化197
10.6.4 Adaboost二元分类问题的算法流程198
10.6.5 Adaboost回归问题的算法流程199
10.6.6 Adaboost算法的正则化200
10.6.7 Adaboost的优缺点200
10.7 Adaboost算法实现201
10.7.1 数据集处理201
10.7.2 实现过程201
10.7.3 实验结果分析206
10.8 本章小结208
第11章 其他机器学习算法209
11.1 贝叶斯分类器210
11.1.1 概率基础知识210
11.1.2 贝叶斯决策准则211
11.1.3 极大似然估计212
11.2 贝叶斯分类模型213
11.2.1 朴素贝叶斯分类模型213
11.2.2 半朴素贝叶斯分类模型216
11.2.3 贝叶斯网络分类模型217
11.3 朴素贝叶斯分类器在破产预测中的应用219
11.3.1 数据集219
11.3.2 训练多项式朴素贝叶斯模型220
11.4 在线学习222
11.4.1 线性模型的在线学习222
11.4.2 非线性模型的在线学习224
11.5 Bandit在线学习算法225
11.5.1 Bandit算法与推荐系统226
11.5.2 常用Bandit算法226
11.6 Bandit算法原理及实现228
11.7 GAN网络229
11.7.1 GAN产生的背景230
11.7.2 模型结构230
11.7.3 GAN的实现原理232
11.8 DCGAN网络236
11.8.1 模型结构236
11.8.2 反卷积237
11.9 DCGAN人脸生成240
11.9.1 实验准备240
11.9.2 关键模块的实现240
11.9.3 实验结果展示243
11.10 本章小结245
附录A 机器学习常见面试题246
附录B 数学基础257
B.1 常用符号257
B.2 数学基础知识259
B.2.1 线性代数259
B.2.2 概率论261
B.2.3 信息论262
参考文献264
近年来,人工智能在全世界掀起了新的科技浪潮,各行各业都在努力涉足人工智能技术。而机器学习是人工智能的一种实现方式,也是最重要的实现方式之一。深度学习是目前机器学习比较热门的一个方向,其本身是神经网络算法的衍生,在图像、语音等富媒体的分类和识别上取得了非常好的效果。数据挖掘主要利用机器学习界提供的技术来分析海量数据,利用数据库界提供的技术来管理海量数据。例如,在对超市货品进行摆放时,牛奶到底是和面包摆放在一起销量更高,还是和其他商品摆在一起销量更高,就可以用相关算法得出结论。由于机器学习技术和数据挖掘技术都是对数据之间的规律进行探索,所以人们通常将两者放在一起提及。而这两种技术在现实生活中也有着非常广阔的应用场景。例如,分类学习算法可以对客户等级进行划分,可以验证码识别,可以对水果品质自动筛选等;回归学习算法可以对连续型数据进行预测,以及对趋势进行预测等;聚类学习算法可以对客户价值和商圈做预测;关联分析可以对超市的货品摆放和个性化推荐做分析;而深度学习算法还可以实现自然语言处理方面的应用,如文本相似度、聊天机器人及自动写诗作画等应用。
纵观国内图书市场,关于Python的书籍不少,它们主要偏向于工具本身的用法,如关于Python的语法、参数、异常处理、调用及开发类实例等,但是基于Python数据挖掘与机器学习类的书籍并不是特别多,特别是介绍最新的基于深度学习算法原理和实战的图书更少。本书将通过具体的实例来讲解数据处理和挖掘技术,同时结合最新的深度学习、强化学习及在线学习等理论知识和实用的项目案例,详细讲解16种常用的数据挖掘和机器学习算法。
本书有何特色
1.全程使用Python 3编程语言
本书通过Anaconda和Spyder提供的Python编程功能实现各种算法:
* 介绍了Scrapy框架和XPath工具;
* 重点介绍了TensorFlow工具的开发和使用;
* 以票务网为例,实现了网站票务信息的爬虫案例。
2.剖析回归分析的基本原理
回归分析是一种应用极为广泛的数量分析方法。本书中的回归分析相关章节实现了如下几个重要例子:
* 对于线性回归,介绍了如何使用一元线性回归求解房价预测的问题;
* 实例演示了使用多元线性回归进行商品价格的预测,以及使用线性回归对股票进行预测;
* 通过环境检测数据异常分析与预测这个实验,用实例具体实现了逻辑回归的过程。
3.详解分类和聚类机器学习算法
在数据挖掘领域中,对分类和聚类算法的研究及运用非常重要。书中着重研究了决策树、随机森林、SVM、HMM、BP神经网络、K-Means和贝叶斯等算法,并实现了以下例子:
* 使用决策树算法对鸢尾花数据集进行分类;
* 使用随机森林对葡萄酒数据集进行分类;
* SVM中采用三种核函数进行时间序列曲线预测;
* HMM模型用于中文分词;
* 用TensorFlow实现BP神经网络;
* 朴素贝叶斯分类器在破产预测中的应用。
4.详细地描述了常用的深度学习算法
本书相关章节中详细地描述了卷积神经网络、循环神经网络、生成对抗网络等。主要有如下实例演示:
* 采用卷积神经网络实现了雷达剖面图识别实例;
* 使用LSTM模型实现了一个聊天机器人的程序;
* 通过DCGAN网络来训练数据,从而产生人脸图像。
5.讨论了其他常用机器学习算法
本书中还讨论了在线学习和强化学习等常见的机器学习算法,例如:
* 演示在线学习Bandit算法与推荐系统;
* 使用Adaboost算法实现马疝病的检测。
6.提供了丰富而实用的数据挖掘源代码,并提供了操作视频和教学PPT
本书详尽地描述了各种重要算法,并提供了很多来源于真实项目案例的源代码。另外,还特别为本书制作了相关操作的教学视频和专业的教学PPT和操作视频,以方便读者学习。
* 卷积神经网络雷达图像识别项目;
* LSTM聊天机器人项目;
* HMM中文分词系统;
* DCGAN的人脸生成模型。
本书内容及知识体系
第1章主要对机器学习的基本概念进行了概述,介绍了5种Python开发工具,分别是IDLE、IPython、PyCharm、Jupyter Notebook、Anaconda和Spyder,对它们的特点进行了阐述,并选择Anaconda和Spyder作为本书的开发工具。
第2章主要介绍了Python开发环境、计算规则与变量,并详细介绍了Python常用的数据类型,分别是字符串、列表、元组和字典;还介绍了爬虫的基本原理,其中重点介绍了Scrapy框架和XPath工具,并且以票务网为例实现了网站票务信息的爬取。
第3章首先介绍了数据挖掘中的回归分析和线性回归的基本概念,然后介绍了如何使用一元线性回归求解房价预测的问题,最后介绍了使用多元线性回归进行商品价格的预测。本章通过环境检测数据异常分析与预测这个实验,对逻辑回归做出了具体的表现分析。
第4章是关于常用分类算法的讲解,主要对决策树和随机森林的基本概念和算法原理进行了详细阐述。本章使用决策树对鸢尾花数据集进行分类,并使用随机森林对葡萄酒数据集进行分类。通过学习本章内容,读者会对决策树算法和随机森林算法有更进一步的认识。
第5章主要介绍了基于统计学习理论的一种机器学习方法——支持向量机,通过寻求结构风险最小来提高泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本较少的情况下也能获得良好的统计规律的目的,可利用SMO算法高效求解该问题。针对线性不可分问题,利用函数映射将原始样本空间映射到高维空间,使得样本线性可分,进而通过SMO算法求解拉普拉斯对偶问题。
第6章介绍了隐马尔可夫模型要解决的三个基本问题,以及解决这三个基本问题的方法,带领读者深入学习解码问题,并掌握解决解码的Viterbi算法,运用Viterbi算法思想精髓“将全局最佳解的计算过程分解为阶段最佳解的计算”,实现对语料的初步分词工作。此外,本章还介绍了HMM模型用于中文分词的方法。
第7章介绍了人工神经网络(Artificial Neural Network,ANN)的基本概念、特点、组成部分和前向传播等内容;阐述了单层神经网络、双层神经网络及多层神经网络的概念和原理;使用TensorFlow实现BP神经网络,进一步强化对BP神经网络的理解和使用。
第8章主要介绍了卷积神经网络的原理及其在图像识别领域中的应用。本章带领读者掌握卷积神经网络的各层,包括输入层、卷积层、池化层、全连接层和输出层;利用卷积神经网络进行雷达图像识别,实现了对雷暴大风灾害性天气的识别,并以地面自动站出现7级大风作为出现灾害性雷暴大风天气的判据,从而建立一套集雷暴大风实时识别、落区预报及落区检验于一体的综合系统。
第9章从自然语言处理的基础知识引入了循环神经网络,并详细阐述其原理及强大之处,最后使用它来实现聊天机器人。循环神经网络常用于处理序列数据,例如一段文字或声音、购物或观影的顺序,甚至可以是图片中的一行或一列像素。
第10章介绍了聚类与集成算法的相关知识。K-Means聚类是一种自下而上的聚类方法,其优点是简单、速度快;Adaboost算法是Boosting方法中最流行的一种算法。集成算法便是将多个弱学习模型通过一定的组合方式,形成一个强学习模型,以达到提高学习正确率的目的。
第11章介绍了贝叶斯分类器分类方法,在一个真实数据集上执行了朴素贝叶斯分类器的训练预测,取得了理想的效果;在围绕实时大数据流分析这一需求展开的研究中,对在线学习Bandit算法的概念进行了阐述,并用Python进行了实验分析;还对生成对抗网络(GAN)进行了讲解,同时也介绍了DCGAN网络模型,并且使用DCGAN网络进行了人脸生成实验。
本书配套资源获取方式
本书涉及的源代码文件、教学视频、教学PPT视频和Demo需要读者自行下载。请登录华章公司的网站www.hzbook.com,在该网站上搜索到本书页面,然后单击“资料下载”按钮即可在页面上找到“配书资源”下载链接。
本书读者对象
* Python程序员;
* 对数据挖掘感兴趣的人员;
* 对机器学习和深度学习感兴趣的人员;
* 想转行到人工智能领域的技术人员;
* 想从其他编程语言转Python开发的人员;
* 喜欢编程的自学人员;
* 高校计算机等专业的学生;
* 专业培训机构的学员。
本书阅读建议
* 没有Python开发基础的读者,建议从第1章顺次阅读并演练每一个实例。
* 有一定Python数据挖掘基础的读者,可以根据实际情况有重点地选择阅读各个模块和项目案例。对于每一个模块和项目案例,先思考一下实现的思路,然后再亲自动手实现,这样阅读效果更佳。
* 有基础的读者可以先阅读书中的模块和Demo,再结合配套源代码理解并调试,这样更加容易理解,而且也会理解得更加深刻。
本书作者
本书由方巍主笔编写。其他参与编写和程序调试工作的人员还有王秀芬、丁叶文和张飞鸿。本书能得以顺利出版,要感谢南京信息工程大学计算机与软件学院2017级的全体研究人员,还要感谢在写作和出版过程中给予笔者大量帮助的各位编辑!
由于笔者水平所限,加之写作时间有限,书中可能还存在一些疏漏和不足之处,敬请各位读者批评指正。联系邮箱:[email protected]。
最后祝大家读书快乐!
编著者
深度学习在过去的几年间赋予了人工智能领域更强的算法和算力,以及更多的应用场景,深刻地改变了该领域的技术方法论。这本书涵盖了数据挖掘在各个主流领域的诸多应用,并介绍了*的机器学习技术和方法,是一本很好的入门读物。读者朋友可以通过阅读本书快速理解深度学习的基本原理和相关技术,并可以跟随作者的引领动手实践书中给出的多个实战案例,在实践中提高自己的水平。
本书主要介绍了机器学习领域近几年的一些*进展,并详细阐述了如何完成工业界一些实用且通用的数据挖掘任务。本书行文风格简洁,内容通俗易懂,案例典型而丰富,实用性很强,适合对机器学习和深度学习研究感兴趣的初学者阅读和实践,也适合对相关技术方向感兴趣的从业人员参考和借鉴。
第1章 机器学习基础
人工智能(Artificial Intelligence,AI)是智能机器,如计算机所执行的与人类智能有关的功能,如识别、判断、证明、学习和问题求解等思维活动。这反映了人工智能学科的基本思想和内容,即人工智能是研究人类智能活动规律的一门学科。1956年在Dartmouth学会上首次提出了“人工智能”这一概念,而人工智能开始迅速发展是在计算机出现后,因为人们真正有了可以模拟人类思维的工具。现如今,人工智能已经不再是一个小众化的研究课题了,全世界几乎所有的理工科类大学都在研究这门学科,甚至为此设立了专门的研究机构。越来越多的学习计算机、自动化控制和软件工程专业的本科生或研究生,将人工智能作为自己的研究方向。在科学家的不懈努力下,如今的计算机与原来相比已经变得十分“聪明”了,某些时候计算机已经可以完成原来只属于人类的工作,并且其高速性和准确性是人类远不可及的。
机器学习(Machine Learning,ML)是人工智能研究领域中最重要的分支之一。它是一门涉及多领域的交叉学科,其包含高等数学、统计学、概率论、凸分析和逼近论等多门学科。该学科专门研究计算机应如何模拟并实现人类的学习行为,以获取人类所不了解的新知识,并使计算机能够使用已有的知识或经验,不断改善自身的性能以得到更加精确的知识。它是人工智能的核心,是使计算机具有智能的根本途径。其应用遍及人工智能的各个领域。它主要使用归纳、综合而不是演绎。
数据挖掘(Data Mining)是从海量数据中获取有效的、新颖的、潜在有用的、最终可理解模式的非平凡过程。数据挖掘中用到了大量的机器学习界所提供的数据分析技术和数据库界所提供的数据管理技术。从数据分析的角度来看,数据挖掘与机器学习有很多相似之处,但不同之处也十分明显。例如,数据挖掘并没有机器学习探索人的学习机制这一科学发现任务,数据挖掘中的数据分析是针对海量数据进行的。从某种意义上说,机器学习的科学成分更重一些,而数据挖掘的技术成分更重一些。数据挖掘中用到了大量的机器学习界所提供的数据分析技术和数据库界所提供的数据管理技术。简单地说,机器学习和数据库是数据挖掘的基石。
本章要点:
q 机器学习概述;
q 机器学习的发展历程;
q 机器学习分类及其应用;
q Python语言的优势;
qPython常用开发工具。
1.1 机器学习概述
机器学习,通俗地讲就是让机器来实现学习的过程,让机器拥有学习的能力,从而改善系统自身的性能。对于机器而言,这里的“学习”指的是从数据中学习,从数据中产生“模型”的算法,即“学习算法”。有了学习算法,只要把经验数据提供给它,它就能够基于这些数据产生模型,在面对新的情况时,模型能够提供相应的判断,进行预测,如图1-1所示。机器学习实质是基于数据集的,通过对数据集的研究,找出数据集中数据之间的联系和数据的真实含义。
图1-1 什么是机器学习
1.2 机器学习的发展历程
机器学习属于人工智能中一个较为“年轻”的分支,大致可以分为以下3个发展阶段。
第一阶段:20世纪50年代中期到60年代中期,这一时期处于萌芽时期。人们试图通过软件编程来操控计算机完成一系列的逻辑推理功能,进而使计算机具有一定程度上类似于人类的智能思考能力。然而这一时期计算机所推理的结果远远没有达到人们对机器学习的期望。通过进一步研究发现,只具有逻辑推理能力并不能使机器智能。研究者们认为,使机器拥有人工智能的前提,必须是拥有大量的先验知识。
第二阶段:20世纪60年代中期到80年代中期,这一时期处于发展时期。人们试图利用自身思维提取出来的规则教会计算机执行决策行为,主流之力便是各式各样的“专家系统”。然而这些系统总会面临“知识稀疏”的问题,即面对无穷无尽的知识与信息,人们无法总结出万无一失的规律。因此,让机器自主学习的设想自然地浮出水面。基于20世纪50年代对于神经网络的研究,人们开始研究如何让机器自主学习。
第三阶段:20世纪80年代至今,机器学习达到了一个繁荣时期。由于这一时期互联网大数据及硬件GPU的出现,使得机器学习突破了瓶颈期。机器学习开始呈现“爆炸”式发展趋势,逐渐成为了一门独立的热门学科,并且被应用到各个领域中。各种机器学习算法不断涌现,而利用深层次神经网络的深度学习也得到了进一步发展。同时,机器学习的蓬勃发展还促进了其他分支的出现,如模式识别、数据挖掘、生物信息学和自动驾驶等。
1.3 机器学习分类
机器学习的思想并不复杂,它仅仅是对人类生活、学习过程的一个模拟。而在这整个过程中,最关键的是数据。任何通过数据训练的学习算法的相关研究都属于机器学习,包括很多已经发展多年的技术,比如线性回归(Linear Regression)、K均值(K-Means,基于原型的目标函数聚类方法)、决策树(Decision Trees,运用概率分析的一种图解法)、随机森林(Random Forest,运用概率分析的一种图解法)、PCA(Principal Component Analysis,主成分分析)、SVM(Support Vector Machine,支持向量机)和ANN(Artificial Neural Networks,人工神经网络)。可见,机器学习的算法非常多,本节将介绍一些最常用的机器学习分类方法,详细的机器学习算法将在后续的章节中进行介绍。
1.3.1 监督学习
监督学习(Supervised Learning)表示机器学习的数据是带标记的,这些标记可以包括数据类别、数据属性及特征点位置等。这些标记作为预期效果,不断修正机器的预测结果。具体实现过程是:通过大量带有标记的数据来训练机器,机器将预测结果与期望结果进行比对;之后根据比对结果来修改模型中的参数,再一次输出预测结果;然后将预测结果与期望结果进行比对,重复多次直至收敛,最终生成具有一定鲁棒性的模型来达到智能决策的能力。常见的监督学习有分类和回归。分类(Classification)是将一些实例数据分到合适的类别中,它的预测结果是离散的。回归(Regression)是将数据归到一条“线”上,即为离散数据生产拟合曲线,因此其预测结果是连续的。
1.3.2 无监督学习
无监督学习(Unsupervised
Learning)表示机器学习的数据是没有标记的。机器从无标记的数据中探索并推断出潜在的联系。常见的无监督学习有聚类和降维。在聚类(Clustering)工作中,由于事先不知道数据类别,因此只能通过分析数据样本在特征空间中的分布,例如基于密度或基于统计学概率模型等,从而将不同数据分开,把相似数据聚为一类。降维(Dimensionality Reduction)是将数据的维度降低。例如描述一个西瓜,若只考虑外皮颜色、根蒂、敲声、纹理、大小及含糖率这6个属性,则这6个属性代表了西瓜数据的维度为6。进一步考虑降维的工作,由于数据本身具有庞大的数量和各种属性特征,若对全部数据信息进行分析,将会增加训练的负担和存储空间。因此可以通过主成分分析等其他方法,考虑主要影响因素,舍弃次要因素,从而平衡准确度与效率。
1.3.3 强化学习
强化学习(Reinforcement
Learning)是带有激励机制的,具体来说,如果机器行动正确,将施予一定的“正激励”;如果行动错误,同样会给出一个惩罚(也可称为“负激励”)。因此在这种情况下,机器将会考虑如何在一个环境中行动才能达到激励的最大化,具有一定的动态规划思想。例如在贪吃蛇游戏中,贪吃蛇需要通过不断吃到“食物”来加分。为了不断提高分数,贪吃蛇需要考虑在自身位置上如何转向才能吃到“食物”,这种学习过程便可理解为一种强化学习。强化学习最为火热的一个应用就是谷歌AlphaGo的升级品——AlphaGo Zero。相较于AlphaGo,AlphaGo Zero舍弃了先验知识,不再需要人为设计特征,直接将棋盘上黑、白棋子的摆放情况作为原始数据输入到模型中,机器使用强化学习来自我博弈,不断提升自己从而最终出色完成下棋任务。AlphaGo Zero的成功,证明了在没有人类的经验和指导下,深度强化学习依然能够出色地完成指定任务。
1.3.4 深度学习
我们要想具有更强的智慧,除了拥有大量的数据以外还要有好的经验总结方法。深度学习就是一种实现这种机器学习的优秀技术。深度学习本身是神经网络算法的衍生。作为深度学习父类的机器学习,是人工智能的核心,它属于人工智能的一个分支。深度学习是新兴的机器学习研究领域,旨在研究如何从数据中自动地提取多层特征表示,其核心思想是通过数据驱动的方式,采用一系列的非线性变换,从原始数据中提取由低层到高层、由具体到抽象、由一般到特定语义的特征。深度学习不仅改变着传统的机器学习方法,也影响着人类感知的理解,迄今已在语音识别、图像理解、自然语言处理和视频推荐等应用领域引发了突破性的变革。
1.4 机器学习的应用
近几年的时间里,深度学习算法如雨后春笋般不断涌现。这些算法在计算机图像识别、语音和视频识别、自然语言处理及信息检索等领域不断刷新历史记录。本节将根据不同应用领域对相关的知名案例进行简述。
1.图像识别
图像识别过去依赖人工设置的特征,特别适合于提取低等级边界信息的SIFT(尺度不变特征转换)或HOG(方向梯度直方图)等。然而,随着小样本无法真实反映实际复杂的情况,研究人员开始在大数据集上进行实验。
1995年Yann Lecun设计了LeNet-5网络,该网络使用了2个卷积层、2个池化层和2个全连接层,形成典型的CNN(卷积神经网络),在MNIST数据集上的实验得到了0.9%的错误率,被用于银行手写支票识别。这也是CNN的成功案例之一。
2006年,Hinton用一个拥有3个隐藏层、170多万权重的深度置信网络在MNIST手写特征识别的数据集上进行训练,在没有对样本进行预处理的情况下,在1万条左右的测试集上,错误率为1.25%,低于反向传播网络及支持向量机(SVM)。
2011年,Google公司建立了全球最大的神经网络,即“深度神经网络”(DNN),也叫“谷歌大脑”,并进行了一个猫脸识别的实验。该实验从YouTube视频中取出1000万张静态图片,让系统自动学习并判断哪些是猫的图片。实验结果表明,他们所建立的深层网络及其算法,在ImageNet数据集1万张图中效果提升了15%,2.2万张图中效果提升了70%。该网络是一个用16000个CPU并行计算平台训练内部拥有10亿个节点的机器学习模型。
2016年初,谷歌旗下最强大脑(DeepMind)公司推出人工智能机器人AlphaGo,创下了围棋人工智能领域的诸多世界纪录。包括:在不让子的情况下,第一次在完整的围棋竞技中击败专业选手(比分5∶0);在中国围棋规则下,成功挑战围棋世界冠军李世石(比分4∶1)。AlphaGo的关键技术有深度学习、强化学习和蒙特卡洛树搜索。在其有监督学习策略和强化学习价值网络中采用了CNN结构。
2.语音识别
在过去,语音识别一直采用GMM-HMM模型。2012年,HinTon等人考虑了语音数据内部原有的结构特征以后,将传统的模型中的高斯混合模型GMM替换为DBN进行实验。结果表明,在TIMIT核心测试集上,错误率降到20.7%,准确率有明显提升。无独有偶,其他研究人员也尝试将GMM-HMM中的GMM替换为其他深度神经网络,也得到了良好的效果。
微软公司的语音视频检索系统(MAVIS),也是在CD-DNN-HMM深度模型的基础上进行开发的,其在RT03S数据集上单词错误率从27.4%降低到了18.5%。2012年,微软在天津公开演示了MAVIS系统对现场讲演者的英文演讲,进行后台的语音识别、英/中文机器翻译和中文语音合成等一系列处理,效果流畅。
3.自然语言处理
自然语言处理(NLP)传统处理方法的缺陷为采用浅层结构,使用线性分类器且需要人工设计大量较好的特征进行预处理,特征在分离的任务中被串联导致传播误差增大。2003年,Bengio等人提出词向量方法,采用神经网络构建语言模型。之后,研究人员在此基础上提出了不同的词向量训练模型。由于人类自然语言具有递归特性,即任何语言中的句子,事实上可以由词、短语递归组合而成,因此,将循环神经网络(RNN)引入NLP成为一种趋势。从2010年开始,来自Google的一些研究者一直从事该领域的研究,提出了RNNLM(循环神经网络语言模型),在语言模型的训练速度、准确率及困惑度上得到了改善。
4.医疗保健
退伍军人创伤后成长计划与IBM Watson合作使用人工智能和分析技术,以确保更多患有创伤后应激障碍的退伍军人能够完成心理治疗。使用这些技术后,使完成率从原来的不到10%上升到73%。根据退伍军人事务部的统计,80%的患有创伤后应激障碍的退伍军人在确诊后一年内完成治疗计划,得到康复。在参加了阿富汗和伊拉克战争的300万名老兵中,大约有五分之一的老兵患有创伤后应激障碍。
以色列医疗技术公司MedyMatch和IBM Watson Health正在使用人工智能,通过检测颅内出血,帮助医院急诊室的医生更有效地治疗中风和头部外伤患者。AI系统使用临床洞察力(clinical insight)、深度学习、患者数据和机器视觉来自动标记潜在的脑出血,以供医生检查。
用于检测和诊断癌症的传统方法包括计算机断层扫描(CT)、磁共振成像(MRI)、超声和X射线。不幸的是,许多癌症无法通过这些技术得到足够准确的诊断,从而及时地挽救生命。微阵列基因图谱的分析是一种替代方法,但这项技术需要很多小时的计算,除非这项技术可以使用AI替换。现在已经被证明,斯坦福大学的人工智能诊断算法可以与医疗团队(由21名经委员会认证的皮肤科医生组成)一样有效地从图像中检测潜在的皮肤癌。Startup Enlitic正在使用深度学习来检测CT图像中的肺癌结节,其算法比一个胸科医生组成的专家团队的准确率高50%。
在人工智能的帮助下,其他医疗保健公司正在经历诊断、治疗甚至治愈的过程。Insilico Medicine正在用深度学习算法寻找新药和治疗方法,包括新的免疫疗法。这些基因疗法使用每个病人的细胞来模拟他们自己的生物学和免疫系统。
人工智能之所以能使这些疗法奏效,是因为它能设计出组合疗法,并以闪电般的速度,以模拟的形式进行数百万次实验,来识别令人难以置信的复杂生物标记物。
纵观深度学习在人工智能不同细分领域中的应用,在计算机视觉、语音识别和自然语言处理等领域中成绩相对显著。但是在其他相关领域,依然不时涌现新的深度结构及其算法。
1.5 开发机器学习的步骤
本书学习和使用机器学习算法开发应用程序,通常遵循以下步骤。
(1)收集数据。
收集所需的数据,方法如:网络爬虫、问卷调查获取的信息、一些设备发送过来的数据,以及从物联网设备获取的数据等。
(2)准备输入数据。
得到数据之后,要确保得到的数据格式符合要求,如某些算法要求特征值需要使用特定的格式。
(3)分析输入的数据。
查看输入的数据是否有明显的异常值,如某些数据点和数据集中的其他值存在明显的差异。通过一维、二维或者三维图形化展示数据是个不错的方法,但是得到的数据特征值都不会低于三个,无法一次图形化展示所有特征。可以通过数据的提炼,压缩多维特征至二维或者一维。
(4)训练算法。
机器学习算法从这一步才算真正开始。需要考虑算法是使用监督学习算法还是无监督学习算法。如果使用无监督学习算法,由于不存在目标变量值,因而也不需要训练算法,所有与算法相关的内容都在第(5)步。
(5)测试算法。
这一步将实际使用第(4)步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须通过其他的评测手段来检测算法的成功率。如果不满意预测结果,则返回至第(4)步。
(6)使用算法。
这一步是将机器学习算法转化为应用程序,执行实际任务。
开发机器学习应用程序的步骤如图1-2所示。
评论
还没有评论。