2016年初发生的一件事,让人们对于人工智能的迅速发展刮目相看,即由谷歌开发的人工智能机器人程序AlphaGo战胜了人类围棋世界冠军职业九段棋手李世石,最终比分为4∶1。在此之后,AlphaGo一路过关斩将,与世界上数十位围棋高手对战,竟然无一失败,可谓是战绩辉煌。
毫无疑问,在围棋领域,AlphaGo已经明显超越了一般人类的智能水平。它的设计和开发涉及了很多的核心技术,深度学习就是其中之一。所谓深度学习,就是指多层的人工神经网络以及对神经网络进行训练和优化的方法。前面一层神经网络把大量数据矩阵化之后作为输入,通过非线性激活方法计算权重,再产生另一个数据集合,以此作为输出,同时也作为后面一层神经网络的输入。这个过程就像生物神经大脑的工作机理一样,通过合适的矩阵数量,多层组织链接在一起,形成神经网络“大脑”,对数据进行精准复杂的处理,既使得处理速度得以提高,又使得处理的准确度和精确度也达到了一个非常高的水平。
深度学习和人工神经网络是典型的无监督学习算法之一,其他典型的无监督学习算法还包括分组和聚类,在这些算法当中,由于不需要事先有典型的输入和输出作为训练样本,因此具有极大的灵活性。此外还有分类和回归等有监督学习算法和半监督学习方法。这些机器学习算法在大数据处理方面有着各自的应用场景,如果应用得当,将会使大数据处理如虎添翼。
AlphaGo只是机器学习技术与大数据相结合的典型案例之一。移动互联网和物联网(IOT)的飞速发展,使人类社会累积数据的速度达到前所未有的程度,这里所谓的大数据包括几乎一切形式的结构化、半结构化以及非结构化的数据,例如网络日志、音频、视频、图片、地理位置信息等。因此,如何对这些数据进行高效的采集、存储、处理并从中发掘到有价值的信息,就是大数据分析处理需要解决的问题。具体来说就是时下比较热门的几个技术热点:物联网和工业物联网(IIoT),主要解决的是数据的采集问题; 云计算,主要解决高效存储和计算问题;数据分析技术,主要解决如何有效对数据进行挖掘,并从中发现应用价值的问题。本书主要关注数据分析技术之一,即预测性分析技术,以及如何将分析结果以可视化的方式展现给利益相关者。当然,数据能够进行正确分析的前提是有高质量的数据,因此,本书也会适当地提及对于不同类型的数据如何进行清洗和过滤,从而为后期分析模型的构建打好基础。
说到大数据分析,不得不提及当前对大数据进行处理分析的编程语言,首屈一指的当属R了。作为MATLAB和SAS等昂贵而复杂的统计软件的免费替代品,简单易用的R迅速风靡全球,在金融街的表现尤为突出。但是R的优点也许也是其缺点,例如在建模技术上并不是很完善,处理海量数据时显得有些笨重,等等。而Python结合了R语言的快速性、处理复杂数据的能力以及更务实的语言特质,迅速地成为主流,尤其是近几年成长得很快。由于直观、易于学习,以及生态系统近年来急剧增长,Python在统计分析领域迅速占有一席之地。IPython notebook和NumPy可以用作快速进行数据分析和处理的一种轻便工具,而Python可以作为中等规模数据处理的强大工具。丰富的数据社区也是Python的优势,因为可供用户随时获取到大量的工具包和功能。另外,Python也可以与多种关系型数据库(例如MySQL、PostGreSQL等)和非关系型数据库(例如MongoDB、Hadoop等)进行无缝集成,再加上对于分布式计算框架(例如Spark)的支持,让基于Python构建的数据分析和预测系统可以很容易地扩展到大规模数据集上。因此,基于Python构建大数据的分析预测系统无疑是比较好的解决方案之一。
回到本书的主要内容上,本书先对数据分析系统的基本架构和主要处理流程进行了扼要介绍,然后从分类和无监督学习开始,逐一讲解每种机器学习算法的主要工作原理,并且在每章的最后一节给出详细的案例讨论,从而将理论很好地落实到实现中。通过对每一种具体学习算法理论部分的介绍,我们可以窥见本书作者Joseph Babcock坚实的理论功底;而落实到具体的Python实现上,我们又可以体会到Python的强大和简洁。因此,我觉得对数据分析、数据建模或者机器学习感兴趣的读者都可以读一读本书。但是译者个人觉得,读者最好具备一定的统计学知识和基本的Python编程经验,不然会稍显吃力。
值得一提的是,机器学习和人工智能已经写进了2017年的政府工作报告,因此从某种程度上说,已经上升到了国家战略层面。我们有理由相信,在可以预见的未来,基于机器学习和人工智能的数据处理和分析预测技术必将为人们的生活和工作带来极大的改变。因此,本书可以为那些对机器学习算法和预测分析技术感兴趣的人指出大致的方向。而对于那些早已投身其中的先行者来说,本书也不失为一个比较好的参考。
封面图
目录
- 译者序
- 关于审稿人
- 前言
- 第1章数据转换成决策——从分析应用着手
- 11设计高级分析方案
- 111数据层:数据仓库、数据湖和数据流
- 112模型层
- 113部署层
- 114报告层
- 12案例学习:社交媒体数据的情感分析
- 121数据输入和转换
- 122合理性检查
- 123模型开发
- 124评分
- 125可视化和报告
- 13案例学习:针对性电子邮件活动
- 131数据输入和转换
- 132合理性检查
- 133模型开发
- 134评分
- 135可视化和报告
- 14总结
- 第2章Python数据分析和可视化初探
- 21在IPython中探索分类和数值型数据
- 211安装IPython notebook
- 212notebook的界面
- 213加载和检视数据
- 214基本操作——分组、过滤、映射以及透视
- 215用Matplotlib绘制图表
- 22时间序列分析
- 221清洗和转换
- 222时间序列诊断
- 223连接信号和相关性
- 23操作地理数据
- 231加载地理数据
- 232工作在云上
- 24PySpark简介
- 241创建SparkContext
- 242创建RDD
- 243创建Spark DataFrame
- 24总结
- 第3章在噪声中探求模式——聚类和无监督学习
- 31相似性和距离度量
- 311数值距离度量
- 312相关相似性度量和时间序列
- 313分类数据的相似性度量
- 314k均值聚类
- 32近邻传播算法——自动选择聚类数量
- 33k中心点算法
- 34凝聚聚类算法
- 35Spark中的数据流聚类
- 36总结
- 第4章从点到模型——回归方法
- 41线性回归
- 411数据准备
- 412模型拟合和评价
- 413回归输出的显著性差异
- 414广义估计方程
- 415混合效应模型
- 416时间序列数据
- 417广义线性模型
- 418线性模型的正则化
- 42树方法
- 421决策树
- 422随机森林
- 43利用PySpark进一步扩展——预测歌曲的发行年份
- 44总结
- 第5章数据分类——分类方法和分析
- 51逻辑回归
- 511多分类逻辑分类器:多元回归
- 512分类问题中的数据格式化
- 513基于随机梯度下降法的学习逐点更新
- 514使用二阶方法联合优化所有参数
- 52拟合模型
- 53评估分类模型
- 54通过支持向量机分离非线性边界
- 541人口普查数据的拟合和SVM
- 542Boosting:组合小模型以改善准确度
- 543梯度提升决策树
- 55分类方法比较
- 56案例学习:在PySpark中拟合分类器模型
- 57总结
- 第6章词语和像素——非结构化数据分析
- 61文本数据分析
- 611文本数据清洗
- 612从文本数据中提取特征
- 613利用降维来简化数据集
- 62主分量分析
- 621隐含狄利克雷分布
- 622在预测模型中使用降维
- 63图像
- 631图像数据清洗
- 632利用图像阈值来突出显示对象
- 633图像分析中的降维
- 64案例学习:在PySpark中训练一个推荐系统
- 65总结
- 第7章自底向上学习——深度网络和无监督特征
- 71使用神经网络学习模式
- 711单一感知器构成的网络
- 712感知器组合——一个单层神经网络
- 713反向传播的参数拟合
- 714判别式模型与生成式模型
- 715梯度消失及“解去”
- 716预训练信念网络(贝叶斯网络)
- 717使用dropout来正则化网络
- 718卷积网络和纠正单元
- 719利用自编码网络压缩数据
- 7110优化学习速率
- 72TensorFlow库与数字识别
- 721MNIST数据
- 722构建网络
- 73总结
- 第8章利用预测服务共享模型
- 81预测服务的架构
- 82客户端和发出请求
- 821GET请求
- 822POST请求
- 823HEAD请求
- 824PUT请求
- 825DELETE请求
- 83服务器——Web流量控制器
- 84利用数据库系统持久化存储信息
- 85案例学习——逻辑回归服务
- 851建立数据库
- 852Web服务器
- 853Web应用
- 86总结
- 第9章报告和测试——分析型系统迭代
- 91利用诊断检查模型的健康度
- 911评估模型性能的变化
- 912特征重要性的变化
- 913无监督模型性能的变化
- 92通过A/B测试对模型进行迭代
- 921实验分配——将客户分配给实验
- 922决定样本大小
- 923多重假设检验
- 93沟通指南
- 931将术语转换为业务价值
- 932可视化结果
- 933报告服务器
- 934报告应用
- 935可视化层
- 94总结