深入浅出Mahout(Mahout in Action)-目录

原创文章,转载请注明: 转载自慢慢的回味

本文链接地址: 深入浅出Mahout(Mahout in Action)-目录

1 了解 Apache Mahout

1.1 Mahout的历史

1.2 Mahout机器学习主题

推荐引擎
集群
分类

1.3 Mahout和Hadoop的大型可伸缩

1.4 设置Mahout环境

Java和IDEs
安装Maven
安装Mahout
安装Hadoop

1.5 总结

第一部分 推荐

2 推荐系统介绍

2.1 定义一个推荐系统

2.2 运行第一个推荐引擎

创建输入
创建推荐系统
分析输出

2.3 评估一个推荐系统

训练数据和评分
运行推荐评估系统
获取结果

2.4 评估精度和重现能力

运行RecommenderIRStatsEvaluator
精度和重现能力问题

2.5 评估GroupLens数据集

分解输入
使用其它推荐系统试验

2.6 总结

3 推荐系统数据表示

3.1 参考数据表示

参考数据对象
参考数据数组和实现
提高集合速度
FastByIDMap和FastIDSet

3.2 内存中的数据模型

通用数据模型
文件类型数据
可刷新组件
更新文件
数据库类型数据
JDBC和MySQL
配置JNDI 33 用程序配置

3.3 复制没有参考值的参考数据

什么时候忽略参考值
使用内存表示没有参考值的参考数据
选择兼容的实现方式

3.4 总结

4 创建推荐系统

4.1 理解基于用户的推荐系统

什么时候推荐是错误的
什么时候推荐是正确的

4.2 探索基于用户的推荐系统

算法
用GenericUserBasedRecommender实现算法
使用GroupLens探索
探索用户的邻居数据
固定大小的邻居数据
基于阈值的邻居数据

4.3 探索相似性度量标准

基于皮尔逊相关性相似性度量
皮尔逊相似性问题
利用权值
使用欧几里得距离定义相似性
使用余弦定义相似性
用斯皮尔曼等级相关系数定义相似性
使用Tanimoto系数定义忽略参考值的相似性
使用对数似然函数测试比较得到更好的相似度量
推断参考值

4.4 基于商品的推荐系统

算法
探索基于商品的推荐系统

4.5 Slope-one推荐系统

算法
Slope-one实践
不同存储和内存考虑
预先计算

4.6 新的实验性推荐系统

基于奇异值分解的推荐系统
基于线性插值的推荐系统
基于集群的推荐系统

4.7 对比其它推荐系统

注入基于内容的计算到Mahout中
深入基于内容的推荐系统
和基于模型的推荐系统比较

4.8 总结

5 把推荐系统用于生产

5.1 分析一个来自dating网站的样例数据

5.2 找到一个有效的推荐系统

基于用户的推荐系统
基于商品的推荐系统
Slope-one推荐系统
评估精度和重现能力
评估性能

5.3 注入领域特性信息

利用定制的相似度量
推荐
基于内容
用IDRescorer修改推荐系统
合并性别信息到IDRescorer中
组建一个定制的推荐系统

5.4 向匿名用户推荐

使用PlusAnonymousUserDataModel添加临时用户
汇聚匿名用户

5.5 创建一个可以在网站上使用的推荐系统

打包一个WAR文件
测试部署

5.6 更新检测推荐系统

5.7 总结

6 分布式推荐系统

6.1 分析Wikipedia数据

规模化
评估分布计算的好处和坏处

6.2 设计一个分布的基于商品的算法

构建一个共现矩阵
计算出用户矢量
产生推荐结果
理解结果
分布实现

6.3 使用MapReduce实现分布式算法

介绍MapReduce
转换为MapReduce: 生成用户矢量
转换为MapReduce: 计算共现矩阵
转换为MapReduce: 考虑矩阵乘法
转换为MapReduce: 使用部分集做矩阵乘法
转换为MapReduce: 计算推荐

6.4 使用Hadoop运行MapReduces

部署Hadoop
使用Hadoop运行推荐算法
配置mappers和reducers

6.5 伪分布推荐系统

6.6 推荐系统的其他使用方式

在云端运算
推荐系统的非常规用法

6.7 总结

第二部分 集群

8 数据表示

8.1 可视化矢量

把数据转为矢量
准备Mahout使用的矢量

8.2 把文本文档转为矢量

使用TF-IDF改进权值
使用n-gram集合计算单词的依赖性

8.3 从文档生成矢量

8.4 使用归一化改进矢量

8.5 总结

9 Mahout中的集群算法

9.1 K均值集群

关于K均值
运行K均值集群
使用canopy集群找到合适的K
样例学习: 使用K均值集群新闻文章

9.2 超越K均值: 集群概览

技术163
不同种类的集群问题
不同的集群方法

9.3 模糊K均值集群

运行模糊K均值集群
怎样的模糊算好?
样例学习: 使用模糊K均值集群新闻文章

9.4 基于模型的集群

K均值的缺点
狄利克雷集群
运行一个基于模型的集群例子

9.5 使用隐含狄利克雷分布(LDA)的主题模型

理解隐含狄利克雷分析
TF-IDF与LDA
调优LDA的参数
样例学习: 找到新闻文章中的主题
主题模型的应用

9.6 总结

10 评估改进集群质量

10.1 检查集群输出

10.2 分析集群输出

距离度量与特征选择
集群之间和集群内部的距离
集群的混合和重叠

10.3 改进集群质量

改进文档矢量的生成
写一个自定义的距离度量

10.4 总结

11 把集群应用与生产上

11.1 运行集群到hadoop上的快速入门例子

在hadoop本地集群上运行
Hadoop参数的配置

11.2 调优集群性能

避免处理器受限操作的性能陷阱
避免I/O受限操作的性能陷阱

11.3 批量和在线集群

样例学习: 在线新闻集群
样例学习: 集群维基百科文章

11.4 总结

12 现实世界的集群程序

12.1 在Twitter上查找相似的用户

数据处理与特征权值化
在特征选择上避免常见的陷阱

12.2 Last.fm上的艺术家建议标签

标签建议的共现矩阵
创建Last.fm艺术家词典
把Last.fm标签转成以音乐家为特征的矢量
在Last.fm数据上运行K均值集群

12.3 分析Stack Overflow数据集

得到Stack Overflow数据集
在Stack Overflow数据上集群的问题

12.4 总结

第三部分 分类

13 分类介绍

13.1 为什么使用Mahout分类

13.2 分类系统的原理

分类,推荐和集群的不同
分类应用

13.3 分类是怎么工作的

模型
训练,测试与生产
预测变量与目标变量
记录,字段和值
预测变量值的四种类型
监督与非监督学习

13.4 典型的分类过程流程

第一步: 训练分类模型
第二步: 评估分类模型
第三步: 使用模型在生产上分类

13.5 手把手的简单分类例子

数据与挑战
训练一个模型来进行着色分类: 初步想法
选择一个算法来分类
提高着色分类器的性能

13.6 总结

14 训练分类器

14.1 提取特征来构建一个Mahout分类器

14.2 预处理元数据到分类数据

转换元数据
处理一个市场数据的例子

14.3 把分类数据转化为矢量

用矢量表示数据
使用Mahout APIs hash特征

14.4 使用SGD分类对20 newsgroups数据进行分类

预览数据
从 20 newsgroups数据中获取特征
20 newsgroups数据的训练代码

14.5 选择一个算法来训练分类器

非并行但功能强大: 使用SGD和SVM
功能强大的贝叶斯分类: 使用朴素贝叶斯和互补朴素贝叶斯
复杂结构上的优势: 使用随机森林

14.6 使用朴素贝叶斯对20 newsgroups数据进行分类

数据分解
训练朴素贝叶斯分类器
测试朴素贝叶斯分类器

14.7 总结

15 评估和调优分类器

15.1 Mahout中的分类器评估

获取快速的回应
决定什么是好的方法
认识不同的错误代价

15.2 分类器评估API

计算AUC
混淆矩阵和熵矩阵
计算平均log似然度
分析模型
使用SGD对20 newsgroups分类的性能

15.3 什么时候一个分类器不好

目标泄露
不好的特征提取

15.4 调优性能

调节问题
调节分类器

15.5 总结

16 部署分类器

16.1 在大型系统中部署

问题的范围
按需优化特征提取
按需优化矢量
部署一个可伸缩的分类服务

16.2 确定规模和速度的要求

多大就可以了?
平衡大和速度

16.3 在大系统上构建一个训练管道

获取与重新训练可伸缩的数据
反规范化和下采样
训练陷阱
高速的读取编码数据

16.4 集成Mahout分类器

集成的关节问题
模型序列化

16.5 例子: 基于Thrift的分类器

运行一个分类器服务器
获取分类服务

16.6 总结

17 样例学习: Shop It To Me

17.1 为什么Shop It To Me选择Mahout

Shop It To Me做什么342
为什么Shop It To Me需要一个分类系统
Mahout解决剩下的问题

17.2 Email销售系统的通常结构

17.3 训练模型

定义分类工程的目标
使用时间分区
避免目标泄露
学习算法调整
特征矢量编码

17.4 提速分类器

特征向量的线性组合
模型分数的线性膨胀

17.5 总结

本作品采用知识共享署名 4.0 国际许可协议进行许可。

发表回复