`
Tristan_S
  • 浏览: 382998 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mahout 学习

 
阅读更多
---------------------
运行
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
淘宝会在一些页面侧面推荐一些你所查询过的物品


推荐算法分为基于用户, 基于物品的

基于物品 (物以类聚)更加实用
基于物品的算法容易理解,更适合于大数据, 而且如果产品小于用户数的话, 性能更优。

公式
物物之间的共生矩阵 * 该用户偏好值的向量
共生矩阵 - 两件商品被同时购买的次数 - 针对所有选定的用户
ABCD
ANA344
B3NA32
C43NA3
D423NA


原理
如果用户喜欢物品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
word1w2w3
document112
d23
d31011



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
----------------------------





分享到:
评论

相关推荐

    mahout学习

    Apache Mahout作为一个强大的开源机器学习库,提供了多种聚类算法,其中KMeans是最为经典且广泛应用的一种。本文将深入探讨Mahout中的KMeans算法,帮助读者掌握这一重要的数据分组工具。 一、KMeans算法简介 ...

    mahout学习1---推荐引擎的构建1

    推荐引擎是大数据时代下,利用机器学习技术帮助用户发现、推荐个性化内容的重要工具,尤其在电商、媒体和娱乐等领域有着广泛的应用。本文将探讨推荐引擎的构建过程,重点关注其核心组成部分,包括数据模型、用户...

    mahout api 学习资料

    mahout_help,mahout的java api帮助文档,可以帮你更轻松掌握mahout

    mahout各种学习包

    Mahout是Apache软件基金会的一个开源项目,专注于提供可扩展的机器学习库。它构建在Hadoop之上,使得大规模数据集的机器学习算法得以并行化处理,极大地提升了效率。在这个"mahout各种学习包"中,我们可以期待找到一...

    Mahout机器学习领域分布式计算框架

    ### Mahout机器学习领域分布式计算框架 #### 一、引言 随着大数据时代的到来,如何高效地处理和分析海量数据成为了一个重要的课题。Apache Mahout作为一款基于Hadoop的机器学习库,为解决这一问题提供了强大的工具...

    mahout-core-0.9.jar+mahout-core-0.8.jar+mahout-core-0.1.jar

    Apache Mahout是一个基于Apache Hadoop的数据挖掘库,专注于大规模机器学习算法的实现。这个压缩包包含的是Mahout项目不同版本的核心库,分别是mahout-core-0.9.jar、mahout-core-0.8.jar和mahout-core-0.1.jar。...

    mahout机器学习改进solr查询结果

    ### Mahout机器学习改进Solr查询结果 #### 1. 概述 随着互联网技术的发展,搜索引擎成为人们获取信息的主要工具之一。为了提高搜索引擎的用户体验,优化查询结果变得尤为重要。本篇文章将详细介绍如何利用Apache ...

    大数据系列9:Mahout – 机器学习

    Apache Mahout是一个基于Hadoop的数据挖掘库,专注于提供机器学习算法,是大数据处理中实现预测分析和模式识别的重要工具。本篇文章将深入探讨Mahout在大数据环境下的应用及其核心功能。 Mahout这个名字来源于“象...

    使用mahout机器学习改进solr查询结果

    ### 使用Mahout机器学习改进Solr查询结果 #### 1. 概述 搜索引擎的核心功能之一是提供准确、相关的查询结果。随着用户行为的变化和技术的进步,优化查询结果以更好地匹配用户的实际需求变得越来越重要。本篇文章将...

    maven_mahout_template-mahout-0.8

    通过`maven_mahout_template-mahout-0.8`,开发者不仅可以学习如何在实际项目中使用Mahout,还可以深入理解Maven的项目管理机制,提升自身的开发效率。同时,对于希望涉足机器学习领域的开发者,这是一个极好的起点...

    mahout机器学习实验数据

    该数据包含两列,数据之间用空格进行划分,主要用来进行聚类分析,可以直接作为mahout机器学习平台的实验数据

    mahout所需jar包

    马哈多(Mahout)是Apache软件基金会的一个开源项目,专注于提供可扩展的机器学习库。它基于Hadoop,这意味着它能够利用分布式计算来处理大规模数据集。 Mahout的目标是帮助开发人员构建智能应用程序,如推荐系统、...

    mahout聚类算法

    Mahout 聚类算法是数据挖掘和机器学习领域中的一种重要算法,它可以将相似的数据点聚集在一起,以便更好地理解和分析数据。Mahout 聚类算法可以分为多种类型,如 Canopy、KMeans、Fuzzy-KMeans、Spectral Clustering...

    大数据Mahout实践指南

    《大数据Mahout实践指南》是一本深入探讨大数据分析与机器学习技术的专业书籍,尤其侧重于Apache Mahout框架的应用。Mahout是Apache软件基金会的一个开源项目,致力于提供可扩展的、易于使用的机器学习库,用于构建...

    [Mahout] Windows下Mahout单机安装

    Apache Mahout是一个开源机器学习库,它提供了一系列的可扩展、分布式算法,涵盖了推荐系统、分类、聚类等多个机器学习领域。在Windows环境下安装Mahout,可以帮助开发者在本地环境中进行快速的机器学习项目开发和...

    Mahout in Action 2012

    Apache Mahout是一个Apache开源数据挖掘和机器学习项目,它提供了一系列基于Java的工具和库,用于构建可扩展的推荐系统、聚类算法以及其他机器学习应用。Mahout的目标是简化数据挖掘任务的实现,使其不仅仅局限于...

    Mahout源码

    Apache Mahout 是一个基于Java的开源机器学习库,旨在简化大规模数据集上的机器学习算法实现。它为开发者提供了一系列预构建的、可扩展的机器学习算法,包括分类、聚类、推荐系统以及协同过滤等。Mahout 基于Apache ...

    mahout0.9配置傻瓜说明

    Mahout的设计目的是为了在大规模数据集上进行机器学习任务,其核心算法都是基于Apache Hadoop实现的,因此能够很好地利用分布式计算的优势。 #### 二、环境准备 在进行Mahout 0.9的安装与配置之前,我们需要确保...

    mahout Algorithms源码分析

    Mahout是一个Apache Software Foundation(ASF)旗下的开源项目,主要用途是提供可扩展的机器学习算法的实现,帮助开发人员更方便快捷地创建智能应用程序。Mahout包含了很多算法的实现,包括聚类(Clustering)、...

Global site tag (gtag.js) - Google Analytics