我正在Mahout0.7中将数据加载到RandomAccessSparseVector中,但我不知道如何序列化它。如果我使用的是VectorWritable,我将能够像这样使用SequenceFile.Writer:writer=newSequenceFile.Writer(fs,conf,newPath("filename"),LongWritable.class,VectorWritable.class);不幸的是,没有RandomAccessSparseVectorWritable。一种选择是完全忘记稀疏vector并将数据加载到VectorWritable中并将其序列化。我想避
我正在使用Mahout0.7的MatrixMultiplicationJob来乘以一个大矩阵。但它总是使用1个maptask,这使得它变慢了。这可能是由于InputSplit强制映射器的数量为1。有没有一种方法可以在Hadoop/Mahout中有效地乘以矩阵或更改映射器的数量? 最佳答案 最终,Hadoop决定使用多少映射器。通常它会为每个HDFSblock(通常为64或128MB)使用一个映射器。如果您的数据小于该数据,则它太小而无法使用超过1个映射器。无论如何,您都可以通过将mapred.max.split.size设置为小于6
我正在尝试使用JavaMahout进行机器学习。我已经用MySQL下载了我想要的所有数据。我卡住的地方是当我的“SparseRowMatrix”类型变量完成所有计算和重新排列时。我根本不明白如何调用我认为合适的两种方法中的任何一种:1)org.apache.mahout.math.decomposer.lanczos.LanczosSolver2)org.apache.mahout.math.hadoop.decomposer.DistributedLanczosSolver此时任何建议都有帮助! 最佳答案 DistributedL
我正在尝试计算维基百科文档之间的行相似度。我有格式为Keyclass:classorg.apache.hadoop.io.TextValueClass:classorg.apache.mahout.math.VectorWritable的tf-idf向量。我正在从这里开始快速浏览文本分析:https://cwiki.apache.org/confluence/display/MAHOUT/Quick+tour+of+text+analysis+using+the+Mahout+command+line我创建了一个象夫矩阵如下:mahoutrowid\-iwikipedia-vector
我有大约6200个类别的大约4400万个训练示例。训练后,模型大小约为450MB在测试时,使用5个并行映射器(每个映射器都有足够的RAM),分类以每秒约4个项目的速度进行,这太慢了。如何加快速度?我能想到的一种方法是减少语料库这个词,但我担心会失去准确性。我将maxDFPercent设置为80。我想到的另一种方法是通过聚类算法运行项目,并根据经验最大化集群的数量,同时将每个类别中的项目限制在单个集群中。这将使我能够为每个集群构建单独的模型,从而(可能)减少训练和测试时间。还有其他想法吗?编辑:在得到下面给出的一些答案之后,我开始考虑通过运行聚类算法来进行某种形式的下采样,识别彼此“高度
我想将基于Hadoop的Mahout推荐系统与ApacheHive相结合。这样我生成的推荐将直接存储到我的Hive表中。有人知道这方面的类似教程吗? 最佳答案 基于Hadoop的Mahout推荐器可以将结果直接存储在HDFS中。Hive还允许您使用CREATEEXTERNALTABLErecommend_table在任何数据之上创建表模式它还指定了数据的位置(LOCATION'/home/admin/userdata';)。这样您就可以确保在将新数据写入该位置时-/home/admin/userdata那么它已经对Hive可用并且可
SO的Mahout社区您好!我有几个关于加速推荐计算的问题。在我的服务器上,我安装了没有Hadoop的Mahout。jRuby也用于推荐脚本。在数据库中,我有3k个用户和100k个项目(连接表中有270k个项目)。因此,当用户请求推荐时,简单的脚本开始工作:首先,它使用PGPoolingDataSource建立数据库连接,如下所示:connection=org.postgresql.ds.PGPoolingDataSource.new()connection.setDataSourceName("db_name");connection.setServerName("localhost
我是Mahout的新手。我需要将文本文件转换为向量以供后期分类。任何人都可以阐明以下这些问题吗?如何在mahout中将文本文件转换为矢量?文件格式如“用户名|关于项目的评论|评分”数据将是几个TB。那么我可以使用哪种算法来使用我想创建的向量进行分类?谢谢,阿伦 最佳答案 您可以查看这2个示例,它们在一定程度上也说明/解释了如何使用序列文件API。Here和here你绝对应该阅读这篇intro到文本分析 关于apache-ApacheMahout中的矢量化,我们在StackOverflow
我们使用EuclideanDistanceSimilarity类通过Hadoop计算一组项目的相似度。不幸的是,尽管与项目高度相似,但某些项目得到的结果为零或很少。我想我已经追踪到EuclideanDistanceSimilarity类中的这一行:doubleeuclideanDistance=Math.sqrt(normA-2*dots+normB);传递给sqrt的值有时是负数,在这种情况下返回NaN。我想也许某处应该有一个Math.abs,但我的数学还不够强大,无法理解欧几里德计算是如何重新排列的,所以不确定会产生什么影响。谁能更好地解释数学并确认是否doubleeuclidea
我需要进行一些繁重的机器学习计算。我在LAN上有少量闲置的机器。我需要多少台机器才能使用hadoop/mapreduce/mahout来分配我的计算,以便比在没有这些分布式框架的单台机器上运行要快得多?这是一个计算开销与yield的实际问题,因为我假设仅在2台机器之间分配总时间会比不分配和简单地在一台机器上运行更糟糕(只是因为分配计算所涉及的所有开销)。技术说明:一些繁重的计算非常可并行化。所有这些都是只要每台机器都有自己的原始数据副本。 最佳答案 “普通”Java程序和基于Hadoop、基于MapReduce的实现是截然不同的野兽