内容简介
机器学习是人工智能研究领域中的一个极其重要的方向。在现今大数据时代的背景下,捕获数据并从中萃取有价值的信息或模式,使得这一过去为分析师与数学家所专属的研究领域越来越为人们瞩目。
本书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用可复用的Python
代码阐释如何处理统计数据,进行数据分析及可视化。读者可从中学到一些核心的机器学习算法,并将其运用于某些策略性任务中,如分类、预测及等。
本书适合机器学习相关研究人员及互联网从业人员学习参考。
目录
第一部分 分类
第1章 机器学习基础
1.1 何谓机器学习
1.1.1 传感器和海量数据
1.1.2 机器学习重要
1.2 关键术语
1.3 机器学习的主要任务
1.4 如何选择合适的算法
1.5 开发机器学习应用程序的步骤
1.6 Python语言的优势
1.6.1 可执行伪代码
1.6.2 Python比较流行
1.6.3 Python语言的
1.6.4 Python语言的缺点
1.7 NumPy函数库基础
1.8 本章小结
第2章 k-近邻算法
2.1 k-近邻算法概述
2.1.1 准备:使用Python导入数据
2.1.2 从文本文件中解析数据
2.1.3 如何测试分类器
2.2 示例:使用k-近邻算法改进约会网站的配对效果
2.2.1 准备数据:从文本文件中解析数据
2.2.2 分析数据:使用Matplotlib创建散点图
2.2.3 准备数据:归一化数值
2.2.4 测试算法:作为完整程序验证分类器
2.2.5 使用算法:构建完整可用系统
2.3 示例:手写识别系统
2.3.1 准备数据:将图像转换为测试向量
2.3.2 测试算法:使用k-近邻算法识别手写数字
2.4 本章小结
第3章 决策树
3.1 决策树的构造
3.1.1 信息增益
3.1.2 划分数据集
3.1.3 递归构建决策树
3.2 在Python中使用Matplotlib注解绘制树形图
3.2.1 Matplotlib注解
3.2.2 构造注解树
3.3 测试和存储分类器
3.3.1 测试算法:使用决策树执行分类
3.3.2 使用算法:决策树的存储
3.4 示例:使用决策树预测隐形眼镜类型
3.5 本章小结
第4章 基于概率论的分类方法:朴素贝叶斯
4.1 基于贝叶斯决策理论的分类方法
4.2 条件概率
4.3 使用条件概率来分类
4.4 使用朴素贝叶斯进行文档分类
4.5 使用Python进行文本分类
4.5.1 准备数据:从文本中构建词向量
4.5.2 训练算法:从词向量计算概率
4.5.3 测试算法:根据现实情况修改分类器
4.5.4 准备数据:文档词袋模型
4.6 示例:使用朴素贝叶斯过滤垃圾邮件
4.6.1 准备数据:切分文本
4.6.2 测试算法:使用朴素贝叶斯进行交叉验证
4.7 示例:使用朴素贝叶斯分类器从个人广告中获取区域倾向
4.7.1 收集数据:导入RSS源
4.7.2 分析数据:显示地域相关的用词
4.8 本章小结
第5章 Logistic回归
5.1 基于Logistic回归和Sigmoid函数的分类
5.2 基于化方法的回归系数确定
5.2.1 梯度上升法
5.2.2 训练算法:使用梯度上升找到参数
5.2.3 分析数据:画出决策边界
5.2.4 训练算法:随机梯度上升
5.3 示例:从疝气病症预测病马的死亡率
5.3.1 准备数据:处理数据中的缺失值
5.3.2 测试算法:用Logistic回归进行分类
5.4 本章小结
第6章 支持向量机
6.1 基于间隔分隔数据
6.2 寻找间隔
6.2.1 分类器求解的优化问题
6.2.2 SVM应用的一般框架
6.3 SMO优化算法
6.3.1 Platt的SMO算法
6.3.2 应用简化版SMO算法处理小规模数据集
6.4 利用完整Platt SMO算法加速优化
6.5 在复杂数据上应用核函数
6.5.1 利用核
摘要与插图
大学毕业后,我先后在加利福尼亚和中国大陆的Intel公司工作。,我打算工作两年之后回学校读研究生,但是幸福时光飞逝而过,转眼就过去了六年。那时,我意识到我必须回到校园。我不想上夜校或进行在线学习,我就想坐在大学校园里吸纳学校传授的所有知识。在大学里,的方面不是你研修的课程或从事的研究,而是一些外围活动:与人会面、参加研讨会、加入组织、旁听课程,以及学习未知的知识。在2008年,我帮助筹备一个招聘会。我同一个大型金融机构的人交谈,他们希望我去应聘他们机构的一个对信用卡建模(判断某人是否会偿还贷款)的岗位。他们问我对随机分析了解多少,那时,我并不能确定“随机”一词的意思。他们提出的工作地点令我无法接受,所以我决定不再考虑了。但是,他们说的“随机”让我很感兴趣,于是我拿来课程目录,寻找含有“随机”字样的课程,我看到了“离散随机系统”。我没有注册就直接旁听了这门课,完成课后作业,参加考试,被授课教授发现。但是她很仁慈,让我继续学习,这让我感激。上这门课,是我第一次看到将概率应用到算法中。在这之前,我见过一些算法将平均值作为外部输入,但这次不同,方差和均值都是这些算法中的内部值。这门课主要讨论时间序列数据,其中每一段数据都是一个均匀间隔样本。我还找到了名称中包含“机器学习”的另一门课程。该课程中的数据并不假设满足时间的均匀间隔分布,它包含更多的算法,但严谨性有所降低。再后来我意识到,在经济系、电子工程系和计算机科学系的课程中都会讲授类似的算法。
2009年初,我顺利毕业,并在硅谷谋得了一份软件咨询的工作。接下来的两年,我先后在涉及不同技术的八家公司工作,发现了构成这本书主题的两种趋势:第一,为了开发出竞争力强的应用,不能仅仅连接数据源,而需要做更多事情;第二,用人单位希望员工既懂理论也能编程。
程序员的大部分工作可以类比于连接管道,所不同的是,程序员连接的是数据流,这也为人们带了巨大的财富。举一个例子,我们要开发一个在线出售商品的应用,其中主要部分是允许用户来发布商品并浏览其他人发布的商品。为此,我们需要建立一个Web表单,允许用户输入所售商品的信息,然后将该信息传到一个数据存储区。要让用户看到其他用户所售商品的信息,就要从数据存储区获取这些数据并适当地显示出来。我可以确信,人们会通过这种方式挣钱,但是如果让要应用更好,需要加入一些智能因素。这些智能因素包括自动删除不适当的发布信息、检测不正当交易、给出用户可能喜欢的商品以及预测网站的流量等。为了实现这些目标,我们需要应用机器学习方法。对于用户而言,他们并不了解幕后的“魔法”,他们关心的是应用能有效运行,这也是好产品的标志。
一个机构会雇用一些理论家(思考者)以及一些做实际工作的人(执行者)。前者可能会将大部分时间花在学术工作上,他们的日常工作就是基于论文产生思路,然后通过工具或数学进行建模。后者则通过编写代码与真实世界交互,处理非理想世界中的瑕疵,比如崩溃的机器或者带噪声的数据。区分这两类人并不是个好想法,很多成功的机构都认识到这一点。(精益生产的一个原则就是,思考者应该自己动手去做实际工作。)当招聘经费有限时,谁更能得到工作,思考者还是执行者?很可能是执行者,但是现实中用人单位希望两种人都要。很多事情都需要做,但当应用需要更高要求的算法时,那么需要的人员就必须能够阅读论文,领会论文思路并通过代码实现,如此反复下去。
在这之前,我没有看到在机器学习算法方面缩小思考者和执行者之间差距的书籍。本书的目的就是填补这