编辑推荐
通过提供分布式数据存储和并行计算框架,Hadoop已经从集群计算的抽象演变成了大数据操作系统。本书从数据科学的视角,介绍Hadoop集群计算和分析,重点关注可构建的具体分析、数据仓储技术和高阶数据流。
书中主要内容如下:
.Hadoop和集群计算背后的核心概念
.使用设计模式和并行分析算法创建分布式数据分析作业
.在分布式环境下使用Apache Hive和HBase进行数据管理、数据挖掘和数据仓储
.使用Sqoop和Apache Flume从关系数据库采集数据
.使用Apache Pig和Spark DataFrame编写复杂的Hadoop和Spark应用程序
.通过Spark MLlib运用分类、聚类和协同过滤等机器学习技术
“我还未见过比本书更好的Hadoop框架讲解。”
——Marck Vaisman,博思艾伦咨询公司数据科学家、乔治?华盛顿大学兼职教授、数据社区DC联合创始人
“每个概念都得以清晰明了的解读,在容易忽略细节的部分又都有补充资源,供读者深入学习,这对于专业人员和初学者都非常友好。本书中的讲解总是与示例相辅相成,让读者在学习之后又能投入实战,深入了解系统功能——我认为这才是熟悉新领域的关键所在。”
——读者
内容简介
通过提供分布式数据存储和并行计算框架,Hadoop已经从一个集群计算的抽象演化成了一个大数据的操作系统。本书旨在通过以可读且直观的方式提供集群计算和分析的概览,为数据科学家深入了解特定主题领域铺平道路,从数据科学家的视角介绍Hadoop集群计算和分析。本书分为两大部分,* 一部分从非常高的层次介绍分布式计算,讨论如何在集群上运行计算;* 二部分则重点关注数据科学家应该了解的工具和技术,意在为各种分析和大规模数据管理提供动力。
作者简介
Benjamin Bengfort,数据科学家,目前正在马里兰大学攻读博士学位,方向为机器学习和分布式计算;熟悉自然语言处理、Python数据科学、Hadoop和Spark分析等。
Jenny Kim,经验丰富的大数据工程师,不仅进行商业软件的开发,在学术界也有所建树,在海量数据、机器学习以及生产和研究环境的Hadoop实施方面有深入研究。目前任职于Cloudera的Hue团队。
目录
前言 ix
* 一部分 分布式计算入门
* 1章 数据产品时代 2
1.1 什么是数据产品 2
1.2 使用Hadoop构建大规模数据产品 4
1.2.1 利用大型数据集 4
1.2.2 数据产品中的Hadoop 5
1.3 数据科学流水线和Hadoop生态系统 6
1.4 小结 8
* 2 章 大数据操作系统 9
2.1 基本概念 10
2.2 Hadoop架构 11
2.2.1 Hadoop集群 12
2.2.2 HDFS 14
2.2.3 YARN 15
2.3 使用分布式文件系统 16
2.3.1 基本的文件系统操作 16
2.3.2 HDFS文件权限 18
2.3.3 其他HDFS接口 19
2.4 使用分布式计算 20
2.4.1 MapReduce:函数式编程模型 20
2.4.2 MapReduce:集群上的实现 22
2.4.3 不止一个MapReduce:作业链 27
2.5 向YARN 提交MapReduce 作业 28
2.6 小结 30
第3 章 Python 框架和Hadoop Streaming 31
3.1 Hadoop Streaming 32
3.1.1 使用Streaming在CSV 数据上运行计算 34
3.1.2 执行Streaming作业 38
3.2 Python 的MapReduce框架 39
3.2.1 短语计数 42
3.2.2 其他框架 45
3.3 MapReduce进阶 46
3.3.1 combiner 46
3.3.2 partitioner 47
3.3.3 作业链 47
3.4 小结 50
第4 章 Spark内存计算 52
4.1 Spark基础 53
4.1.1 Spark栈 54
4.1.2 RDD 55
4.1.3 使用RDD 编程 56
4.2 基于PySpark的交互性Spark 59
4.3 编写Spark应用程序 61
4.4 小结 67
第5 章 分布式分析和模式 69
5.1 键计算 70
5.1.1 复合键 71
5.1.2 键空间模式 74
5.1.3 pair与stripe 78
5.2 设计模式 80
5.2.1 概要 81
5.2.2 索引 85
5.2.3 过滤 90
5.3 迈向* 后一英里分析 95
5.3.1 模型拟合 96
5.3.2 模型验证 97
5.4 小结 98
* 二部分 大数据科学的工作流和工具
第6 章 数据挖掘和数据仓 102
6.1 Hive 结构化数据查询 103
6.1.1 Hive 命令行接口(CLI) 103
6.1.2 Hive 查询语言 104
6.1.3 Hive 数据分析 108
6.2 HBase 113
6.2.1 NoSQL 与列式数据库 114
6.2.2 HBase 实时分析 116
6.3 小结 122
第7 章 数据采集 123
7.1 使用Sqoop 导入关系数据 124
7.1.1 从MySQL 导入HDFS 124
7.1.2 从MySQL 导入Hive 126
7.1.3 从MySQL 导入HBase 128
7.2 使用Flume 获取流式数据 130
7.2.1 Flume 数据流 130
7.2.2 使用Flume 获取产品印象数据 133
7.3 小结 136
第8 章 使用高 级API 进行分析 137
8.1 Pig 137
8.1.1 Pig Latin 138
8.1.2 数据类型 142
8.1.3 关系运算符 142
8.1.4 用户定义函数 143
8.1.5 Pig 小结 144
8.2 Spark 高 级API 144
8.2.1 Spark SQL 146
8.2.2 DataFrame 148
8.3 小结 153
第9 章 机器学习 154
9.1 使用Spark 进行可扩展的机器学习 154
9.1.1 协同过滤 156
9.1.2 分类 161
9.1.3 聚类 163
9.2 小结 166
* 10 章 总结:分布式数据科学实战 167
10.1 数据产品生命周期 168
10.1.1 数据湖泊 169
10.1.2 数据采集 171
10.1.3 计算数据存储 172
10.2 机器学习生命周期 173
10.3 小结 175
附录A 创建Hadoop 伪分布式开发环境 176
附录B 安装Hadoop 生态系统产品 184
术语表 193
关于作者 211
关于封面 211
机器学习赋能的智能推荐系统:构建个性化用户体验 在信息爆炸的时代,如何将海量数据转化为用户真正感兴趣的内容,是互联网产品和服务面临的巨大挑战。智能推荐系统应运而生,它利用先进的机器学习技术,深入理解用户偏好,并据此推送个性化的信息、商品或服务,极大地提升了用户体验和商业价值。本书将带您深入探索机器学习在智能推荐系统中的核心应用,从理论基础到实践落地,为您构建强大、高效的推荐引擎提供全方位的指导。 第一部分:智能推荐系统基础与理论 在正式深入机器学习之前,我们需要建立对智能推荐系统基本概念和工作原理的清晰认识。这一部分将为您打下坚实的基础,理解推荐系统为何存在,以及它所解决的核心问题。 推荐系统的核心价值与应用场景: 我们将首先探讨推荐系统在当今数字世界中的重要性。从电子商务平台的商品推荐,到内容平台的文章、视频推送,再到社交网络的兴趣匹配,推荐系统无处不在,并已成为驱动业务增长的关键引擎。您将了解到推荐系统如何帮助企业提高用户参与度、转化率、用户留存率,并发现新的商业机会。 推荐系统基本原理与类型: 推荐系统并非单一的技术,而是多种方法和策略的集合。我们将详细介绍推荐系统的几种主流类型,包括: 基于内容的推荐(Content-Based Filtering): 这种方法通过分析用户过去喜欢的内容的属性,来推荐与之相似的新内容。例如,如果用户喜欢科幻小说,系统就会推荐其他具有科幻元素的书籍。我们将深入探讨特征提取、内容表示等关键技术。 协同过滤(Collaborative Filtering): 这是最广泛应用的推荐技术之一。它基于“物以类聚,人以群分”的原则,通过分析用户之间的相似性来做出推荐。我们将区分用户-user协同过滤和物品item-user协同过滤,并讲解其背后的数学模型,如矩阵分解(Matrix Factorization)和近邻算法(Nearest Neighbor)。 混合推荐(Hybrid Recommender Systems): 现实世界中,单一的推荐方法往往难以满足所有需求。本书将重点讲解如何结合内容和协同过滤的优点,构建更强大、更鲁棒的混合推荐系统,克服单一方法的局限性,如冷启动问题(Cold-Start Problem)。 推荐系统评估指标: 如何衡量一个推荐系统的优劣?我们将详细介绍一系列关键的评估指标,包括准确率(Precision)、召回率(Recall)、F1分数(F1-Score)、平均精度(Mean Average Precision, MAP)、归一化折损累计增益(Normalized Discounted Cumulative Gain, NDCG)等,并讲解它们的含义、计算方法以及在不同场景下的适用性。理解这些指标是优化推荐算法、持续改进系统性能的关键。 推荐系统面临的挑战: 在实际应用中,推荐系统会遇到各种各样的挑战,例如: 冷启动问题(Cold-Start Problem): 如何为新用户或新物品提供有效的推荐。 数据稀疏性(Data Sparsity): 用户对物品的评分或交互数据非常稀疏,给模型训练带来困难。 可解释性(Explainability): 为什么系统会做出这样的推荐?提升推荐的可解释性可以增强用户信任。 多样性与新颖性(Diversity and Novelty): 如何在保证准确性的同时,提供用户可能感兴趣的、但并非显而易见的新内容。 实时性(Real-time): 如何快速响应用户不断变化的需求,提供实时的推荐。 我们将对这些挑战进行深入分析,并为后续的机器学习方法奠定基础。 第二部分:机器学习在推荐系统中的核心算法与模型 在建立起推荐系统基础认知后,我们将重点转向机器学习如何在推荐系统中发挥核心作用。本部分将涵盖多种经典的机器学习算法以及在推荐领域前沿的应用。 监督学习在推荐中的应用: 分类与回归模型: 我们可以将推荐问题转化为一个预测问题。例如,预测用户是否会点击某个物品(分类问题),或预测用户对某个物品的评分(回归问题)。我们将介绍逻辑回归(Logistic Regression)、支持向量机(Support Vector Machines, SVM)、决策树(Decision Trees)、随机森林(Random Forests)和梯度提升机(Gradient Boosting Machines, GBM)等算法,并阐述它们如何应用于推荐场景。 排序学习(Learning to Rank, LTR): 许多推荐场景的核心是排序,即如何将最相关的物品排在前面。我们将介绍LTR的基本思想,以及Pointwise、Pairwise和Listwise等不同的学习框架,并讲解一些代表性的LTR模型,如LambdaMART。 无监督学习与降维技术: 聚类算法: K-Means、DBSCAN等聚类算法可以用于用户分群或物品分组,从而为推荐提供基础。 降维技术(Dimensionality Reduction): 主成分分析(Principal Component Analysis, PCA)和奇异值分解(Singular Value Decomposition, SVD)等技术可以将高维的用户-物品交互矩阵降至低维,捕捉用户和物品的重要潜在特征,这对于协同过滤模型的构建至关重要。 深度学习在推荐系统中的崛起: 深度学习模型凭借其强大的特征学习能力,在近年来极大地推动了推荐系统的发展。 神经网络(Neural Networks)基础: 我们将回顾多层感知机(Multi-Layer Perceptron, MLP)等基础神经网络模型。 深度神经网络(DNNs)用于推荐: 学习如何使用DNN来学习用户和物品的隐藏表示(Embeddings),从而进行更精准的预测。 卷积神经网络(CNNs)在内容理解与特征提取中的应用: CNNs在处理文本、图像等非结构化数据时表现出色,可以用于提取物品的内容特征,从而改进基于内容的推荐。 循环神经网络(RNNs)与序列化推荐: RNNs及其变种(如LSTM、GRU)擅长处理序列数据,可以捕捉用户随时间变化的偏好,实现对用户行为序列的建模,构建更具动态性的推荐模型。 图神经网络(GNNs)在复杂关系建模中的应用: 推荐系统本质上可以建模为图结构,用户和物品是节点,交互是边。GNNs能够有效地在图结构上进行信息传播和学习,能够更好地捕捉用户-用户、物品-物品之间以及用户-物品之间的复杂关系。 因子分解机(Factorization Machines, FM)与深度因子分解机(DeepFM): FM及其变种是结合了线性模型和因子分解模型的强大模型,能够有效地处理稀疏特征,并在推荐领域取得优异成果。DeepFM则进一步融合了DNN的特征交叉能力,进一步提升了推荐效果。 嵌入技术(Embeddings)的精髓: 用户和物品的嵌入(Embeddings)是现代推荐系统的基石。我们将深入讲解如何学习低维稠密的向量表示(Embeddings)来捕捉用户的兴趣和物品的属性,例如: Word2Vec与Item2Vec: 借鉴自然语言处理的思路,将用户行为序列或物品序列视为“句子”,从而学习物品的嵌入。 矩阵分解(Matrix Factorization)的嵌入视角: 从矩阵分解的角度理解如何学习用户和物品的潜在因子(Embedding)。 深度学习模型中的Embedding层: 如何在DNN、RNN等模型中使用Embedding层来学习高质量的向量表示。 第三部分:推荐系统的工程实践与优化 理论再好,也需要落地。本部分将聚焦于如何将机器学习算法转化为实际可用的推荐系统,并进行持续的优化。 数据预处理与特征工程: 推荐系统的性能很大程度上取决于数据的质量和特征的有效性。我们将深入探讨: 数据收集与清洗: 如何从各种数据源收集用户行为数据、物品属性数据等,并进行有效的清洗和去重。 特征提取与选择: 如何从原始数据中提取出对推荐有意义的特征,包括用户特征(年龄、性别、地理位置、历史行为)、物品特征(类别、标签、描述、图像)、上下文特征(时间、地点、设备)等。 特征工程技术: One-hot编码、归一化、离散化、交叉特征等常用技术。 模型训练与调优: 训练框架与工具: 介绍TensorFlow, PyTorch, Scikit-learn等主流机器学习框架,以及如何利用它们构建和训练推荐模型。 超参数调优(Hyperparameter Tuning): 网格搜索、随机搜索、贝叶斯优化等技术,以及如何找到最优的模型超参数。 模型正则化与过拟合(Overfitting)的解决: L1/L2正则化、Dropout等技术,以及如何防止模型在训练集上表现好,但在新数据上表现差。 推荐系统的架构设计: 构建一个可扩展、高可用的推荐系统需要精心的架构设计。 离线计算与在线服务: 如何区分离线批量计算和在线实时推理。 召回(Recall)与排序(Ranking)流水线: 介绍常用的两阶段推荐架构,先通过高效的召回算法召回大量候选物品,再通过精细的排序模型对候选集进行排序。 候选集生成(Candidate Generation)策略: 基于物品相似度、用户相似度、热门物品、基于模型的召回等多种策略。 实时推荐系统构建: 如何处理实时用户行为,并快速更新推荐结果。 A/B测试与持续迭代: A/B测试设计与实施: 如何科学地设计A/B测试,评估新模型或新策略的效果。 多臂老虎机(Multi-Armed Bandit)算法: 在探索与利用之间取得平衡,不断优化推荐策略。 在线学习(Online Learning): 如何让推荐模型实时地从新数据中学习,快速适应用户偏好变化。 关注用户体验与伦理问题: 个性化与惊喜度(Serendipity): 如何在提供用户喜爱的内容的同时,偶尔给予用户惊喜,拓宽其兴趣视野。 推荐系统中的偏差(Bias): 数据偏差、算法偏差如何导致不公平的推荐结果,以及如何缓解。 隐私保护(Privacy Protection): 在利用用户数据进行推荐的同时,如何保护用户的隐私。 本书的目的是通过理论讲解、算法剖析和实践指导,帮助读者建立起一套完整的机器学习推荐系统知识体系。无论您是希望深入理解推荐算法的原理,还是希望动手构建自己的推荐系统,都能从中获得宝贵的知识和技能。让我们一起踏上这场智能推荐的探索之旅,为用户创造更加个性化、更具价值的体验。