本书是一本比较全面的预测建模教材,覆盖了最常见的一些技术,例如逻辑回归、神经网络、支持向量机、隐马尔可夫模型、时间序列分析、推荐系统等。本书属于Packt出版社系列图书中的Mastering级别,是有一定难度和深度的高级教程。
作为一位兼具科研和产业经验的专家,作者很巧妙地把握了理论和实践之间的平衡。他的做法是,先以比较通俗的方式讲解理论背景,再通过一些实际案例的直观示范来帮助读者理解相关的理论和方法。这样就让读者既能对各种预测分析方法的理论基础有更深入的认识,又能掌握在实际工作中运用这些技术的方法。此外,作者还提供了大量的参考资料和在线资源,供学有余力的读者进一步提高。
在翻译完成《基于R语言的自动数据收集:网络抓取和文本挖掘实用指南》一书后,我就在机械工业出版社编辑推荐的后续书单中挑出了这本书。我之所以会对这本书感兴趣,是因为之前那本书的核心内容是如何在线抓取数据,而现在这本书的核心内容则是如何对数据进行预测建模,两本书结合起来,就构成了一个完整的技术体系。
在多年的应用开发经历中,我一直更喜欢这种个人能掌控完整技术链条的工作风格,相信很多科研工作者和小团队的技术带头人也会有同感。其实这种风格和团队合作并不矛盾。实际上,只有具备了掌控全局的能力,才能提高团队合作的效率,降低沟通成本。
在之前那本书的读者评论里,有一条我想分享出来:“这本书值得一读,作者很诚实,确实一本书不能解决你所有的问题,但是可以给你一些思路,顺着这个思路不断扩展自己的知识,最后娴熟运用。阅读纸质书最大的好处就是系统性,书中很多知识都通过网络资源零散地学过,但始终不成体系,本书能给你一个很好的网络数据获取的系统框架。”
确实,学习技术的过程是无止境的,但一套科学的体系能让读者把握全局,少走弯路。本书就比较系统地讲解了有监督学习的预测建模技术。
作为译者,我想给读者的一条建议就是多动手。在技术领域,看懂了书不等于掌握了技术。读者如果没有经过实际的应用,对书中内容的理解不但达不到足够的深度,而且很容易遗忘。针对自己感兴趣的某个问题,先把模型设计出来,把代码调通,再对模型进行优化,最后得到理想的结果,这个过程是非常关键的。
比如在之前那本书的GitHub讨论区里就有一个很有意思的话题,有一位读者在尝试抓取某个新闻下的所有评论时遇到了问题,后来才发现是iFrame元素的原因,进而引出了一些原书中没有讲到的技术。在和我一起分析讨论并调通了代码后,这位读者觉得收获很大。
照例,我也给本书开通了一个GitHub讨论区,链接是:https://github.com/coderLMN/ MasteringPredictiveAnalyticsWithR/issues,欢迎读者去提出问题、解答和建议,参与讨论。
另外需要说明的一点是,我在译稿中加入了不少译者注,目的是帮助读者理解某些比较晦涩的概念、公式和代码。但是因为个人水平有限,译者注里的解释和说明难免会有不严谨甚至错误的地方,请读者多多指正。
最后,我要感谢我的家人在本书翻译过程中的付出和耐心。因为有他们的支持,我才能以一种精耕细作的方式完成本书的翻译工作。
封面图
目录
- 译者序
- 前言
- 第1章准备预测建模1
- 1.1模型1
- 1.1.1从数据中学习2
- 1.1.2模型的核心组成部分5
- 1.1.3我们的第一个模型:k近邻5
- 1.2模型的类型7
- 1.2.1有监督、无监督、半监督和强化学习模型7
- 1.2.2参数化和非参数化模型8
- 1.2.3回归和分类模型8
- 1.2.4实时和批处理机器学习模型9
- 1.3预测建模的过程9
- 1.3.1定义模型的目标9
- 1.3.2收集数据10
- 1.3.3选取模型11
- 1.3.4数据的预处理12
- 1.3.5特征工程和降维19
- 1.3.6训练和评估模型22
- 1.3.7重复尝试不同模型及模型的最终选择25
- 1.3.8部署模型25
- 1.4性能衡量指标25
- 1.4.1评估回归模型26
- 1.4.2评估分类模型26
- 1.5小结30
- 第2章线性回归31
- 2.1线性回归入门31
- 2.2简单线性回归33
- 2.3多元线性回归36
- 2.3.1预测CPU性能37
- 2.3.2预测二手汽车的价格38
- 2.4评估线性回归模型40
- 2.4.1残差分析42
- 2.4.2线性回归的显著性检验45
- 2.4.3线性回归的性能衡量指标47
- 2.4.4比较不同的回归模型49
- 2.4.5在测试集上的性能50
- 2.5线性回归的问题51
- 2.5.1多重共线性51
- 2.5.2离群值52
- 2.6特征选择53
- 2.7正则化55
- 2.7.1岭回归55
- 2.7.2最小绝对值收缩和选择算子56
- 2.7.3在R语言里实现正则化57
- 2.8小结59
- 第3章逻辑回归61
- 3.1利用线性回归进行分类61
- 3.2逻辑回归入门63
- 3.2.1广义线性模型63
- 3.2.2解释逻辑回归中的系数64
- 3.2.3逻辑回归的假设65
- 3.2.4最大似然估计65
- 3.3预测心脏病66
- 3.4评估逻辑回归模型69
- 3.4.1模型的偏差70
- 3.4.2测试集的性能73
- 3.5利用lasso进行正则化73
- 3.6分类指标74
- 3.7二元逻辑分类器的扩展76
- 3.7.1多元逻辑回归76
- 3.7.2有序逻辑回归80
- 3.8小结83
- 第4章神经网络84
- 4.1生物神经元84
- 4.2人工神经元85
- 4.3随机梯度下降86
- 4.3.1梯度下降和局部极小值88
- 4.3.2感知器算法88
- 4.3.3线性分离91
- 4.3.4逻辑神经元92
- 4.4多层感知器网络92
- 4.5预测建筑物的能源效率95
- 4.6重新进行玻璃类型预测99
- 4.7预测手写数字102
- 4.8小结106
- 第5章支持向量机108
- 5.1最大边缘分类108
- 5.2支持向量分类111
- 5.3核和支持向量机113
- 5.4预测化学品的生物降解115
- 5.5交叉验证118
- 5.6预测信用评分120
- 5.7用支持向量机进行多类别分类123
- 5.8小结123
- 第6章树形方法124
- 6.1树形模型的直观印象124
- 6.2训练决策树的算法126
- 6.2.1分类和回归树126
- 6.2.2回归模型树131
- 6.2.3CART分类树131
- 6.2.4C5.0133
- 6.3在合成的二维数据上预测类别归属关系134
- 6.4预测纸币的真实性136
- 6.5预测复杂的技能学习138
- 6.5.1在CART树里对模型参数进行调优140
- 6.5.2树模型中的变量重要性141
- 6.5.3回归模型树实用示例142
- 6.6小结143
- 第7章集成方法144
- 7.1装袋144
- 7.1.1边缘和袋外观测数据145
- 7.1.2用装袋预测复杂技能学习146
- 7.1.3用装袋预测心脏病146
- 7.1.4装袋的局限性150
- 7.2增强151
- 7.3预测大气中伽马射线的辐射152
- 7.4利用增强算法预测复杂技能学习156
- 7.5随机森林157
- 7.6小结159
- 第8章概率图模型161
- 8.1图论入门161
- 8.2贝叶斯定理163
- 8.3条件性独立163
- 8.4贝叶斯网络164
- 8.5朴素贝叶斯分类器165
- 8.6隐马尔可夫模型172
- 8.7预测启动子基因序列174
- 8.8预测英语单词里的字母特征179
- 8.9小结182
- 第9章时间序列分析184
- 9.1时间序列的基本概念184
- 9.2一些基本的时间序列185
- 9.2.1白噪声185
- 9.2.2随机漫步187
- 9.3平稳性188
- 9.4平稳时间序列模型189
- 9.4.1移动平均模型189
- 9.4.2自回归模型192
- 9.4.3自回归移动平均模型193
- 9.5非平稳时间序列模型194
- 9.5.1整合自回归移动平均模型194
- 9.5.2自回归条件异方差模型195
- 9.5.3广义自回归条件异方差模型195
- 9.6预测强烈地震196
- 9.7预测猞猁的诱捕199
- 9.8预测外汇汇率200
- 9.9其他时间序列模型202
- 9.10小结203
- 第10章主题建模204
- 10.1主题建模概况204
- 10.2隐含狄式分布205
- 10.2.1狄式分布205
- 10.2.2生成过程208
- 10.2.3拟合LDA模型209
- 10.3对在线新闻报道的主题进行建模210
- 10.3.1模型稳定性215
- 10.3.2找出主题数量216
- 10.3.3主题分布217
- 10.3.4单词分布219
- 10.3.5LDA扩展模型220
- 10.4小结220
- 第11章推荐系统222
- 11.1评分矩阵222
- 11.2协同过滤225
- 11.2.1基于用户的协同过滤225
- 11.2.2基于商品的协同过滤228
- 11.3奇异值分解228
- 11.4R语言和大数据231
- 11.5预测电影和笑话的推荐232
- 11.6加载和预处理数据233
- 11.7对数据进行探索234
- 11.7.1评估二元的top-N推荐236
- 11.7.2评估非二元的top -N推荐239
- 11.7.3评估每种预测方法241
- 11.8推荐系统的其他方法242
- 11.9小结243