`
小网客
  • 浏览: 1241320 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mahout之MinHash实现

 
阅读更多

MinHash可用于聚类或者计算相似度,详情概述参见"MinHash概述及举例"博客,此处阐述mahout的MinHash实现,mahout用minhash来聚类。

涉及主要类:

 

org.apache.mahout.clustering.minhash.MinHashDriver
org.apache.mahout.clustering.minhash.MinHashMapper
org.apache.mahout.clustering.minhash.MinHashReducer

 

 参数说明如下:

 

 

Path input //输入数据文件,为SequenceFileInputFormat格式,其key为Text value为VectorWritable
Path output //输出数据文件,由debugOutput决定,true时为为SequenceFileOutputFormat false为TextOutputFormat,其key为Text value为VectorWritable或者Text
int minClusterSize    //最小族数,默认为5,达不到此值直接丢弃
int minVectorSize    //最小参与计算的vector size默认为5
String hashType      //hash type,有 LINEAR, POLYNOMIAL, MURMUR, MURMUR3,默认LINEAR
int numHashFunctions  //hash 函数个数,默认10,也就是hash次数
int keyGroups         //此值比较有意思,后面详述
int numReduceTasks  //reduce个数
boolean debugOutput //决定输出数据文件的数据格式和value值

 

Mapper执行过程:

 

1.针对Vector的每个元素执行hash运算,每次获取最小hash值,执行numHashFunctions次,共获取numHashFunctions个最小hash值

2.mahout分族采用的是keyGroups的形式去操作,也就是说需要分的族数,这样就利用每次hash的最小值执行组合操作,keyGroups为1那么不进行任何组合,只要hash最小值有相同的那么就在一个族中

3.针对keyGroups举例如下:

numHashFunctions为3

V1:1,2,3

V2:3,2,1

如果keyGroups为1那么V1和V2在一个族中,属于 1,2,3这三个族

如果keyGroups为2那么V1组合1-2,2-3,3-1;V2组合3-2,2-1,1-3那么V1和V2不在一个族中

也就是说keyGroups可以避免每次Hash的冲突

reduce执行过程:

1.获取每个组的Collection<Writable>

2.如果Collection<Writable>大于指定的minClusterSize 那么保留,反之丢弃

 

0
1
分享到:
评论

相关推荐

    人工智能-推荐系统-新闻推荐-基于Mahout的新闻推荐系统

    Mahout:整体框架,实现了协同过滤 Deeplearning4j,构建VSM Jieba:分词,关键词提取 HanLP:分词,关键词提取 Spring Boot:提供API、ORM 关键实现 基于用户的协同过滤 直接调用Mahout相关接口即可 选择不同...

    基于Mahout实现协同过滤推荐算法的电影推荐系统.zip

    本项目"基于Mahout实现协同过滤推荐算法的电影推荐系统"旨在利用Apache Mahout这一开源机器学习库,构建一个能够为用户推荐个性化电影的系统。以下将详细介绍该系统的相关知识点: 1. **协同过滤推荐算法**: 协同...

    mahout聚类算法

    RandomAccessSparseVector 是基于浮点数的 HashMap 实现的,key 是整形 (int) 类型,value 是浮点数(double) 类型,它只存储向量中不为空的值,并提供随机访问。SequentialAccessVector 是一个整形 (int) 类型和...

    基于Mahout协同过滤实现图书推荐系统-书籍推荐系统-源码

    这里我们关注的是一个基于Apache Mahout实现的图书推荐系统。Mahout是一个流行的开源机器学习库,特别适用于构建大规模的推荐系统。 首先,我们需要了解协同过滤的基本概念。协同过滤是一种推荐系统的方法,它主要...

    基于Mahout协同过滤实现图书推荐系统-书籍推荐系统源码+项目说明.zip

    基于Mahout协同过滤实现图书推荐系统_书籍推荐系统源码+项目说明.zip 基于协同过滤的书籍推荐系统,图书推荐系统 最新版本,在原先手动计算皮尔逊相似度和评分矩阵的基础上添加了Mahout实现的协同过滤推荐算法. ...

    Mahout之Item-based应用使用

    在Mahout中实现Item-based协同过滤,我们需要以下步骤: 1. **数据准备**:导入用户-项目评分数据,通常是CSV格式,包含用户ID、项目ID和评分。可以使用`SequentialAccessSparseVector`或`DenseVector`来表示评分...

    基于用户的协同过滤算法Mahout实现

    该资源是在Eclipse平台里,使用Mahout库的API,实现基于用户的协同过滤算法,从而进行商品推荐。 软件环境是:win7 64位 +Eclipse4.4 + jdk1.6, 用到了7个.jar包, 分别为:commons-logging-1.2.jar, commons-...

    MovieRecommender基于Mahout实现协同过滤推荐算法的电影推荐系统^

    本文将深入探讨一个基于Apache Mahout实现的电影推荐系统——MovieRecommender,它利用协同过滤推荐算法,为用户提供个性化的电影推荐。 协同过滤是一种广泛应用于推荐系统的机器学习方法,主要分为用户-用户协同...

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

    Mahout是建立在Hadoop之上的,利用其分布式计算能力处理大规模数据集。这使得Mahout能够处理超出单台机器内存和计算能力的数据。 3. **版本差异**: - mahout-core-0.1.jar:这是早期版本,可能包含的基本功能,...

    mahout所需jar包

    Mahout提供了对K-Means算法的高效实现,支持在Hadoop集群上并行执行。这使得处理大规模数据集成为可能,提高了算法的性能。在给定的压缩包中,包含了`mahout-distribution-0.5`版本,这个版本的Mahout已经包含了运行...

    maven_mahout_template-mahout-0.8

    Mahout的目标是创建易于使用的、可扩展的、并行的机器学习库,使得开发者能够轻松地实现推荐系统、分类和聚类等复杂任务。 `maven_mahout_template-mahout-0.8`这个项目模板,是为使用Maven构建的Mahout项目提供的...

    基于mahout的协同过滤算法实现

    Apache Mahout是一个用于构建大规模机器学习算法的库,它构建于Hadoop之上,能够处理海量数据。Mahout提供了多种机器学习算法,包括聚类、分类和推荐等,其中协同过滤算法是推荐系统中的重要组成部分。 三、Mahout...

    mahout Algorithms源码分析

    樊哲是Mahout的积极学习者和实践者,他在CSDN上分享了关于Mahout算法的解析与案例实战的博客,获得了“CSDN2013博客之星”的荣誉。樊哲的经验表明,虽然Hadoop平台上算法开发一般需要耗费很长时间,但Mahout已经实现...

    MAHOUT实战(中文版)

    2. **机器学习简介**:书中会介绍机器学习的基础知识,包括监督学习、无监督学习和半监督学习,并解释如何在Mahout中实现这些算法。 3. **Mahout的算法库**:涵盖各种算法,如K-means聚类、SVD(奇异值分解)用于...

    mahout源码

    Mahout实现的朴素贝叶斯分类器支持多元高斯模型和多项式模型,适应不同类型的特征数据。 3. **Mahout的朴素贝叶斯实现** Mahout提供了两种朴素贝叶斯分类器:`NaiveBayesModel`和`MultinomialNB`。前者适用于离散...

    大数据Mahout实践指南

    除了基本的机器学习算法,书中还会涉及深度学习的概念,尽管Mahout自身并不直接支持深度学习框架如TensorFlow或Keras,但会讲解如何将Mahout与其他深度学习工具结合,以实现更复杂的学习任务。例如,可以利用Mahout...

    [Mahout] Windows下Mahout单机安装

    【标题】:“Mahout在Windows下的单机安装教程” 【内容详解】 Apache Mahout是一个开源机器学习库,它提供了一系列的可扩展、分布式算法,涵盖了推荐系统、分类、聚类等多个机器学习领域。在Windows环境下安装...

    Mahout in Action 2012

    Mahout的目标是简化数据挖掘任务的实现,使其不仅仅局限于机器学习和数据挖掘专家,而是能让更多的开发者能够方便地利用这些高级技术。Mahout在设计时考虑到了可扩展性,因此它能够处理大量数据集,并在分布式计算...

Global site tag (gtag.js) - Google Analytics