我需要做一些重型机器学习计算.我在LAN上闲置了少量机器.为了使用hadoop/mapreduce/mahout分配我的计算要比没有这些分布式框架的单个机器上运行要快得多,我需要多少台机器?这是计算开销与收益之间的实际问题,因为我假设仅在2台机器之间进行分配,总体时间比不分发和简单地在单个机器上运行更糟糕(仅仅因为分配计算涉及所有开销).
技术说明:一些繁重的计算是非常可并行的.只要每台机器都拥有自己的原始数据副本,所有这些都是有效的.
我目前正致力于生成像亚马逊那样的产品推荐的系统:"购买此产品的人也买了这个......"
目前的情景:
提取客户端的Google Analytics数据并将其插入数据库.
在客户的网站上,在产品页面加载时,进行API调用以获取正在查看的产品的建议.
当API收到产品ID作为请求时,它会在数据库中查找并检索(使用关联规则)推荐的产品ID并将其作为响应发送.
将处理这些产品ID的列表,以在客户端获取产品详细信息(图像,价格..)并显示在网站上.
目前我在AMAZON EC2上使用PHP和MYSQL与gapi包和REST api存储.
我的问题是: 现在,如果我必须选择以下内容,这将是实施上述概念的最佳选择.
PHP与SimpleDB或BIGQuery.
R语言与BIGQuery.
RHIPE-(R和hadoop)与SimpleDB.
Apache Mahout.
请帮忙!
我正在玩Mahout,发现FileDataModel接受格式的数据
userId,itemId,pref(long,long,Double).
Run Code Online (Sandbox Code Playgroud)
我有一些格式的数据
String,long,double
Run Code Online (Sandbox Code Playgroud)
在Mahout上使用此数据集的最佳/最简单方法是什么?
在一个项目中,有一个模块采用URL并确定它是"电子商务"还是"非电子商务"网站.
我尝试了以下方法:
使用Apache mahout,分类:URL --->采取html转储--->预处理html转储a)删除所有html标签
b)删除停止词(也称为常用词),如CDATA,href,value和,等等.
c)训练模型然后测试它.
在我用于训练的params之后
bin/mahout trainclassifier\-i training-data\-o bayes-model \> -type bayes -ng 1
测试:
/bin/mahout testclassifier \
-d test-data \
-m bayes-model \
-type bayes -source hdfs -ng 1 -method sequential
Run Code Online (Sandbox Code Playgroud)
准确度我得到73%,cbayes算法得到52%.
我想通过提取电子商务网站中的信息来改善预处理阶段,如"结帐按钮","付费朋友链接","价格/美元符号","货到付款","30天保证"等文本.
有关如何提取此信息或任何其他方式将网站预测为电子商务或非电子商务的建议吗?
解决问题最终检查我的解决方案在底部
最近我试图在Mahout in Action的chaper6(列出6.1~6.4)中运行推荐示例.但我遇到了一个问题,我已经google了一下,但我找不到解决方案.
这是问题所在:我有一对mapper-reducer
public final class WikipediaToItemPrefsMapper extends
Mapper<LongWritable, Text, VarLongWritable, VarLongWritable> {
private static final Pattern NUMBERS = Pattern.compile("(\\d+)");
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
Matcher m = NUMBERS.matcher(line);
m.find();
VarLongWritable userID = new VarLongWritable(Long.parseLong(m.group()));
VarLongWritable itemID = new VarLongWritable();
while (m.find()) {
itemID.set(Long.parseLong(m.group()));
context.write(userID, itemID);
}
}
}
public class WikipediaToUserVectorReducer
extends
Reducer<VarLongWritable, VarLongWritable, VarLongWritable, VectorWritable> {
public void reduce(VarLongWritable userID,
Iterable<VarLongWritable> itemPrefs, Context …Run Code Online (Sandbox Code Playgroud) 我们计划将Mahout用于电影推荐系统.我们还计划使用SVD进行模型构建.
当新用户来时,我们将要求他/她对一定数量的电影(比如10)进行评分.
问题是,为了向这个新用户提出建议,我们必须再次重建整个模型.
有更好的方法吗?
谢谢
如何从mahout执行图像分类?如何将图像转换为mahout分类算法接受的形式?是否有任何入门代码?请分享一些入门教程.mahout是图像分类的好库吗?
我正在使用mahout来运行k-means聚类,我在集群时遇到了识别数据条目的问题,例如我有100个数据条目
id data
0 0.1 0.2 0.3 0.4
1 0.2 0.3 0.4 0.5
... ...
100 0.2 0.4 0.4 0.5
Run Code Online (Sandbox Code Playgroud)
在集群之后,我需要从集群结果中获取id以查看哪个点属于哪个集群,但似乎没有方法来维护id.
在聚合合成控制数据的官方mahout示例中,只有数据被输入到没有id的mahout
28.7812 34.4632 31.3381 31.2834 28.9207 ...
...
24.8923 25.741 27.5532 32.8217 27.8789 ...
Run Code Online (Sandbox Code Playgroud)
并且集群结果只有cluster-id和point值:
VL-539{n=38 c=[29.950, 30.459, ...
Weight: Point:
1.0: [28.974, 29.026, 31.404, 27.894, 35.985...
2.0: [24.214, 33.150, 31.521, 31.986, 29.064
Run Code Online (Sandbox Code Playgroud)
但是没有point-id存在,那么,任何人都可以知道如何在进行mahout聚类时添加维持一个point-id?非常感谢你!
使用Hadoop在Mahout(使用Hadoop进行机器学习)中围绕SVM(支持向量机)进行的任何新开发?最近SVM实施被添加到Mahout中.我打算使用SVM.有人试过吗?互联网上提供的信息非常少.
任何帮助/指导表示赞赏.
是否可以配置Mahout在执行Hadoop上的推荐作业时从Cassandra集群检索输入数据?
我已经找到了关于这个主题的一些资源 - 请参阅http://www.acunu.com/2/post/2011/08/scaling-up-cassandra-and-mahout-with-hadoop.html,但是那里描述的指示有似乎不起作用(在mahout-0.6和mahout-0.7上都试过).对于istance itemIDIndexPath变量似乎不存在于RecommenderJob类中,也不存在于它扩展的抽象类中.