标签: mahout

如何获取或生成推荐系统的测试数据

我目前正在研究推荐系统,并想知道其他研究人员如何获取或生成测试数据来评估系统的性能?

testing test-data system mahout

10
推荐指数
2
解决办法
1313
查看次数

Hadoop文件系统中目录的路径是什么?

最近我开始学习Hadoop和Mahout.我想知道Hadoop文件系统目录中的目录路径.

在hadoop-1.2.1/conf/core-site.xml中,我指定了:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/Users/Li/File/Java/hdfstmp</value>
  <description>A base for other temporary directories.</description>
</property>
Run Code Online (Sandbox Code Playgroud)

在Hadoop文件系统中,我有以下目录:

lis-macbook-pro:Java Li$ hadoop fs -ls
Found 4 items
drwxr-xr-x   - Li supergroup          0 2013-11-06 17:25 /user/Li/output
drwxr-xr-x   - Li supergroup          0 2013-11-06 17:24 /user/Li/temp
drwxr-xr-x   - Li supergroup          0 2013-11-06 14:50 /user/Li/tweets-seq
-rw-r--r--   1 Li supergroup    1979173 2013-11-05 15:50 /user/Li/u.data
Run Code Online (Sandbox Code Playgroud)

现在/ user/Li /输出目录在哪里?

我试过了:

lis-macbook-pro:usr Li$ cd /user/Li/output
-bash: cd: /user/Li/output: No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以我认为/ user/Li/output是相对路径而不是绝对路径.

然后我在/ Users/Li/File/Java/hdfstmp中搜索它.有两个文件夹:

DFS

mapred

但我仍然无法在/ Users/Li/File/Java/hdfstmp中找到/ user/Li/output.

java filesystems hadoop path mahout

10
推荐指数
2
解决办法
4万
查看次数

K-means具有非常大的矩阵

我必须在一个非常庞大的矩阵上执行k-means聚类(大约300.000x100.000值超过100Gb).我想知道我是否可以使用R软件来执行此操作或weka.我的计算机是一个多处理器,具有8Gb的RAM和数百Gb的可用空间.

我有足够的空间进行计算,但加载这样的矩阵似乎是R的一个问题(我不认为使用bigmemory包会帮助我和大矩阵自动使用我的所有RAM然后我的交换文件,如果没有足够的空间).

所以我的问题是:我应该使用什么软件(最终与其他一些软件包或自定义设置相关联).

谢谢你的帮助.

注意:我使用linux.

r cluster-analysis weka k-means mahout

9
推荐指数
1
解决办法
5687
查看次数

用户从分类用户行为中分析Mahout

我正在尝试使用Mahout对用户进行聚类和分类.目前我处于规划阶段,我的想法与想法完全混合,因为我对这个领域相对较新,所以我坚持数据格式化.

假设我们有两个数据表(足够大).在第一个表中有用户及其操作.每个用户至少有一个动作,他们也可以有太多的动作.表中有大约10000个不同的user_actions和数百万条记录.

user        - user_action
u1          - a
u2          - b
u3          - a
u1          - c
u2          - c
u2          - c
u1          - b
u4          - f
u4          - e
u1          - e
u1          - d
u5          - d
Run Code Online (Sandbox Code Playgroud)

在另一个表中,有行动类别.每个动作可能没有或多个类别.共有60个类别.

user_action - category
a           - cat1
b           - cat2
c           - cat1
d           - NULL
e           - cat1, cat3
f           - cat4
Run Code Online (Sandbox Code Playgroud)

我将尝试使用Mahout构建用户分类模型,但我不知道应该做什么.我应该创建什么类型的用户向量?或者我真的需要用户向量吗?

我想我需要创造类似的东西;

u1 (a, c, b, e, d)
u2 (b, c, c)
u3 …
Run Code Online (Sandbox Code Playgroud)

classification cluster-analysis mahout

9
推荐指数
1
解决办法
146
查看次数

使用mahout和hadoop

我是一个新手试图了解如何将mahout和hadoop用于协同过滤.我有单节点cassandra设置.我想从cassandra获取数据

我在哪里可以找到hadoop的明确安装步骤,然后mahout与cassandra一起工作?

hadoop cassandra mahout

8
推荐指数
1
解决办法
9511
查看次数

Apache Mahout性能问题

在过去的几天里,我一直在与Mahout合作,试图创建一个推荐引擎.我正在研究的项目有以下数据:

  • 12M用户
  • 2M项目
  • 18M用户项布尔建议
  • 我现在正在试验我们拥有的全套的1/3(即18M建议中的6M).在我试过的任何配置中,Mahout都提供了相当令人失望的结果.一些建议需要1.5秒,而其他建议需要一分钟.我认为建议的合理时间应该在100毫秒左右.

    Mahout为什么这么慢?
    我正在使用以下JVM参数在Tomcat上运行应用程序(即使添加它们并没有太大的区别):

    -Xms4096M -Xmx4096M -da -dsa -XX:NewRatio=9 -XX:+UseParallelGC -XX:+UseParallelOldGC
    
    Run Code Online (Sandbox Code Playgroud)

    以下是我的实验的代码段:

    用户相似度1:

    DataModel model = new FileDataModel(new File(dataFile));
    UserSimilarity similarity = new CachingUserSimilarity(new LogLikelihoodSimilarity(model), model);
    UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, Double.NEGATIVE_INFINITY, similarity, model, 0.5);
    recommender = new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity);
    
    Run Code Online (Sandbox Code Playgroud)

    用户相似度2:

    DataModel model = new FileDataModel(new File(dataFile));
    UserSimilarity similarity = new CachingUserSimilarity(new LogLikelihoodSimilarity(model), model);
    UserNeighborhood neighborhood = new CachingUserNeighborhood(new NearestNUserNeighborhood(10, similarity, model), model);
    recommender = new GenericBooleanPrefUserBasedRecommender(model, neighborhood, similarity);
    
    Run Code Online (Sandbox Code Playgroud)

    项目相似度1:

    DataModel dataModel = new FileDataModel(new File(dataFile)); …
    Run Code Online (Sandbox Code Playgroud)

    performance recommendation-engine mahout

    8
    推荐指数
    1
    解决办法
    3514
    查看次数

    在Hadoop伪分布式模式下充分利用所有核心

    我在我的4核笔记本电脑上以伪分布式模式运行任务.如何确保有效使用所有核心.目前,我的工作跟踪器显示一次只执行一项工作.这是否意味着只使用一个核心?

    以下是我的配置文件.

    CONF /芯-site.xml中:

    <configuration>
       <property>
           <name>fs.default.name</name>
           <value>hdfs://localhost:9000</value>
       </property>
     </configuration>
    
    Run Code Online (Sandbox Code Playgroud)

    CONF/HDFS-site.xml中:

    <configuration>
      <property>
           <name>dfs.replication</name>
           <value>1</value>
      </property>
    </configuration>
    
    Run Code Online (Sandbox Code Playgroud)

    CONF/mapred-site.xml中:

    <configuration>
       <property>
            <name>mapred.job.tracker</name>
            <value>localhost:9001</value>  
       </property>
    
    </configuration>
    
    Run Code Online (Sandbox Code Playgroud)

    编辑:根据答案,我需要在mapred-site.xml中添加以下属性

     <property>
         <name>mapred.map.tasks</name> 
         <value>4</value> 
      </property>
      <property>
         <name>mapred.reduce.tasks</name> 
         <value>4</value> 
      </property>
    
    Run Code Online (Sandbox Code Playgroud)

    java hadoop mapreduce mahout

    8
    推荐指数
    2
    解决办法
    2577
    查看次数

    如何构建/运行这个简单的Mahout程序而不会出现异常?

    我想运行我在Mahout In Action中找到的代码:

    package org.help;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.SequenceFile;
    import org.apache.hadoop.io.Text;
    import org.apache.mahout.math.DenseVector;
    import org.apache.mahout.math.NamedVector;
    import org.apache.mahout.math.VectorWritable;
    
    public class SeqPrep {
    
        public static void main(String args[]) throws IOException{
    
            List<NamedVector> apples = new ArrayList<NamedVector>();
    
            NamedVector apple;
    
            apple = new NamedVector(new DenseVector(new double[]{0.11, 510, 1}), "small round green apple");        
    
            apples.add(apple);
    
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(conf);
            Path path = new Path("appledata/apples");
    
            SequenceFile.Writer writer = new SequenceFile.Writer(fs,  conf, path, Text.class, …
    Run Code Online (Sandbox Code Playgroud)

    java hadoop mahout

    8
    推荐指数
    2
    解决办法
    2万
    查看次数

    在mahout-0.6上的"Mahout in Action"中运行示例代码时获取IOException

    我正在学习Mahout并阅读"Mahout in Action".

    当我尝试在第7章SimpleKMeansClustering.java中运行示例代码时,弹出了一个异常:

    线程"main"中的异常java.io.IOException:错误的值类:0.0:null不是org.apache.hadoop.io.SequenceFile $ Reader.next中的类org.apache.mahout.clustering.WeightedPropertyVectorWritable(SequenceFile.java: 1874)在SimpleKMeansClustering.main(SimpleKMeansClustering.java:95)

    我在mahout-0.5上成功了这个代码,但在mahout-0.6上我看到了这个异常.即使我将目录名从clusters-0更改为clusters-0-final,我仍然面临此异常.

        KMeansDriver.run(conf, vectors, new Path(canopyCentroids, "clusters-0-final"), clusterOutput, new TanimotoDistanceMeasure(), 0.01, 20, true, false);//First, I changed this path.
    
        SequenceFile.Reader reader = new SequenceFile.Reader(fs,  new Path("output/clusters/clusteredPoints/part-m-00000"), conf);//I double checked this folder and filename.
    
        IntWritable key = new IntWritable();
        WeightedVectorWritable value = new WeightedVectorWritable();
        int i=0;
        while(reader.next(key, value)) {
            System.out.println(value.toString() + " belongs to cluster " + key.toString());
            i++;
        }
        System.out.println(i);
        reader.close();
    
    Run Code Online (Sandbox Code Playgroud)

    有没有人对这个例外有任何想法?我一直试图解决它很长时间,并没有任何想法.互联网上的消息来源很少.

    提前致谢

    k-means mahout

    7
    推荐指数
    1
    解决办法
    2537
    查看次数

    如何在spark mllib中进行基于项目的推荐?

    在Mahout中,使用API​​方法支持基于项目的推荐:

    ItemBasedRecommender.mostSimilarItems(int productid, int maxResults, Rescorer rescorer)
    
    Run Code Online (Sandbox Code Playgroud)

    但是在Spark Mllib中,似乎ALS中的API可以获取推荐的产品,但必须通过以下方式提供userid:

    MatrixFactorizationModel.recommendProducts(int user, int num)
    
    Run Code Online (Sandbox Code Playgroud)

    有没有办法获得基于类似产品的推荐产品,而无需提供用户ID信息,类似于mahout执行基于项目的推荐的方式.

    recommendation-engine mahout apache-spark apache-spark-mllib

    7
    推荐指数
    1
    解决办法
    6303
    查看次数