【问题标题】:how to cluster curve with kmeans?如何用kmeans聚类曲线?
【发布时间】:2013-03-23 07:12:42
【问题描述】:

我想对一些包含每日点击率的曲线进行聚类。 数据集是时间序列的点击率数据。

y1 = [time1:0.10,time2:0.22,time3:0.344,...]
y2 = [time1:0.10,time2:0.22,time3:0.344,...]

我不知道如何使用 kmeans 测量两条曲线的相似性。 有没有为此目的的论文或一些图书馆?

【问题讨论】:

  • 时间序列的长度是否相同?如果是这样,您可以直接尝试。如果没有,您可能想使用kernel k-means 进行操作,比如说。 dynamic time-alignment kernel 或类似名称。
  • @Dougal 日期集的长度不相等,可能 y1 包含 40 个点,y2 包含 29 个点。
  • 您能否阐明数据集的结构?最初我认为它们是每个时间段的点击率(例如,每 10 分钟),但如果它们的大小不同,那就不可能了。好像也不是日志——那么time1、time2是怎么确定的呢?
  • 我假设您正在尝试对具有类似“点击率季节性”模式的项目进行分组/聚合,对吗?

标签: math cluster-computing data-mining cluster-analysis probability


【解决方案1】:

对于相似性,您可以使用任何类型的时间序列距离。其中许多将执行比对,也包括不同长度的序列。

但是,k-means 不会让你走到任何地方。

K-means 不是意味着用于任意距离。它实际上不使用距离进行分配,而是使用最小二乘法(恰好是欧几里得距离的平方) - 又名:方差。

均值必须与此目标一致。不难看出,均值也使平方和最小化。这保证了 k-means 的收敛:在每一步(分配和均值更新)中,目标都会降低,因此它必须在有限数量的步骤后收敛(因为只有有限数量的离散分配)。

但是不同长度的多个时间序列的平均值是什么?

【讨论】:

  • 内核 k-means 是一种行之有效的技术,效果很好。数学计算结果使您无需显式计算底层 RKHS 中的均值(这是一件好事,因为它可能是无限维的)。当然,这意味着您没有得到集群均值的明确表示,但您确实获得了集群分配,并且也可以将新点分配给选定的集群。
猜你喜欢
  • 2013-11-18
  • 1970-01-01
  • 2019-10-29
  • 2019-03-31
  • 1970-01-01
  • 2016-07-05
  • 2021-11-27
  • 2015-02-20
  • 2017-06-08
相关资源
最近更新 更多