云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云主机_折枝by困倚危楼百度云_高性价比

小七 141 0

在apachespark1.2中引入流式k-means

许多真实世界的数据都是随着时间的推移按顺序获取的,无论是来自社交媒体用户的消息,还是来自可穿戴传感器的时间序列,或者——在某种情况下,我们特别兴奋——大量神经元的放电。在这些设置中,我们可以使用流式算法来识别随时间变化的模式,并做出更有针对性的预测和决策,而不是等待所有数据被采集后再执行分析。一个简单的策略是在静态数据上建立机器学习模型,然后使用学习的模型对输入的数据流进行预测。但是如果数据中的模式本身是动态的呢?这就是流算法的用武之地。apachespark的一个关键优势是,它的机器学习库(MLlib)和流处理库(Spark Streaming)都构建在同一个用于分布式分析的核心架构上。这有助于添加扩展,以新颖的方式利用和组合组件,而无需重新发明轮子。我们在MLlib的Spark中开发了一系列流式机器学习算法。在这篇文章中,我们将描述流式k-means集群,包括在最近发布的apachespark1.2中。k均值算法k-means的目标是将一组数据点划分为k个簇。现在经典的k-means算法是由Stephen Lloyd在1950年代为模拟信号的有效数字量化而开发的,它在两个步骤之间迭代。首先,给定k个聚类中心的初始集合,我们找到每个数据点最接近的聚类。然后,我们计算每个新簇的平均值,并使用结果来更新我们的簇中心。在每一步——重新分配和更新——我们使每个簇内的点变得越来越相似(更正式地说,我们在这两个步骤中都在缩小簇内平方和)。通过在这两个步骤之间反复迭代,我们通常可以收敛到一个好的解决方案。在流设置中,我们的数据成批到达,每批可能有许多数据点。标准k-means算法最简单的扩展是从聚类中心开始——通常是随机位置,因为我们还没有看到任何数据——并且对于每一批新的数据点,执行上述相同的两步操作。然后,我们使用新的中心在下一批产品上重复该程序。上面是一部电影,展示了这种算法对来自三个集群的二维数据流的行为,这些数据流是随着时间慢慢漂移的。这些中心跟踪真实的集群,并随着时间的推移适应变化。健忘如果数据源是恒定的-永远是相同的三个群集-上述流算法将收敛到一个类似的解决方案,就好像k-means在整个累积数据集上离线运行一样。事实上,在这种情况下,流算法与众所周知的离线k-means算法"mini-batch"k-means相同,它反复训练数据的随机子集,以避免将整个数据集加载到内存中。然而,如果数据来源随着时间的推移而改变呢?我们如何使我们的模型反映这些变化?对于这个设置,我们扩展了算法以支持遗忘,允许模型适应随时间变化的变化。关键的诀窍是添加一个新参数来平衡新数据与过去历史的相对重要性。此参数的一个设置将等同于上面描述的场景,其中从时间开始的所有数据都将被平等对待。在另一个极端,只会使用最新的数据。两者之间的设置将结合现在和过去的部分反映。这是一个动画,显示了遗忘参数的两个设置,在中心中途改变的溪流中。在第二种情况下,观察集群中心如何快速地适应新的位置,但在第一种情况下需要一段时间来转移。通过适当的参数设置,我们可以拥有能够平滑地适应数据动态变化的聚类中心。在这个动画中,观察五个簇随时间漂移,中心跟踪它们从数学上讲,遗忘相当于在更新规则中增加了一个额外的参数:描述如何在给定一批新数据的情况下更新中心的方程。但是,作为介于0到1之间的标量值,它不是一个特别直观的参数。因此,我们暴露了半衰期,它描述了在过去的数据只占当前模型的一半之前所花费的时间。为了演示,我们将使用上面示例的一维版本。我们首先从两个集群中提取数据,然后切换到来自两个不同集群的数据。半衰期决定了从初始点集减少到一半所需的批数。您可以在簇调整所需的时间内看到更改半衰期的效果。半衰期为0.5个批次时,变更大约在1个批次内完成,但半衰期为5个批次时,则需要大约10个批次。用户可能想考虑他们的半衰期是批处理的数量(在时间上有固定的持续时间)或者点数。如果一个批次中有1000个数据点,而另一个批次中有10个数据点,那么您可能希望这1000个数据点的影响相应地更大。另一方面,您可能希望在数据点的波动中保持稳定,而是平等对待所有时间段。为了解决这个问题,我们引入了时间单位的概念,它可以指定为批次或点。给定用户指定的半衰期和时间单位,算法自动计算适当的遗忘行为。最后一个功能包括一个检查,以消除死亡集群。如果在数据生成过程中发生了巨大的变化,那么其中一个被估计的簇可能会突然远离任何数据,并停留在它的位置上。为了防止出现这种情况,将在每个批处理上检查集群是否存在此类行为。消除一个检测到正在消亡的簇,并将最大的簇一分为二。在这个一维演示中,两个集群最初相距甚远,但后来一个变为更接近另一个。一开始不正确的集群仍然存在(顶行),但很快就消失了,另一个集群分裂为正确地锁定新的集群中心。开始使用要开始自己使用流式k-means,请立即下载apachespark1.2,阅读apachespark1.2文档中有关流式k-means的更多信息,并尝试示例代码。要像这里所示的那样生成流式集群的可视化效果,并探索设置和行为的范围,请查看spark-ml流式处理包中的代码。期待许多算法和分析都可以从流式实现中受益。除了流式线性回归(从1.1开始)和流式集群(从1.2开始),我们计划在未来的版本中添加因子分解和分类的流式版本,并将它们合并到新的Python流式API中,并使用我们新的遗忘参数化算法作为控制动态模型更新的统一方法。特别感谢孟祥瑞、如来达斯、尼古拉斯·索夫罗尼(负责算法开发)和马修·康伦(可视化)。免费试用Databricks。今天就开始吧