【问题标题】:How many times K-means Spark Streaming processed the same data?K-means Spark Streaming 处理了多少次相同的数据?
【发布时间】:2015-12-09 23:29:57
【问题描述】:

我是 Spark Streaming 的新手,我想使用 K-means,但是当我研究这个时,我无法理解 K-means 使用了多少次在 Spark Streaming 上使用相同的数据?

也就是说,K-means算法是迭代的,那么如何控制它在相同数据上运行的次数呢?

【问题讨论】:

    标签: algorithm apache-spark k-means spark-streaming


    【解决方案1】:

    K-means 本质上是关于拥有k 集群质心。在每次迭代中,您更新数据点所属的集群,然后重新计算 k 个质心。因此,立即停止 k-means 运行的最佳方法不是您运行算法的次数,而是通过本次运行计算的质心是否与上一次相同。

    当点在集群中稳定时,质心也会稳定,这意味着任何进一步的迭代都不会改变集群,这就是你应该停止的地方。

    但是,如果您愿意,您也可以提前停下来。您可以对算法进行编程以运行最大次数的迭代。由于 k-means 一遍又一遍地运行,它有某种循环(while、for、foreach..)。您可以在其中放置一个循环计数器,并在您完成所需的运行时停止。或者,您可以在之前的集群质心和新的集群质心的变化低于某个阈值时停止。

    【讨论】:

    • 感谢您的回答!我了解传统的 K-means,但我的问题是关于 Spark Streaming 中的 K-means,其中输入是 stream。我认为算法采用数据“窗口”并在这些数据中应用 K-means。但我最大的问题是每个窗口中执行了多少次交互。我希望我很清楚。再次感谢您!
    • @majitux:如果流的大小不是 RAM 的很多倍,请全部读取(可能在数组中)并执行 K-means。否则,您只会丢失您的信息流。
    • @majitux:关于迭代次数,请阅读我的答案的第二和第三段。我在那里解释了同样的事情。具体如何停止算法只能在查看您的代码后才能回答。
    • 好的,我理解你,但是否可以提前确定每个窗口中的迭代次数?谢谢!
    • @majitux:在事先不知道数据的情况下,我们无法预测稳定质心需要多少个周期。但是,您可以自己决定可以进行多少次迭代,然后只运行这些次数。考虑到 K-means 的性质,这是个坏主意
    猜你喜欢
    • 2015-12-30
    • 2020-07-09
    • 2016-11-16
    • 2019-06-25
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多