---------------------
运行
hadoop jar mahout-examples-0.9-job.jar org.apache.mahout.cf.taste.hadoop.item.RecommenderJob --input /input2/intro.txt --output /out3 --usersFile /users.txt --booleanData --similarityClassname SIMILARITY_COOCCURRENCE
mahout不与hadoop2.2兼容,需要重新编译下载
csdn: mahout0.9 jar支持hadoop2
http://download.csdn.net/download/fansy1990/7166055
运行n长时间 多个mapper reducer 但是出来的结果还是不对
用户3的结果 3 [106:3.3,102:3.0833333,103:3.0625]
但是正确答案是 103
吐槽一下 mahout太山寨了
-----------------------
Mahout用两种方式来实现推荐引擎
1, 单机
用基于用户,物品,模型的方式
-- 出来的结果很奇怪,很多都不对
2, 分布式
共现矩阵
-- 简单易于理解
-- 易用性好, 可以支持评分或不评分
---------------
推荐------------------
场景
1, 推荐用户可能感兴趣的商品
2, 推荐用户可能认识的好友
3, 分析大量文章之间的超链接关系
4, 去哪里吃饭
实际运用
当当,豆瓣会展现买了X1的人也会买X2
淘宝会在一些页面侧面推荐一些你所查询过的物品
推荐算法分为基于用户, 基于物品的
基于物品 (物以类聚)更加实用
基于物品的算法容易理解,更适合于大数据, 而且如果产品小于用户数的话, 性能更优。
公式
物物之间的共生矩阵 * 该用户偏好值的向量
共生矩阵 - 两件商品被同时购买的次数 - 针对所有选定的用户
| A | B | C | D |
A | NA | 3 | 4 | 4 |
B | 3 | NA | 3 | 2 |
C | 4 | 3 | NA | 3 |
D | 4 | 2 | 3 | NA |
原理
如果用户喜欢物品A, 而且物品A和物品B同时出现的次数很多, 推荐物品B
基于用户 (人以群分)
从相邻用户中找到推荐物品。
问题是
如何找到相邻用户,选取几个相邻用户作为参考呢?
寻找相邻用户的方法(排除随机寻找)
1, 皮尔逊相关系数 (默认) PersonCorrelationSimiliarity
线性关系, 偏好值一起增大或减小。
类似于余弦相似性,用角度来判断。
再用权重来优化 (Weighting)
2, 欧式距离 最简单
计算偏好度的直线距离
3, 对数似然 LogLikelihood
当偏好度是个boolean型的, 即没有具体的数字时使用。
是谷本系数的增强版
4, 基于聚类
将物品推荐给相似的用户族,而不是具体用户
-----------
分类(有监督学习)----------
分类场景
1, 过滤垃圾邮件
2, 信用卡欺诈
3, 保险,电信预测客户流失
步骤
1, 提取特征值
a> 预处理 产生用作训练样本的可分类数据(将多张表的数据转成一行记录)
b> 转换成向量 Vector -- 就是一个map的形式
2, 选择/训练算法 生成model目录
Logistic (S函数, 梯度下降)
朴素贝叶斯 (概率统计)
P(yes|E) = P(E1|yes) * P(E2|yes) * P(E3|yes) * P(E4|yes) * P(yes) /P(E)
P(no|E) = P(E1|no) * P(E2|no) * P(E3|no) * P(E4|no) * P(no) /P(E)
随机森林(先训练大量的简单的分类器,然后通过投票机制得出唯一的结果)
k近邻算法 (距离计算,但是运行量大)
决策树 (香农熵, 信息增益)
3, 检验结果
summary
confusion matrix
归一化数值
将特征值的数据都换算成0-1, 避免结果被特征中的大值所左右。
文本转换成向量
文本数据是海量的, 其中蕴含大量的知识,文本转换成向量是发现知识的第一步。
向量空间模型 Vector Space Model
| word1 | w2 | w3 |
document1 | 1 | 2 | |
d2 | | 3 | |
d3 | 10 | | 11 |
TF-IDF 词频-逆文档频率
如果包含词语w的文档越少, IDF就越大, 说明w具有很好的类别区分能力。
问题
自带的贝叶斯只能针对20news, 如果自己新建一个简单的测试用例,就无法运行。
mahout
优点:
和hadoop无缝集成 / 有现存的API,可以直接调用
缺点:
缺少对底层算法的理解 / 出了问题难以解决
python
优点: 对底层比较理解
缺点: 和hadoop集成, 算法都需要自己来写
-----------
聚类(无监督学习)-----------
--聚类有点像自动分类
场景:
新闻聚类
查看排名靠前的关键字
地图中的中心点 center hub
K-Means步骤
1, 寻找聚类中心
2, 计算每个点到聚类中心的距离, 并将每个点划分到离该点最近的中心(聚类)。
3, 计算聚类中所有点的坐标平均值,并将这个平均值设为新的聚类中心。
循环上述步骤, 直到聚类收敛 即本次迭代与上次迭代的结果相同。
运行reuters的实例, 可以看到Top Terms(每个聚类中的前10个词的排名)
Top Terms:
comp.graphics => 68.00439453125
jpeg => 55.91266632080078
gif => 29.98711585998535
image => 28.28740692138672
jfif => 27.233814239501953
graphics => 26.90915870666504
tiff => 26.35403060913086
phigs => 25.4221248626709
siggraph => 24.714284896850586
3d => 23.99508666992187
-------------
脚本-----------------
--------------------------------
基于20news 的贝叶斯分类测试
mahout prepare20newsgroups -p 20news-bydate-train/ -o 20news-train/ -a org.apache.lucene.analysis.standard.StandardAnalyzer -c UTF-8
mahout prepare20newsgroups -p 20news-bydate-test/ -o 20news-test/ -a org.apache.lucene.analysis.standard.StandardAnalyzer -c UTF-8
mahout trainclassifier -i 20news-train -o 20news-model -type cbayes -ng 1
mahout testclassifier -d 20news-test -m 20news-model -type cbayes -ng 1 -method sequential
---------------------------------
-------------------------------
logistic分类 - donut.csv
mahout trainlogistic --input donut.csv \
--output ./model \
--target color --categories 2 \
--predictors x y --types numeric \
--features 20 --passes 100 --rate 50
mahout runlogistic --input donut.csv --model ./model \
--auc --confusion
------------------------------
--------------------------
查看mahout生成的文件内容
mahout seqdumper -s part-r-00000 -o part-0
--------------------------
------------------------------
基于20news-test 的聚类测试
mahout seqdirectory -c UTF-8 -i 20news-test/ -o 20news-seqfiles
mahout seq2sparse -i 20news-seqfiles/ -o 20news-vectors -ow
mahout kmeans -i 20news-vectors/tfidf-vectors/ -c 20news-initial-clusters -o 20news-kmeans-clusters -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure -cd 1.0 -k 20 -x 20 -cl
#mahout clusterdump --seqFileDir 20news-kmeans-clusters/clusters-1 -d 20news-vectors/dictionary.file-0 -dt sequencefile -n 10 -o 2.txt
mahout clusterdump --seqFileDir 20news-kmeans-clusters/clusters-1 -p 20news-kmeans-clusters/clusteredPoints/ -d 20news-vectors/dictionary.file-0 -dt sequencefile -n 10 -o 3.txt
----------------------------
分享到:
相关推荐
Apache Mahout作为一个强大的开源机器学习库,提供了多种聚类算法,其中KMeans是最为经典且广泛应用的一种。本文将深入探讨Mahout中的KMeans算法,帮助读者掌握这一重要的数据分组工具。 一、KMeans算法简介 ...
推荐引擎是大数据时代下,利用机器学习技术帮助用户发现、推荐个性化内容的重要工具,尤其在电商、媒体和娱乐等领域有着广泛的应用。本文将探讨推荐引擎的构建过程,重点关注其核心组成部分,包括数据模型、用户...
mahout_help,mahout的java api帮助文档,可以帮你更轻松掌握mahout
Mahout是Apache软件基金会的一个开源项目,专注于提供可扩展的机器学习库。它构建在Hadoop之上,使得大规模数据集的机器学习算法得以并行化处理,极大地提升了效率。在这个"mahout各种学习包"中,我们可以期待找到一...
### Mahout机器学习领域分布式计算框架 #### 一、引言 随着大数据时代的到来,如何高效地处理和分析海量数据成为了一个重要的课题。Apache Mahout作为一款基于Hadoop的机器学习库,为解决这一问题提供了强大的工具...
Apache Mahout是一个基于Apache Hadoop的数据挖掘库,专注于大规模机器学习算法的实现。这个压缩包包含的是Mahout项目不同版本的核心库,分别是mahout-core-0.9.jar、mahout-core-0.8.jar和mahout-core-0.1.jar。...
### Mahout机器学习改进Solr查询结果 #### 1. 概述 随着互联网技术的发展,搜索引擎成为人们获取信息的主要工具之一。为了提高搜索引擎的用户体验,优化查询结果变得尤为重要。本篇文章将详细介绍如何利用Apache ...
Apache Mahout是一个基于Hadoop的数据挖掘库,专注于提供机器学习算法,是大数据处理中实现预测分析和模式识别的重要工具。本篇文章将深入探讨Mahout在大数据环境下的应用及其核心功能。 Mahout这个名字来源于“象...
### 使用Mahout机器学习改进Solr查询结果 #### 1. 概述 搜索引擎的核心功能之一是提供准确、相关的查询结果。随着用户行为的变化和技术的进步,优化查询结果以更好地匹配用户的实际需求变得越来越重要。本篇文章将...
通过`maven_mahout_template-mahout-0.8`,开发者不仅可以学习如何在实际项目中使用Mahout,还可以深入理解Maven的项目管理机制,提升自身的开发效率。同时,对于希望涉足机器学习领域的开发者,这是一个极好的起点...
该数据包含两列,数据之间用空格进行划分,主要用来进行聚类分析,可以直接作为mahout机器学习平台的实验数据
马哈多(Mahout)是Apache软件基金会的一个开源项目,专注于提供可扩展的机器学习库。它基于Hadoop,这意味着它能够利用分布式计算来处理大规模数据集。 Mahout的目标是帮助开发人员构建智能应用程序,如推荐系统、...
Mahout 聚类算法是数据挖掘和机器学习领域中的一种重要算法,它可以将相似的数据点聚集在一起,以便更好地理解和分析数据。Mahout 聚类算法可以分为多种类型,如 Canopy、KMeans、Fuzzy-KMeans、Spectral Clustering...
《大数据Mahout实践指南》是一本深入探讨大数据分析与机器学习技术的专业书籍,尤其侧重于Apache Mahout框架的应用。Mahout是Apache软件基金会的一个开源项目,致力于提供可扩展的、易于使用的机器学习库,用于构建...
Apache Mahout是一个开源机器学习库,它提供了一系列的可扩展、分布式算法,涵盖了推荐系统、分类、聚类等多个机器学习领域。在Windows环境下安装Mahout,可以帮助开发者在本地环境中进行快速的机器学习项目开发和...
Apache Mahout是一个Apache开源数据挖掘和机器学习项目,它提供了一系列基于Java的工具和库,用于构建可扩展的推荐系统、聚类算法以及其他机器学习应用。Mahout的目标是简化数据挖掘任务的实现,使其不仅仅局限于...
Apache Mahout 是一个基于Java的开源机器学习库,旨在简化大规模数据集上的机器学习算法实现。它为开发者提供了一系列预构建的、可扩展的机器学习算法,包括分类、聚类、推荐系统以及协同过滤等。Mahout 基于Apache ...
Mahout的设计目的是为了在大规模数据集上进行机器学习任务,其核心算法都是基于Apache Hadoop实现的,因此能够很好地利用分布式计算的优势。 #### 二、环境准备 在进行Mahout 0.9的安装与配置之前,我们需要确保...
Mahout是一个Apache Software Foundation(ASF)旗下的开源项目,主要用途是提供可扩展的机器学习算法的实现,帮助开发人员更方便快捷地创建智能应用程序。Mahout包含了很多算法的实现,包括聚类(Clustering)、...