为了聚集一组时间序列,我正在寻找智能距离度量。 我尝试了一些众所周知的指标,但没有人适合我的情况。
ex:让我们假设我的聚类算法提取这三个质心[s1,s2,s3]:
我想把这个新例子[sx]放在最相似的集群中:
最相似的质心是第二个,所以我需要找到一个距离函数d,它给我d(sx, s2) < d(sx, s1)
和d(sx, s2) < d(sx, s3)
修改
这里的结果与指标[余弦,欧几里德,闵可夫斯基,动态类型翘曲] ] 3
编辑2
答案 0 :(得分:5)
一个简单的技巧,可以做你要求的是使用累积版本的时间序列(随着时间的推移,随时间推移的总和值),然后应用标准指标。 使用曼哈顿指标,您可以获得两个时间序列之间的距离区域之间的累积版本。
答案 1 :(得分:2)
另一种方法是利用DTW,它是一种计算两个时间序列之间相似度的算法。全面披露;我为此编写了一个名为trendypy
的Python包,您可以通过pip(pip install trendypy
)下载。 Here是有关如何使用程序包的演示。您基本上只是在计算不同组合的总最小距离,以设置聚类中心。
答案 2 :(得分:0)
如果使用标准Pearson correlation coefficient?,那么您可以将新点分配给系数最高的群集。
public void genericForEachLoop(POITextExtractor te) {
final String[] tagArrays = {"KEYWORDS", "CUSTOMERS", "SYSTEM_DEPS", "MODULES", "DRIVE_DEFS", "PROCESS_IDS"};
ArrayList<String> al = new ArrayList<String>();
for(int i=0; i<tagArrays.length; i++) {
System.out.println(tagArrays[i]);
al = tagArrays[i];
for (String item : al) {
if (te.getText().contains(item)) {
System.out.println(item);
}
}
}
}
答案 3 :(得分:0)
Pietro P的答案只是将卷积应用于时间序列的一种特殊情况。
如果我给了内核:
[1,1,...,1,1,1,0,0,0,0,...0,0]
我将获得一个累积序列。
添加卷积之所以可行,是因为您要为每个数据点提供有关其邻居的信息-现在它与顺序有关。
尝试使用高斯卷积或其他内核可能会很有趣。