This function trains a model that uses a dictionary to predict state changes. Differently from fluss(), it doesn't look for semantic changes (that may be several), but for binary states like "on" or "off". Think for example that a human annotator is pressing a switch any time he thinks that the recorded data is relevant, and releases the switch when he thinks the data is noise. This algorithm will learn the switching points (even better) and try to predict using new data.

sdts_train(
  data,
  label,
  window_size,
  beta = 1,
  pat_max = Inf,
  n_workers = 1,
  verbose = getOption("tsmp.verbose", 2)
)

Arguments

data

a vector of numeric. Time series.

label

a vector of logical. Annotations.

window_size

an int or a vector of int. Sliding window sizes.

beta

a numeric. See details. (default is 1).

pat_max

an int. Max number of shape features captured. (default is Inf).

verbose

an int. See details. (Default is 2).

parallel

a logical. Use parallel computation inside (default is FALSE).

Value

Returns a list with the learned dictionary score (estimated score), score_hist (history of scores), pattern (shape features), thold (threshold values).

Details

beta is used to balance F-score towards recall (>1) or precision (<1). verbose changes how much information is printed by this function; 0 means nothing, 1 means text, 2 adds the progress bar, 3 adds the finish sound.

References

  • Yeh C-CM, Kavantzas N, Keogh E. Matrix profile IV: Using Weakly Labeled Time Series to Predict Outcomes. Proc VLDB Endow. 2017 Aug 1;10(12):1802-12.

Website: https://sites.google.com/view/weaklylabeled

See also

Other Scalable Dictionaries: sdts_predict(), sdts_score()

Examples

# This is a fast toy example and results are useless. For a complete result, run the code inside
#' Not run' section below.
w <- c(110, 220)
subs <- 11000:20000
tr_data <- mp_test_data$train$data[subs]
tr_label <- mp_test_data$train$label[subs]
te_data <- mp_test_data$test$data[subs]
te_label <- mp_test_data$test$label[subs]
model <- sdts_train(tr_data, tr_label, w, verbose = 0)
#> Error in mat_pro[[i]]: subscript out of bounds
predict <- sdts_predict(model, te_data, round(mean(w)))
#> Error in sdts_predict(model, te_data, round(mean(w))): object 'model' not found
sdts_score(predict, te_label, 1)
#> Error in pred_tmp[seq_len(length(pred))] <- pred: incompatible types (from closure to logical) in subassignment type fix
# \donttest{
windows <- c(110, 220, 330)
model <- sdts_train(mp_test_data$train$data, mp_test_data$train$label, windows)
#> Stage 1 of 3, compute matrix profile...
#> Error in mat_pro[[i]]: subscript out of bounds
predict <- sdts_predict(model, mp_test_data$test$data, round(mean(windows)))
#> Error in sdts_predict(model, mp_test_data$test$data, round(mean(windows))): object 'model' not found
sdts_score(predict, mp_test_data$test$label, 1)
#> Error in pred_tmp[seq_len(length(pred))] <- pred: incompatible types (from closure to logical) in subassignment type fix
# }