描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111593379
内容简介
本书是一本使用机器学习进行实际操作处理数据分析任务的书,全书讨论了机器学习理论及其应用,重点是机器学习在实际生活工作中的应用的。通过阅读本书,读者将了解机器学习的基本知识、常用策略、各种算法、实际应用等。
目 录
Contents 目 录
译者序
前言
致谢
第1章 什么是机器学习1
1.1 机器学习的历史1
1.1.1阿兰·图灵1
1.1.2亚瑟·塞缪尔2
1.1.3汤姆 M.米切尔2
1.1.4总结定义2
1.2机器学习的算法类型2
1.2.1监督学习3
1.2.2无监督学习3
1.3人的作用3
1.4机器学习的用途4
1.4.1软件4
1.4.2股票交易4
1.4.3机器人学5
1.4.4医学和医疗5
1.4.5广告业5
1.4.6零售和电子商务6
1.4.7游戏分析7
1.4.8物联网7
1.5机器学习语言8
1.5.1Python8
1.5.2R8
1.5.3Matlab8
1.5.4Scala8
1.5.5Clojure9
1.5.6Ruby9
1.6 本书使用的软件9
1.6.1检查Java版本9
1.6.2Weka 工具包9
1.6.3Mahout10
1.6.4Spring XD10
1.6.5Hadoop11
1.6.6使用集成开发环境11
1.7数据库11
1.7.1加州大学欧文分校机器学习库12
1.7.2Infochimps12
1.7.3Kaggle12
1.8总结12
第2章 筹备机器学习13
2.1机器学习周期13
2.2以问题为先导13
2.3缺少数据14
2.3.1从身边做起14
2.3.2比赛14
2.4一劳永逸的解决方案15
2.5界定机器学习过程15
2.5.1规划15
2.5.2开发16
2.5.3测试16
2.5.4报告16
2.5.5精炼16
2.5.6产品16
2.6建立数据团队17
2.6.1数学和统计学17
2.6.2编程17
2.6.3图形设计17
2.6.4行业知识17
2.7数据处理18
2.7.1使用个人计算机18
2.7.2计算机集群18
2.7.3云服务18
2.8数据存储19
2.8.1物理磁盘19
2.8.2云存储19
2.9数据隐私19
2.9.1文化规范19
2.9.2普遍的期望20
2.9.3用户数据匿名20
2.9.4不要穿过“底线”21
2.10数据质量和清洗21
2.10.1完整性检测22
2.10.2类型检测22
2.10.3长度检测22
2.10.4范围检测22
2.10.5格式检测23
2.10.6进退两难23
2.10.7国家名内包含的内容26
2.10.8数值和日期27
2.10.9有关数据清洗的后看法28
2.11思考输入数据28
2.11.1原始文本28
2.11.2逗号分隔变量28
2.11.3JSON29
2.11.4YAML30
2.11.5XML31
2.11.6电子表格32
2.11.7数据库32
2.11.8图像33
2.12考虑输出数据33
2.13不要害怕实验33
2.14总结34
第3章 决策树35
3.1决策树基础35
3.1.1决策树的用途35
3.1.2决策树的优点36
3.1.3决策树的局限36
3.1.4相关算法类型36
3.1.5决策树工作原理37
3.2 Weka中的决策树40
3.2.1需求40
3.2.2训练数据41
3.2.3使用Weka创建决策树42
3.2.4为分类器生成Java代码46
3.2.5测试分类器代码49
3.2.6进一步的思考51
3.3总结51
第4章 贝叶斯网络52
4.1从飞行员到回形针52
4.2图论53
4.3概率论54
4.3.1投掷硬币54
4.3.2条件概率54
4.3.3赌博中获胜54
4.4贝叶斯定理55
4.5贝叶斯网络原理57
4.5.1赋值57
4.5.2计算结果58
4.6节点的个数59
4.7利用领域专家的信息59
4.8贝叶斯网络演练59
4.8.1贝叶斯网络中的Java API60
4.8.2设计网络60
4.8.3编程61
4.9总结69
第5章 人工神经网络70
5.1什么是神经网络70
5.2人工神经网络的应用71
5.2.1高频交易71
5.2.2信用分析71
5.2.3数据中心管理71
5.2.4机器人72
5.2.5药效监控72
5.3人工神经网络分解72
5.3.1感知机72
5.3.2激活函数73
5.3.3多层感知机74
5.3.4后向传播算法75
5.4人工神经网络的数据准备76
5.5 Weka中的人工神经网络76
5.5.1新建数据集76
5.5.2将数据载入Weka中78
5.5.3配置多层感知机79
5.5.4训练网络81
5.5.5调整网络83
5.5.6增加测试数据规模83
5.6利用Java实现神经网络84
5.6.1创建项目84
5.6.2实现代码86
5.6.3CSV与Arff文件转换88
5.6.4运行神经网络88
5.7总结89
第6章 关联规则学习90
6.1关联规则学习的应用90
6.1.1Web使用挖掘90
6.1.2啤酒和尿布91
6.2关联规则学习工作原理92
6.2.1支持度92
6.2.2置信度93
6.2.3提升度93
6.2.4确信度93
6.2.5计算步骤94
6.3算法94
6.3.1 Apiori94
6.3.2FP-Growth95
6.4基于购物篮分析的实战95
6.4.1下载原始数据95
6.4.2在Eclipse中搭建工程96
6.4.3建立项目的数据文件97
6.4.4 设置数据99
6.4.5运行Mahout101
6.4.6检查结果103
6.4.7结果整合105
6.4.8进一步开发106
6.5总结106
第7章 支持向量机107
7.1什么是支持向量机107
7.2何处使用支持向量机107
7.3基本分类原则108
7.3.1二分类和多分类108
7.3.2线性分类器109
7.3.3置信度109
7.3.4化或小化寻找直线110
7.4支持向量机如何实现分类110
7.4.1使用线性分类110
7.4.2使用非线性分类112
7.5在Weka中使用支持向量机112
7.5.1安装LibSVM112
7.5.2分类演示113
7.5.3用Java实现LibSVM117
7.6总结122
第8章 聚类123
8.1什么是聚类123
8.2聚类应用123
8.2.1因特网124
8.2.2商业和零售业124
8.2.3执法部门124
8.2.4计算124
8.3聚类模型125
8.3.1k-均值的工作原理125
8.3.2计算一个数据集中聚类的数量126
8.4使用Weka做k-均值聚类127
8.4.1准备数据128
8.4.2工作台方法129
8.4.3命令行方法133
8.4.4编程方法135
8.5总结143
第9章 实时机器学习—使用Spring XD框架144
9.1获取消防水管式的数据144
9.1.1使用实时数据的注意事项144
9.1.2实时系统的使用范围145
9.2
译者序
前言
致谢
第1章 什么是机器学习1
1.1 机器学习的历史1
1.1.1阿兰·图灵1
1.1.2亚瑟·塞缪尔2
1.1.3汤姆 M.米切尔2
1.1.4总结定义2
1.2机器学习的算法类型2
1.2.1监督学习3
1.2.2无监督学习3
1.3人的作用3
1.4机器学习的用途4
1.4.1软件4
1.4.2股票交易4
1.4.3机器人学5
1.4.4医学和医疗5
1.4.5广告业5
1.4.6零售和电子商务6
1.4.7游戏分析7
1.4.8物联网7
1.5机器学习语言8
1.5.1Python8
1.5.2R8
1.5.3Matlab8
1.5.4Scala8
1.5.5Clojure9
1.5.6Ruby9
1.6 本书使用的软件9
1.6.1检查Java版本9
1.6.2Weka 工具包9
1.6.3Mahout10
1.6.4Spring XD10
1.6.5Hadoop11
1.6.6使用集成开发环境11
1.7数据库11
1.7.1加州大学欧文分校机器学习库12
1.7.2Infochimps12
1.7.3Kaggle12
1.8总结12
第2章 筹备机器学习13
2.1机器学习周期13
2.2以问题为先导13
2.3缺少数据14
2.3.1从身边做起14
2.3.2比赛14
2.4一劳永逸的解决方案15
2.5界定机器学习过程15
2.5.1规划15
2.5.2开发16
2.5.3测试16
2.5.4报告16
2.5.5精炼16
2.5.6产品16
2.6建立数据团队17
2.6.1数学和统计学17
2.6.2编程17
2.6.3图形设计17
2.6.4行业知识17
2.7数据处理18
2.7.1使用个人计算机18
2.7.2计算机集群18
2.7.3云服务18
2.8数据存储19
2.8.1物理磁盘19
2.8.2云存储19
2.9数据隐私19
2.9.1文化规范19
2.9.2普遍的期望20
2.9.3用户数据匿名20
2.9.4不要穿过“底线”21
2.10数据质量和清洗21
2.10.1完整性检测22
2.10.2类型检测22
2.10.3长度检测22
2.10.4范围检测22
2.10.5格式检测23
2.10.6进退两难23
2.10.7国家名内包含的内容26
2.10.8数值和日期27
2.10.9有关数据清洗的后看法28
2.11思考输入数据28
2.11.1原始文本28
2.11.2逗号分隔变量28
2.11.3JSON29
2.11.4YAML30
2.11.5XML31
2.11.6电子表格32
2.11.7数据库32
2.11.8图像33
2.12考虑输出数据33
2.13不要害怕实验33
2.14总结34
第3章 决策树35
3.1决策树基础35
3.1.1决策树的用途35
3.1.2决策树的优点36
3.1.3决策树的局限36
3.1.4相关算法类型36
3.1.5决策树工作原理37
3.2 Weka中的决策树40
3.2.1需求40
3.2.2训练数据41
3.2.3使用Weka创建决策树42
3.2.4为分类器生成Java代码46
3.2.5测试分类器代码49
3.2.6进一步的思考51
3.3总结51
第4章 贝叶斯网络52
4.1从飞行员到回形针52
4.2图论53
4.3概率论54
4.3.1投掷硬币54
4.3.2条件概率54
4.3.3赌博中获胜54
4.4贝叶斯定理55
4.5贝叶斯网络原理57
4.5.1赋值57
4.5.2计算结果58
4.6节点的个数59
4.7利用领域专家的信息59
4.8贝叶斯网络演练59
4.8.1贝叶斯网络中的Java API60
4.8.2设计网络60
4.8.3编程61
4.9总结69
第5章 人工神经网络70
5.1什么是神经网络70
5.2人工神经网络的应用71
5.2.1高频交易71
5.2.2信用分析71
5.2.3数据中心管理71
5.2.4机器人72
5.2.5药效监控72
5.3人工神经网络分解72
5.3.1感知机72
5.3.2激活函数73
5.3.3多层感知机74
5.3.4后向传播算法75
5.4人工神经网络的数据准备76
5.5 Weka中的人工神经网络76
5.5.1新建数据集76
5.5.2将数据载入Weka中78
5.5.3配置多层感知机79
5.5.4训练网络81
5.5.5调整网络83
5.5.6增加测试数据规模83
5.6利用Java实现神经网络84
5.6.1创建项目84
5.6.2实现代码86
5.6.3CSV与Arff文件转换88
5.6.4运行神经网络88
5.7总结89
第6章 关联规则学习90
6.1关联规则学习的应用90
6.1.1Web使用挖掘90
6.1.2啤酒和尿布91
6.2关联规则学习工作原理92
6.2.1支持度92
6.2.2置信度93
6.2.3提升度93
6.2.4确信度93
6.2.5计算步骤94
6.3算法94
6.3.1 Apiori94
6.3.2FP-Growth95
6.4基于购物篮分析的实战95
6.4.1下载原始数据95
6.4.2在Eclipse中搭建工程96
6.4.3建立项目的数据文件97
6.4.4 设置数据99
6.4.5运行Mahout101
6.4.6检查结果103
6.4.7结果整合105
6.4.8进一步开发106
6.5总结106
第7章 支持向量机107
7.1什么是支持向量机107
7.2何处使用支持向量机107
7.3基本分类原则108
7.3.1二分类和多分类108
7.3.2线性分类器109
7.3.3置信度109
7.3.4化或小化寻找直线110
7.4支持向量机如何实现分类110
7.4.1使用线性分类110
7.4.2使用非线性分类112
7.5在Weka中使用支持向量机112
7.5.1安装LibSVM112
7.5.2分类演示113
7.5.3用Java实现LibSVM117
7.6总结122
第8章 聚类123
8.1什么是聚类123
8.2聚类应用123
8.2.1因特网124
8.2.2商业和零售业124
8.2.3执法部门124
8.2.4计算124
8.3聚类模型125
8.3.1k-均值的工作原理125
8.3.2计算一个数据集中聚类的数量126
8.4使用Weka做k-均值聚类127
8.4.1准备数据128
8.4.2工作台方法129
8.4.3命令行方法133
8.4.4编程方法135
8.5总结143
第9章 实时机器学习—使用Spring XD框架144
9.1获取消防水管式的数据144
9.1.1使用实时数据的注意事项144
9.1.2实时系统的使用范围145
9.2
前 言
前 言 Preface数据,数据,数据!想必在新闻、报刊、白皮书、电视等媒介的持续冲击下,人们无法摆脱大数据和数据科学的洗礼。现实需求推动了对数据的学习、分析和应用,这些数据来自社交媒体、智能手机、硬件设备(也称作“物联网”)、传感器等任何可以产生数据的设备。
大多数数据挖掘的宣传着重于数据规模和处理速度。数据洪水(data flood)的预言告诉人们,我们无法实时处理这些数据,硬件推销人员会进一步卖给我们所需要的服务,以期能够满足处理速度的要求。从某种程度上来说,他们是对的,但是我们值得停下来思考片刻,并对手边的任务进行适当的再认识。
近年来,数据挖掘和机器学习在我们周围持续火爆,各种媒体也不断推送着海量的数据。但仔细观察就能发现,实际应用中的那些机器学习算法与多年前并没有什么两样,只是在应用的数据规模上有些不同罢了。历数一下产生数据的组织,至少在我看来,数目其实并不多。无非是Google、Facebook、Twitter、Netflix及其他为数不多的机构,在使用若干学习算法和工具,这些算法和工具使得他们能够对数据进行测试分析。那么,真正的问题是:“对于其他人,大数据框架下算法和工具的作用是什么呢?”
我承认本书将多次提及大数据和机器学习之间的关系,这是我无法忽视的一个客观问题,但它只是一个很小的因素,终极目标是如何利用可用数据获取数据的本质内涵。请记住,本书是在探讨工具,关键点是选择哪个工具来胜任我们尝试完成的工作。迫于技术上的压力,有人可能会选择Hadoop,但是Hadoop并不一定总是完成任务好的选择。
本书目的本书是关于机器学习而非大数据的,书中会介绍多种用于分析数据本质的技术。读完本书,你将掌握许多有用的机器学习方法的实际运用,并分析、解释算法实现中如此组织代码的原因。针对具体实际问题选择哪种方法更恰当,本书会提供推荐的建议。
本书没有固定的阅读顺序。你可以从头读到尾,或者选择性地阅读你需要的内容。
“实践”意味着亲自动手过去的几年里,我读过的许多关于机器学习的书都非常重视理论,这并不是什么坏事。如果你正在看一本使用复杂公式、深入讲解数学理论的书,我要为你的严谨而喝彩。对于我而言,我更加关注的是使用何种机器学习方法及其工程实践。我的信条很简单:
在头脑中思考一个问题;找到我需要学习的理论;找到和我要学习的理论相关的例子;在我的实践工程中让它们发挥作用。
作为软件开发人员,我个人喜欢看很多示例。作为一名老师,我喜欢尽可能多地亲自实现它,并且尽可能简单地将内容传授给我的学生。大概过程是:指出关键点,在IDE中输入正确的代码,然后实现期望的功能。这是令人振奋并且很有成就感的事情,并且我在本书中也希望传达这样的思想。
每个人都有自己的学习方式。我相信本书涵盖了大多数的通用方法,所以,相信每个人都能从中获益。
“如何对待数学?”
就像谈论“你喜欢哪支足球队?”“吉他手吉米·佩奇(Jimmy Page)和杰夫·贝克(Jeff Beck)哪个更帅气(嘿,本人更喜欢贝克)?”有些话题是没有标准答案的。比如这个问题:在开始从事机器学习之前,我需要知道多少数学知识?从事机器学习和学习机器学习的理论是两个不同的概念。为了学习理论,显然需要一个好的数学背景。本书讨论机器学习的实践方法。现在已经有了很多可被开发者利用的机器学习工具,当前的重点不是为什么这些工具有用,而是如何让这些工具为我所用。前人已经完成了艰难的工作,我们要尊重他们的劳动成果,并为他们喝彩。
“但是你需要一个博士!”
同行的一些言语或许会葬送你的研究之路。在你开始做数据分析或者敢于自称是“数据科学家”的时候,耳边会长期充斥着关于你应该具备什么样的知识层次这样的争论(我将马上剖析“数据科学家”这个术语)。个人而言,我相信如果你能够花费多年去获得一个学士学位,接着获得硕士学位,然后是博士学位,你就可以选择这条路。我对待事情更加注重实用性,并且喜欢边阅读资料边动手实践。
学术环境很关键;现在有大量的在线课程、论文、网站,以及关于数学、统计、数据挖掘方面的书籍,足够让你跟上热的思想。我从中获取了很多资源。
但是,对于我,直接的莫过于甩开膀子,阅读大量书籍,尝试一些方法,并且检验它们的结果。如果你想重温一下线性回归的理论,我再次向你保证有很多资料可以阅读,本书也将介绍它们。
后,大家能够成为“数据科学家”吗?或许本书更有可能的结果是:带给大家更多的机器学习实践技能。第2章将再次讨论这个话题。
所以,当办公室的其他人还在争论是否需要在项目组中增加几个博士的时候,你已经开始用代码实现一个决策树,并且检验它是否切实可行了。
终你会学到什么假定你将本书从头读到尾,你将学到机器学习的常用策略、机器学习的不同方法,以及将它们应用在实时和批处理环境下的方法。
或者,你也可以直接参考你需要的某一个章节。本书各章节之间联系并不紧密,每一章的内容和实例与其他章节并无太多相关性。
大多数数据挖掘的宣传着重于数据规模和处理速度。数据洪水(data flood)的预言告诉人们,我们无法实时处理这些数据,硬件推销人员会进一步卖给我们所需要的服务,以期能够满足处理速度的要求。从某种程度上来说,他们是对的,但是我们值得停下来思考片刻,并对手边的任务进行适当的再认识。
近年来,数据挖掘和机器学习在我们周围持续火爆,各种媒体也不断推送着海量的数据。但仔细观察就能发现,实际应用中的那些机器学习算法与多年前并没有什么两样,只是在应用的数据规模上有些不同罢了。历数一下产生数据的组织,至少在我看来,数目其实并不多。无非是Google、Facebook、Twitter、Netflix及其他为数不多的机构,在使用若干学习算法和工具,这些算法和工具使得他们能够对数据进行测试分析。那么,真正的问题是:“对于其他人,大数据框架下算法和工具的作用是什么呢?”
我承认本书将多次提及大数据和机器学习之间的关系,这是我无法忽视的一个客观问题,但它只是一个很小的因素,终极目标是如何利用可用数据获取数据的本质内涵。请记住,本书是在探讨工具,关键点是选择哪个工具来胜任我们尝试完成的工作。迫于技术上的压力,有人可能会选择Hadoop,但是Hadoop并不一定总是完成任务好的选择。
本书目的本书是关于机器学习而非大数据的,书中会介绍多种用于分析数据本质的技术。读完本书,你将掌握许多有用的机器学习方法的实际运用,并分析、解释算法实现中如此组织代码的原因。针对具体实际问题选择哪种方法更恰当,本书会提供推荐的建议。
本书没有固定的阅读顺序。你可以从头读到尾,或者选择性地阅读你需要的内容。
“实践”意味着亲自动手过去的几年里,我读过的许多关于机器学习的书都非常重视理论,这并不是什么坏事。如果你正在看一本使用复杂公式、深入讲解数学理论的书,我要为你的严谨而喝彩。对于我而言,我更加关注的是使用何种机器学习方法及其工程实践。我的信条很简单:
在头脑中思考一个问题;找到我需要学习的理论;找到和我要学习的理论相关的例子;在我的实践工程中让它们发挥作用。
作为软件开发人员,我个人喜欢看很多示例。作为一名老师,我喜欢尽可能多地亲自实现它,并且尽可能简单地将内容传授给我的学生。大概过程是:指出关键点,在IDE中输入正确的代码,然后实现期望的功能。这是令人振奋并且很有成就感的事情,并且我在本书中也希望传达这样的思想。
每个人都有自己的学习方式。我相信本书涵盖了大多数的通用方法,所以,相信每个人都能从中获益。
“如何对待数学?”
就像谈论“你喜欢哪支足球队?”“吉他手吉米·佩奇(Jimmy Page)和杰夫·贝克(Jeff Beck)哪个更帅气(嘿,本人更喜欢贝克)?”有些话题是没有标准答案的。比如这个问题:在开始从事机器学习之前,我需要知道多少数学知识?从事机器学习和学习机器学习的理论是两个不同的概念。为了学习理论,显然需要一个好的数学背景。本书讨论机器学习的实践方法。现在已经有了很多可被开发者利用的机器学习工具,当前的重点不是为什么这些工具有用,而是如何让这些工具为我所用。前人已经完成了艰难的工作,我们要尊重他们的劳动成果,并为他们喝彩。
“但是你需要一个博士!”
同行的一些言语或许会葬送你的研究之路。在你开始做数据分析或者敢于自称是“数据科学家”的时候,耳边会长期充斥着关于你应该具备什么样的知识层次这样的争论(我将马上剖析“数据科学家”这个术语)。个人而言,我相信如果你能够花费多年去获得一个学士学位,接着获得硕士学位,然后是博士学位,你就可以选择这条路。我对待事情更加注重实用性,并且喜欢边阅读资料边动手实践。
学术环境很关键;现在有大量的在线课程、论文、网站,以及关于数学、统计、数据挖掘方面的书籍,足够让你跟上热的思想。我从中获取了很多资源。
但是,对于我,直接的莫过于甩开膀子,阅读大量书籍,尝试一些方法,并且检验它们的结果。如果你想重温一下线性回归的理论,我再次向你保证有很多资料可以阅读,本书也将介绍它们。
后,大家能够成为“数据科学家”吗?或许本书更有可能的结果是:带给大家更多的机器学习实践技能。第2章将再次讨论这个话题。
所以,当办公室的其他人还在争论是否需要在项目组中增加几个博士的时候,你已经开始用代码实现一个决策树,并且检验它是否切实可行了。
终你会学到什么假定你将本书从头读到尾,你将学到机器学习的常用策略、机器学习的不同方法,以及将它们应用在实时和批处理环境下的方法。
或者,你也可以直接参考你需要的某一个章节。本书各章节之间联系并不紧密,每一章的内容和实例与其他章节并无太多相关性。
评论
还没有评论。