亚马逊EC2与PiCloud

时间:2012-03-11 06:55:54

标签: numpy hadoop amazon-ec2 machine-learning mahout

我们是学生试图处理大约1.4亿条记录的数据大小并试图运行一些机器学习算法。我们是整个云解决方案和mahout实现的新手。目前我们已经在postgresql数据库中设置它们但是当前的实现没有扩展,并且在经过多次性能调整后,读/写操作似乎非常慢。因此我们计划寻求基于云的服务。

我们已经探索了一些可能的替代方案。

  1. 基于亚马逊云的服务(Mahout实施)
  2. Picloud与scikits学习(我们计划在NumPy中使用HDF5格式)
  3. 如果有的话,请推荐任何其他替代品。
  4. 以下是以下问题

    1. 哪会产生更好的结果(转身时间)并且具有成本效益?请提及我们提出的任何其他替代方案。
    2. 如果我们设置亚马逊服务,我们应该如何拥有数据格式?如果我们使用dynamodb,成本会上升吗?
    3. 由于

5 个答案:

答案 0 :(得分:7)

这取决于您想要解决的机器学习问题的性质。我建议你首先将数据集子采样到适合内存的东西(例如,假设稀疏表示,每个样本有几百个非零特征的100k样本)。

然后尝试一些机器学习算法,可以在scikit-learn中扩展到大量样本:

  • SGDClassifier或MultinomialNB,如果您想进行监督分类(如果您有要在数据集中预测的分类标签)
  • SGDRegressor,如果你想进行有监督的回归(如果你有连续的目标变量来预测)
  • MiniBatchKMeans聚类以进行无监督聚类(但是默认情况下没有客观的方法来量化结果聚类的质量)。
  • ...

执行网格搜索以查找模型超参数的最佳值(例如,正则化程序alpha和SGDC分类器的通过次数n_iter)并使用交叉验证评估性能。

完成后,重试2x更大的数据集(仍然适合内存)并查看它是否显着提高了预测准确性。如果情况并非如此,那么不要浪费时间尝试在群集上对其进行并行化以在完整数据集上运行它,因为它不会产生任何更好的结果。

如果你做了你能做的事情,将数据分成碎片,然后在每个节点上分片数据,通过picloud独立了解每个节点上的SGDClassifier或SGDRegressor模型并收回权重(coef_intercept_)然后计算平均权重以构建最终的线性模型,并在数据集的某些保留切片上对其进行评估。

了解有关错误分析的更多信息。看看如何绘制学习曲线:

答案 1 :(得分:5)

PiCloud是建立在AWS之上的,所以无论哪种方式,你都会在一天结束时使用亚马逊。问题是你需要多少基础设施才能将所有内容连接在一起。 PiCloud提供了一些免费的使用方式来完成它的步伐,所以你可能会在最初拍摄它。我自己没有使用它,但显然它们试图为机器学习类应用程序提供易于部署。

似乎这是尝试结果,而不是云项目,所以我要么考虑使用亚马逊的其他服务,除了直接EC2或其他一些其他软件,如PiCloud或Heroku或其他可以照顾的服务引导。

答案 2 :(得分:0)

AWS有一个program in place for supporting educational users,因此您可能希望对该计划进行一些研究。

答案 3 :(得分:0)

如果你正在寻找一些Numpy加速,你应该看看numba: https://github.com/numba/numba

不能解决您的云扩展问题,但可能会缩短计算时间。

答案 4 :(得分:-1)

我刚刚在PiCloud&之间做了一个comparison Amazon EC2>可能会有帮助。