加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

机器学习 – 机器学习和大数据

发布时间:2020-12-14 04:51:40 所属栏目:大数据 来源:网络整理
导读:一开始我想描述我目前的立场和想要实现的目标。 我是一名处理机器学习的研究人员。到目前为止,已经通过了涵盖机器学习算法和社会网络分析的几个理论课程,因此已经获得了实现机器学习算法和实时数据馈送的一些理论概念。 在简单的例子上,算法运行良好,运
一开始我想描述我目前的立场和想要实现的目标。

我是一名处理机器学习的研究人员。到目前为止,已经通过了涵盖机器学习算法和社会网络分析的几个理论课程,因此已经获得了实现机器学习算法和实时数据馈送的一些理论概念。

在简单的例子上,算法运行良好,运行时间是可以接受的,而大数据代表了一个问题,如果尝试运行在PC上的算法。关于软件,我有足够的经验来实现文章中的任何算法,或者使用任何语言或IDE来设计我自己的程序(迄今为止已经使用Matlab,Java与Eclipse,.NET …),但到目前为止还没有太多的设置经验 – 基础设施。我已经开始学习Hadoop,NoSQL数据库等,但不知道什么策略是考虑到学习时间限制的最佳方法。

最终目标是建立一个分析大数据的工作平台,着重实施自己的机器学习算法,将其全部投入生产,准备通过处理大数据解决有用的问题。

由于主要重点是实施机器学习算法,我想问一下现有的运行平台是否存在,提供足够的CPU资源来提供大量数据,上传自己的算法,只需处理数据,而无需考虑分布式处理。

然而,这样的平台是否存在,我想获得足够大的照片,以便能够在一个可以投入生产的团队中工作,整个系统根据特定的客户需求量身定做。例如,零售商想要分析每日采购,所以所有的日常记录都必须上传到一些基础设施,足以通过使用定制机器学习算法来处理数据。

将以上所有内容放在简单的问题上:如何为现实生活中的问题设计一个定制的数据挖掘解决方案,主要关注机器学习算法,并将其投入生产,如果可能,通过使用现有的基础架构,如果没有,设计分布式系统通过使用Hadoop或任何框架)。

我非常感谢任何有关书籍或其他有用资源的建议或建议。

解决方法

首先,您的问题需要更清楚地定义大数据的意图。

事实上,大数据是一个流行语,可能涉及各种规模的问题。我倾向于将大数据定义为“数据大小”或“计算时间”足够大以使“硬件抽象被破坏”的问题类别,这意味着单个商品机器无法执行计算,而无需重视计算和记忆。

因此,数据变为大数据的规模阈值不清楚,对您的实施敏感。您的算法是否受硬盘驱动器带宽限制?它有脚要记忆吗?你是否试图避免不必要的二次性费用?您是否努力提高缓存效率等。

从多年的运行中型大型机器学习挑战的经验(最多可达250台商品机),我强烈认为,如果问题出现,实际上可能会在单个商品机上运行许多需要分布式基础架构的问题正确的例如,您提到零售商的大规模数据。我已经在这个确切的主题上工作了好几年了,我经常设法使所有的计算运行在一台机器上,提供了一些优化。我公司一直致力于简单的自定义数据格式,允许来自一个非常大的零售商的所有数据的一年存储在50GB内,这意味着一个单一的商用硬盘驱动器可以拥有20年的历史。你可以看一下例如:https://github.com/Lokad/lokad-receiptstream

从我的经验来看,值得花时间尝试优化算法和内存,以避免使用分布式架构。事实上,分布式架构带来三重成本。首先,强大的知识要求。其次,它在代码中带来了大量的复杂性开销。最后,分布式体系结构具有显着的延迟开销(局部多线程分发除外)。

从实践者的角度来看,能够在30秒内执行给定的数据挖掘或机器学习算法是效率的关键因素之一。我注意到,无论是连续还是分布式的计算都需要10分钟,我的焦点和效率往往会快速下降,因为快速,快速地测试新想法变得复杂得多。许多分布式框架引入的延迟开销使您不可避免地处于这种低效率场景中。

如果问题的规模是这样的,即使有很大的努力,你也不能在一台机器上执行,那么我强烈建议采用现成的分布式框架,而不是建立自己的。最着名的框架之一是MapReduce抽象,可通过Apache Hadoop获得。 Hadoop可以在10万个节点集群上运行,可能比您需要的要多得多。如果您不拥有硬件,则可以“租用”使用Hadoop集群,例如通过Amazon MapReduce。

不幸的是,MapReduce抽象不适用于所有机器学习计算。
就机器学习而言,MapReduce是一个僵化的框架,许多案例被证明是难以适应这种框架的难度或低效:

– MapReduce框架本身与功能编程有关。的
Map程序独立应用于每个数据块。因此,
MapReduce框架不适用于应用程序的算法
一些数据块的映射过程需要相同的过程的结果
其他数据块作为先决条件。换句话说,MapReduce框架
当不同数据之间的计算是不适合的
不独立,并施加具体的年表。

– MapReduce旨在提供地图和单个地图的单一执行
减少步骤,不直接提供迭代调用。所以不是
直接适用于许多机器学习问题,这意味着迭代
处理(期望最大化(EM),信念传播等)。的
在MapReduce框架中实现这些算法意味着
用户必须设计一个组织结果检索和调度的解决方案
的多次迭代,以便在reduce之后启动每个地图迭代
完成上一次迭代的相位,因此每个地图迭代被馈送
结果由前一次迭代的减少阶段提供。

– 大多数MapReduce实现都是为了满足生产需求而设计的
鲁棒性。因此,框架的主要关注点是处理
硬件故障并保证计算结果。 MapReduce效率
因此这些可靠性限制部分地被降低了。例如,
计算结果在硬盘上的序列化变得相当昂贵
在某些情况下。

– MapReduce不适合异步算法。

对MapReduce框架的质疑导致了更丰富的分布式框架,为框架用户提供了更多的控制和自由,这个用户的复杂性更高。在这些框架中,GraphLab和Dryad(都基于计算的直接非循环图)是众所周知的。

因此,没有“一刀切”的框架,如没有“一刀切”的数据存储解决方案。

从Hadoop开始,你可以看看这本书Hadoop: The Definitive Guide by Tom White

如果您有兴趣了解大型框架如何适应机器学习要求,您可能会对我的博士的第二章(英文)感兴趣,可在这里获得:http://tel.archives-ouvertes.fr/docs/00/74/47/68/ANNEX/texfiles/PhD%20Main/PhD.pdf

如果您对要处理的具体挑战(算法类型,数据大小,时间和金钱限制等)提供更多的了解,我们可能会为您提供更具体的答案。

编辑:另一个参考可以证明是感兴趣的:Scaling-up Machine Learning

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读