在R中实现约束DTW:限制时间规整的窗口大小
限制DTW对齐的时间窗口(R语言)
默认DTW的无约束对齐会出现跨过大时间范围的匹配(比如你遇到的粉色序列40秒点对齐到蓝色序列0秒点),要解决这个问题,你可以通过dtw函数的window.size参数设置最大允许的时间偏移量,实现约束性DTW对齐。
关键步骤说明
- 匹配采样与时间的对应关系:
window.size的单位是数据点的个数,需要和你的时间序列采样频率对应。比如你的序列是80秒内每秒一个数据点,那1个数据点就对应1秒;如果是每2秒一个点,1个数据点对应2秒。 - 设置窗口大小:假设你想允许最多
K秒的灵活对齐空间,就把window.size设为K(按采样点换算后的值)。
修改后的代码示例
比如要限制最多5秒的对齐偏移(假设数据是每秒一个采样点):
# 带时间窗口约束的DTW对齐 alignment <- dtw(Listeners, Speaker, window.size = 5) # 查看对齐距离 alignment$distance # 绘制约束后的对齐结果 plot(dtw(Listeners, Speaker, keep=TRUE, window.size = 5), xaxp = c(0, 10, 10), yaxp = c(0, 10, 10), type="twoway", col=c('blue', 'magenta'))
额外说明
- 如果你的两个序列长度不同,可以保留默认的
window.type = "slantedband"(倾斜带宽窗口);如果长度相同,也可以指定window.type = "sakoechiba"(固定带宽窗口),效果类似。 - 如果序列不是均匀时间采样,先通过
zoo或xts包重采样到均匀间隔,再设置window.size才能准确对应实际秒数。
内容的提问来源于stack exchange,提问作者Dasha
相关产品推荐
相关产品推荐

