Math 如何使用kmeans对曲线进行聚类?

Math 如何使用kmeans对曲线进行聚类?,math,cluster-computing,data-mining,cluster-analysis,probability,Math,Cluster Computing,Data Mining,Cluster Analysis,Probability,我想对一些包含每日点击率的曲线进行聚类。 数据集是时间序列中的点击率数据 y1 = [time1:0.10,time2:0.22,time3:0.344,...] y2 = [time1:0.10,time2:0.22,time3:0.344,...] 我不知道如何使用kmeans度量两条曲线的相似性。 有没有这方面的论文或图书馆?为了相似性,你可以使用任何类型的时间序列距离。其中许多将执行对齐,也将执行不同长度序列的对齐 然而,k-means不会让你有任何进展 K-均值不适用于任意距离。它实

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

y1 = [time1:0.10,time2:0.22,time3:0.344,...]
y2 = [time1:0.10,time2:0.22,time3:0.344,...]
我不知道如何使用kmeans度量两条曲线的相似性。
有没有这方面的论文或图书馆?

为了相似性,你可以使用任何类型的时间序列距离。其中许多将执行对齐,也将执行不同长度序列的对齐

然而,k-means不会让你有任何进展

K-均值不适用于任意距离。它实际上不使用距离进行赋值,而是使用最小平方和(恰好是欧几里德距离的平方)-又名:方差

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


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

时间序列的长度是否相同?如果是这样,你可以直接试试。如果不是,你可能想使用,比如说。数据集的长度不相等,可能y1包含40个点,y2包含29个点。你能解释一下数据集的结构吗?起初我以为它们是每个时间段的点击率(比如,每10分钟一次),但如果它们有不同的大小,那就不可能了。它似乎也不是一个日志——那么时间1、时间2是如何确定的呢?我假设您尝试的是使用类似的“点击率季节性”模式对项目进行分组/聚合,对吗?内核k-means是一种行之有效的技术,效果很好。数学计算的结果是,您不需要显式地计算底层RKH中的平均值(这是一件好事,因为它可能是无限维的)。当然,这意味着您不能获得“群集平均值输出”的显式表示,但您可以获得群集指定,也可以将新点指定给选定的群集。