具体描述
本书介绍如何使用Java创建并实现机器学习算法,既有基础知识,又提供实战案例。主要内容包括:机器学习基本概念、原理,Weka、Mahout、Spark等常见机器学习库的用法,各类机器学习常见任务,包括分类、预测预报、购物篮分析、检测异常、行为识别、图像识别以及文本分析。最后还提供了相关Web资源、各种技术研讨会议以及机器学习挑战赛等进阶所需内容。
作者简介
Boštjan Kaluža
博士,人工智能与机器学习专家,现任Evolven公司(领先的IT运营分析公司,致力于配置管理业务)首席数据科学家,主攻机器学习、预测分析、模式挖掘与异常检测,旨在把数据转化为人类可理解的信息与可供实用的知识。 更多信息请访问http://bostjankaluza.net。
目录信息
1.1 机器学习与数据科学 1
1.1.1 机器学习能够解决的问题 2
1.1.2 机器学习应用流程 3
1.2 数据与问题定义 4
1.3 数据收集 5
1.3.1 发现或观察数据 5
1.3.2 生成数据 6
1.3.3 采样陷阱 7
1.4 数据预处理 7
1.4.1 数据清洗 8
1.4.2 填充缺失值 8
1.4.3 剔除异常值 8
1.4.4 数据转换 9
1.4.5 数据归约 10
1.5 无监督学习 10
1.5.1 查找相似项目 10
1.5.2 聚类 12
1.6 监督学习 13
1.6.1 分类 14
1.6.2 回归 16
1.7 泛化与评估 18
1.8 小结 21
第2章 面向机器学习的Java库与平台 22
2.1 Java环境 22
2.2 机器学习库 23
2.2.1 Weka 23
2.2.2 Java机器学习 25
2.2.3 Apache Mahout 26
2.2.4 Apache Spark 27
2.2.5 Deeplearning4j 28
2.2.6 MALLET 29
2.2.7 比较各个库 30
2.3 创建机器学习应用 31
2.4 处理大数据 31
2.5 小结 33
第3章 基本算法——分类、回归和聚类 34
3.1 开始之前 34
3.2 分类 35
3.2.1 数据 35
3.2.2 加载数据 36
3.2.3 特征选择 37
3.2.4 学习算法 38
3.2.5 对新数据分类 40
3.2.6 评估与预测误差度量 41
3.2.7 混淆矩阵 41
3.2.8 选择分类算法 42
3.3 回归 43
3.3.1 加载数据 43
3.3.2 分析属性 44
3.3.3 创建与评估回归模型 45
3.3.4 避免常见回归问题的小技巧 48
3.4 聚类 49
3.4.1 聚类算法 49
3.4.2 评估 50
3.5 小结 51
第4章 利用集成方法预测客户关系 52
4.1 客户关系数据库 52
4.1.1 挑战 53
4.1.2 数据集 53
4.1.3 评估 54
4.2 最基本的朴素贝叶斯分类器基准 55
4.2.1 获取数据 55
4.2.2 加载数据 56
4.3 基准模型 58
4.3.1 评估模型 58
4.3.2 实现朴素贝叶斯基准线 59
4.4 使用集成方法进行高级建模 60
4.4.1 开始之前 60
4.4.2 数据预处理 61
4.4.3 属性选择 62
4.4.4 模型选择 63
4.4.5 性能评估 66
4.5 小结 66
第5章 关联分析 67
5.1 购物篮分析 67
5.2 关联规则学习 69
5.2.1 基本概念 69
5.2.2 Apriori算法 71
5.2.3 FP-增长算法 71
5.2.4 超市数据集 72
5.3 发现模式 73
5.3.1 Apriori算法 73
5.3.2 FP-增长算法 74
5.4 在其他领域中的应用 75
5.4.1 医疗诊断 75
5.4.2 蛋白质序列 75
5.4.3 人口普查数据 76
5.4.4 客户关系管理 76
5.4.5 IT运营分析 76
5.5 小结 77
第6章 使用Apache Mahout制作推荐引擎 78
6.1 基本概念 78
6.1.1 关键概念 79
6.1.2 基于用户与基于项目的分析 79
6.1.3 计算相似度的方法 80
6.1.4 利用与探索 81
6.2 获取Apache Mahout 81
6.3 创建一个推荐引擎 84
6.3.1 图书评分数据集 84
6.3.2 加载数据 84
6.3.3 协同过滤 89
6.4 基于内容的过滤 97
6.5 小结 97
第7章 欺诈与异常检测 98
7.1 可疑与异常行为检测 98
7.2 可疑模式检测 99
7.3 异常模式检测 100
7.3.1 分析类型 100
7.3.2 事务分析 101
7.3.3 规划识别 101
7.4 保险理赔欺诈检测 101
7.4.1 数据集 102
7.4.2 为可疑模式建模 103
7.5 网站流量异常检测 107
7.5.1 数据集 107
7.5.2 时序数据中的异常检测 108
7.6 小结 113
第8章 利用Deeplearning4j进行图像识别 114
8.1 图像识别简介 114
8.2 图像分类 120
8.2.1 Deeplearning4j 120
8.2.2 MNIST数据集 121
8.2.3 加载数据 121
8.2.4 创建模型 122
8.3 小结 128
第9章 利用手机传感器进行行为识别 129
9.1 行为识别简介 129
9.1.1 手机传感器 130
9.1.2 行为识别流水线 131
9.1.3 计划 132
9.2 从手机收集数据 133
9.2.1 安装Android Studio 133
9.2.2 加载数据采集器 133
9.2.3 收集训练数据 136
9.3 创建分类器 138
9.3.1 减少假性转换 140
9.3.2 将分类器嵌入移动应用 142
9.4 小结 143
第10章 利用Mallet进行文本挖掘——主题模型与垃圾邮件检测 144
10.1 文本挖掘简介 144
10.1.1 主题模型 145
10.1.2 文本分类 145
10.2 安装Mallet 146
10.3 使用文本数据 147
10.3.1 导入数据 149
10.3.2 对文本数据做预处理 150
10.4 为BBC新闻做主题模型 152
10.4.1 BBC数据集 152
10.4.2 建模 153
10.4.3 评估模型 155
10.4.4 重用模型 156
10.5 垃圾邮件检测 157
10.5.1 垃圾邮件数据集 158
10.5.2 特征生成 159
10.5.3 训练与测试模型 160
10.6 小结 161
第11章 机器学习进阶 162
11.1 现实生活中的机器学习 162
11.1.1 噪声数据 162
11.1.2 类不平衡 162
11.1.3 特征选择困难 163
11.1.4 模型链 163
11.1.5 评价的重要性 163
11.1.6 从模型到产品 164
11.1.7 模型维护 164
11.2 标准与标记语言 165
11.2.1 CRISP-DM 165
11.2.2 SEMMA方法 166
11.2.3 预测模型标记语言 166
11.3 云端机器学习 167
11.4 Web资源与比赛 168
11.4.1 数据集 168
11.4.2 在线课程 169
11.4.3 比赛 170
11.4.4 网站与博客 170
11.4.5 场馆与会议 171
11.5 小结 171
· · · · · · (收起)
读后感
用户评价
这本书的排版和案例选择,让我感受到了作者对读者的尊重和用心。它的代码示例全部是基于当前最主流、最稳定的库版本编写的,这一点非常关键,因为很多旧教材的代码放到新环境中跑起来会遇到各种依赖问题。更值得称赞的是,作者在讲解每一个算法时,都会同步提供一个“性能瓶颈分析”的模块。比如在讲到K-Means聚类时,他不仅解释了肘部法则,还深入探讨了在数据点数量巨大时,如何利用Mini-Batch K-Means来牺牲微小的精度换取巨大的速度提升,并且给出了何时应该使用哪种变体的决策树。我特别喜欢它对正则化方法的讨论,它不仅仅是介绍了L1和L2,而是用贝叶斯角度解释了它们如何对应到先验分布的假设上,这极大地提升了我对正则化本质的理解。我过去一直觉得正则化是个“黑箱”技巧,但读完这个部分,我明白了它背后深刻的统计学含义。书中的图表设计非常简洁有效,很少有冗余的装饰性图形,每一个图都是为了支撑核心观点而存在的,阅读体验非常流畅,几乎不需要来回翻页去对照公式和解释。
这本书简直是为那些渴望在数据科学领域有所突破的实战派人士量身打造的。我印象最深的是它对不同机器学习算法底层逻辑的剖析,不是那种浮于表面的概念堆砌,而是深入到了数学公式的推导和代码实现的每一个细节。比如,它对支持向量机(SVM)核函数的选择和参数调优的讲解,简直是教科书级别的清晰。我记得我之前在处理一个高维稀疏数据分类问题时,尝试了好多方法都效果不佳,最后完全是依靠书中关于核函数映射的几何解释,才找到了最合适的RBF核参数组合,性能提升了近20%。再者,它对集成学习方法,尤其是梯度提升决策树(GBDT)和LightGBM的对比分析也非常到位。作者不仅解释了它们在提升性能上的差异,还非常细致地对比了它们在处理大规模数据集时的内存占用和训练速度的权衡,这对于需要快速迭代模型的工程师来说,无疑是宝贵的实战经验。书中很多例子都直接引用了实际工业界的数据集,让理论知识立刻变得鲜活起来,完全没有那种“空中楼阁”的感觉。如果你期待的不是一本入门级的科普读物,而是一本能让你在算法细节上精益求精的工具书,这本书绝对值得你花时间去啃。它强迫你去思考“为什么”而不是仅仅记住“是什么”。
这本书的魅力在于它能够兼顾广度和深度,让人感觉像是在跟一位全能的导师对话。在自然语言处理(NLP)部分,作者没有仅仅满足于介绍Transformer架构,而是回溯性地讲解了RNN和LSTM在处理长距离依赖时的固有缺陷,从而自然地引出注意力机制的革命性意义。他用一种非常形象化的方式解释了自注意力机制中“Query”、“Key”、“Value”的角色扮演,让我第一次清晰地理解了为什么不同的头(head)可以学习到不同的语义关系。此外,书中对数据不平衡问题的处理章节也极具价值。它不仅列举了SMOTE等过采样技术,还重点讨论了代价敏感学习(Cost-Sensitive Learning)的框架,并展示了如何在损失函数层面直接嵌入业务风险权重。这种从业务需求倒推算法设计的思路,是教科书里很少强调的。阅读这本书的过程,更像是一场思维体操,它不断地挑战你对现有知识的理解深度,并引导你思考如何将这些知识工具箱里的工具,灵活、高效地应用到解决那些尚未被明确定义的复杂问题上去。
说实话,当我刚翻到关于强化学习(RL)的那几章时,我有点担心这本书的深度会突然下降,毕竟很多机器学习书籍在RL部分都写得比较敷衍。然而,这本书的表现再次超出了预期。它没有停留在简单的Q-Learning上,而是花了相当的篇幅讲解了策略梯度方法(Policy Gradient),特别是REINFORCE算法的推导过程,以及Actor-Critic架构如何解决方差过大的问题。最让我惊艳的是,作者将RL的概念巧妙地应用到了一个非传统的场景——资源调度优化上。书中构建了一个模拟的云计算任务分配系统,用PPO算法来动态调整负载均衡策略,这个案例的实用性极强。很多RL书籍要么过于理论化,要么只停留在游戏环境,而这本书成功地架起了一座连接前沿算法与实际工程问题的桥梁。它甚至讨论了在实际部署RL系统时,如何处理探索与利用的持续权衡,以及如何设计奖励函数来避免意外的行为模式。对于那些希望将前沿RL技术应用于工业优化领域的工程师来说,这本书提供的不仅是知识,更是一套可落地的思维框架。
当我拿起这本书时,我原本是抱着学习新框架的心态的,但很快我发现它远不止于此。它的叙事方式非常独特,更像是一位经验丰富的架构师在分享他多年踩过的“坑”和总结出的“捷径”。特别是在深度学习部分,作者并没有直接跳到复杂的卷积网络或循环网络,而是花了大量的篇幅来讨论特征工程在传统机器学习模型中的重要性,以及如何科学地评估模型的泛化能力。书中有一个章节专门讲了“交叉验证的陷阱”,详细分析了在时间序列数据和非独立同分布数据中,标准K折交叉验证可能导致的乐观估计,并提出了蒙特卡洛交叉验证等更稳健的替代方案。这种对评估偏差的深度探讨,对于我这种过去常常因为模型在测试集上表现优秀而在实际部署中遭遇滑铁卢的开发者来说,是醍醐灌顶。此外,关于模型可解释性(XAI)的部分也令人耳目一新,它介绍了几种LIME和SHAP方法的原理,并通过图示清晰地展示了它们如何帮助我们理解复杂模型(比如随机森林)的预测决策路径。总而言之,这本书的价值在于它提供了一个成熟的数据科学家看待和构建机器学习系统的全景视角,强调了稳健性和可信赖性的重要性,而不是单纯追求最高的准确率数字。
很适合作为导论来读,不细究深入算法,但就作为工程工具入门足够了
可以花一点时间直接踹门进去的Java 机器学习库介绍书。但不用多花时间,因为都是封装好的库,没有自己写代码的自由度,不适合想要深究原理的人。不过可以用来查看一些模型的模拟结果。毕竟weka 的库很丰富啊。
很适合作为导论来读,不细究深入算法,但就作为工程工具入门足够了
很适合作为导论来读,不细究深入算法,但就作为工程工具入门足够了
可以花一点时间直接踹门进去的Java 机器学习库介绍书。但不用多花时间,因为都是封装好的库,没有自己写代码的自由度,不适合想要深究原理的人。不过可以用来查看一些模型的模拟结果。毕竟weka 的库很丰富啊。