mahout系列----minhash聚类

原创 2013年12月05日 00:25:19

Map:

Vector featureVector = features.get();

    if (featureVector.size() < minVectorSize) {
      return;
    }
    // Initialize the MinHash values to highest
    for (int i = 0; i < numHashFunctions; i++) {
      minHashValues[i] = Integer.MAX_VALUE;
    }

    for (int i = 0; i < numHashFunctions; i++) {
      for (Vector.Element ele : featureVector.nonZeroes()) {
        int value = hashValue ? (int) ele.get() : ele.index();
        bytesToHash[0] = (byte) (value >> 24);
        bytesToHash[1] = (byte) (value >> 16);
        bytesToHash[2] = (byte) (value >> 8);
        bytesToHash[3] = (byte) value;
        int hashIndex = hashFunction[i].hash(bytesToHash);
        //if our new hash value is less than the old one, replace the old one
        if (minHashValues[i] > hashIndex) {
          minHashValues[i] = hashIndex;
        }
      }
    }
    // output the cluster information
    for (int i = 0; i < numHashFunctions; i++) {
      StringBuilder clusterIdBuilder = new StringBuilder();
      for (int j = 0; j < keyGroups; j++) {
        clusterIdBuilder.append(minHashValues[(i + j) % numHashFunctions]).append('-');
      }
      //remove the last dash
      clusterIdBuilder.deleteCharAt(clusterIdBuilder.length() - 1);

      cluster.set(clusterIdBuilder.toString());

      if (debugOutput) {
        vector.set(featureVector);
        context.write(cluster, vector);
      } else {
        context.write(cluster, item);
      }
    }


 protected void reduce(Text cluster, Iterable<Writable> points, Context context)
    throws IOException, InterruptedException {
    Collection<Writable> pointList = Lists.newArrayList();
    for (Writable point : points) {
      if (debugOutput) {
        Vector pointVector = ((VectorWritable) point).get().clone();
        Writable writablePointVector = new VectorWritable(pointVector);
        pointList.add(writablePointVector);
      } else {
        Writable pointText = new Text(point.toString());
        pointList.add(pointText);
      }
    }
    if (pointList.size() >= minClusterSize) {
      context.getCounter(Clusters.ACCEPTED).increment(1);
      for (Writable point : pointList) {
        context.write(cluster, point);
      }
    } else {
      context.getCounter(Clusters.DISCARDED).increment(1);
    }
  }
 



Mahout MinHash代码阅读理解

MinHash的介绍请参看http://rdc.taobao.com/team/jm/archives/2434 初始化 Configuration conf = getConf();...
  • softwarehe
  • softwarehe
  • 2013年01月21日 11:00
  • 1371

文档的Jaccard相似度, MinHash, 及MinHash签名

MinHash  算法由 Andrei Broder (1997) 提出的, 它是一种快速计算海量文档相似度的近似方法。开始被用在AltaVista 搜索引擎上,用于检测两个duplicate web...
  • dannyPolyu
  • dannyPolyu
  • 2013年07月21日 18:06
  • 3100

MinHashing基本原理

转载http://roba.rushcj.com/?p=533&cpage=1#comment-5985无意中发现这本貌似不错的书 Mining of Massive Datasets,随便记一下学到...
  • chengyangyy
  • chengyangyy
  • 2015年08月23日 14:41
  • 3789

mahout 源码解析之聚类--MinHash

MinHash作为一种聚类技术,具体的原理请参见淘宝的博客。 在Mahout的实现中其位于包org.apache.mahout.clustering.minhash中,HashFunction为一个接...
  • theonlytank2011
  • theonlytank2011
  • 2013年07月30日 14:52
  • 1228

文本相似度Shingling和Minhash算法

1、测试案例: 2、程序流程: 3、源代码示例: 4、运行结果:
  • Remoa_Dengqinyi
  • Remoa_Dengqinyi
  • 2017年06月06日 23:13
  • 2055

实验报告:运用shingling+minhash+lsh方法对文档相似性进行分析

实验报告 实验名称:文档相似性分析 一、实验目的 1.学习利用hadoop处理大数据。 2. 通过实验加强mapreduce编程能力。  3. 进一步理解shingling+minhash+...
  • u014686180
  • u014686180
  • 2015年05月15日 13:13
  • 1310

既生Mahout,何生Spark MLlib ?

Apache Mahout与Spark MLlib均是Apache下的项目,都是机器学习算法库,并且现在mahout已经不再接受MapReduce的作业了,也向Spark转移。那两者有什么关系呢?我们...
  • m0epNwstYk4
  • m0epNwstYk4
  • 2017年12月13日 00:00
  • 515

[转]文档去重算法:SimHash和MinHash

simhash与重复信息识别来源:http://grunt1223.iteye.com/blog/964564在工作学习中,我往往感叹数学奇迹般的解决一些貌似不可能完成的任务,并且十分希望将这种喜悦分...
  • heiyeshuwu
  • heiyeshuwu
  • 2015年03月07日 16:47
  • 40623

记录下minhash计算流程

以下是从教科书截取过来的讲解的非常清晰,记录一下: Now, let us simulate the algorithm for computing the signature matr...
  • jialeheyeshu
  • jialeheyeshu
  • 2016年05月13日 11:25
  • 345

mahout下的Hadoop平台上的Kmeans算法实现

Mahout主要有协同过滤、聚类和分类三种算法的实现。现在我们就用Mahout来实现经典的Kmeans聚类算法。并且在Hadoop平台上跑出个结果!...
  • u011439289
  • u011439289
  • 2015年04月05日 15:23
  • 2574
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mahout系列----minhash聚类
举报原因:
原因补充:

(最多只允许输入30个字)