[英]Dynamic Time Warping (DTW) monotonicity constraint
使用動態時間規整時如何指定單調性約束(一個時間序列不應出現在另一個之前)?
例如,我有成本和收入數據; 一個應該影響另一個,但反之則不然。 我正在使用基本的dtw package 但我知道還有很多其他的可能會更好。 下面是我目前的 alignment。
(我想把對應的收入點單獨存一欄,可以嗎?)
library(dtw)
asy<-dtw(df$cost,
df$revenue,
keep=TRUE,
window.size = 7, # max 7 days shift
step=asymmetric # gives best results for this problem (other: symmetric1 & symmetric2)
);
plot(asy, type="two", off=1);
謝謝您的幫助!
我認為您可以通過定義自己的 window function 來強制執行此操作。 例如,以這些系列為例:
library(dtw)
set.seed(310L)
idx <- seq(0, 6.28, len = 100L)
reference <- sin(idx)
query <- cos(idx) + runif(100L) / 10
foo <- dtw(query, reference, keep = TRUE, step.pattern = symmetric2, window.type = sakoeChibaWindow, window.size = 30L)
plot(foo, type = "two", off = 2)
紅線是參考,您希望查詢的值僅匹配過去或同一天的值。
win_fun <- function(i, j, ...) { i >= j }
bar <- dtw(query, reference, keep = TRUE, step.pattern = symmetric2, window.type = win_fun)
plot(bar, type = "two", off = 2)
如果要匹配過去的值,嚴格排除同一時間的值,請將條件更改為i > j
。
查看dtwWindowingFunctions
的文檔以獲取更多選項。 您可能想要添加 window 大小約束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.