KDD-OpenSource / DeepADoTS

Repository of the paper "A Systematic Evaluation of Deep Anomaly Detection Methods for Time Series".

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Training LSTM-Enc-Dec on Missing ouliers (100%) throws RuntimeError

maxifischer opened this issue · comments

2018-06-13 06:56:46 [ERROR] root: Couldn't take the inverse of cov. Maybe singular?
2018-06-13 06:56:46 [ERROR] src.evaluation.evaluator: An exception occured while training LSTM-Enc-Dec on Syn Extreme Outliers (mis=1.0): Lapack Error getrf : U(5,5) is 0, U is singular at /pytorch/aten/src/TH/generic/THTensorLapack.c:514
2018-06-13 06:56:46 [ERROR] src.evaluation.evaluator: Traceback (most recent call last):
  File "../third_party/lstm_enc_dec/anomalyDetector.py", line 84, in anomalyScore
    mult2 = torch.inverse(cov)  # [ prediction_window_size * prediction_window_size ]
RuntimeError: Lapack Error getrf : U(2,2) is 0, U is singular at /pytorch/aten/src/TH/generic/THTensorLapack.c:514

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "../src/evaluation/evaluator.py", line 68, in evaluate
    score = det.predict(X_test)
  File "../src/algorithms/lstm_enc_dec.py", line 109, in predict
    channels_scores = self.predict_channel_scores(X_test)
  File "../src/algorithms/lstm_enc_dec.py", line 105, in predict_channel_scores
    channels_scores, _ = self._predict(test_timeseries_dataset)
  File "../src/algorithms/lstm_enc_dec.py", line 215, in _predict
    self.data, self.filename)
  File "../third_party/lstm_enc_dec/anomaly_detection.py", line 88, in calc_anomalies
    score_predictor=score_predictor, channel_idx=channel_idx,
  File "../third_party/lstm_enc_dec/anomalyDetector.py", line 91, in anomalyScore
    mult2 = torch.inverse(cov)  # [ prediction_window_size * prediction_window_size ]
RuntimeError: Lapack Error getrf : U(5,5) is 0, U is singular at /pytorch/aten/src/TH/generic/THTensorLapack.c:514

As i suggested in another issue we should not use 100% missing data. The covariance matrix only contains the same values which makes it a singular matrix. You cant take the inverse of a singular matrix so i would just conclude that this algorithm cant handle this specific case.

The dataset is not relevant, I agree with Thomas here