5
5
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
6
6
7
7
import random
8
+
8
9
from ads .common .extended_enum import ExtendedEnumMeta
9
10
from ads .opctl .operator .lowcode .common .const import DataColumns
10
- from merlion .models .anomaly import autoencoder , deep_point_anomaly_detector , isolation_forest , spectral_residual , windstats , windstats_monthly
11
- from merlion .models .anomaly .change_point import bocpd
12
- from merlion .models .forecast import prophet
13
11
14
12
15
13
class SupportedModels (str , metaclass = ExtendedEnumMeta ):
16
14
"""Supported anomaly models."""
17
15
18
16
AutoTS = "autots"
19
17
Auto = "auto"
20
- MerilonAD = "merlion_ad"
21
18
IQR = "iqr"
22
19
LOF = "lof"
23
20
ZSCORE = "zscore"
@@ -26,6 +23,23 @@ class SupportedModels(str, metaclass=ExtendedEnumMeta):
26
23
EE = "ee"
27
24
ISOLATIONFOREST = "isolationforest"
28
25
26
+ # point anomaly
27
+ DAGMM = "dagmm"
28
+ DEEP_POINT_ANOMALY_DETECTOR = "deep_point_anomaly_detector"
29
+ LSTM_ED = "lstm_ed"
30
+ SPECTRAL_RESIDUAL = "spectral_residual"
31
+ VAE = "vae"
32
+
33
+ # forecast_based
34
+ ARIMA = "arima"
35
+ ETS = "ets"
36
+ PROPHET = "prophet"
37
+ SARIMA = "sarima"
38
+
39
+ # changepoint
40
+ BOCPD = "bocpd"
41
+
42
+
29
43
class NonTimeADSupportedModels (str , metaclass = ExtendedEnumMeta ):
30
44
"""Supported non time-based anomaly detection models."""
31
45
@@ -34,7 +48,7 @@ class NonTimeADSupportedModels(str, metaclass=ExtendedEnumMeta):
34
48
RandomCutForest = "randomcutforest"
35
49
# TODO : Add DBScan
36
50
# DBScan = "dbscan"
37
-
51
+
38
52
39
53
class TODSSubModels (str , metaclass = ExtendedEnumMeta ):
40
54
"""Supported TODS sub models."""
@@ -66,81 +80,51 @@ class TODSSubModels(str, metaclass=ExtendedEnumMeta):
66
80
}
67
81
68
82
69
- class MerlionADSubmodels (str , metaclass = ExtendedEnumMeta ):
83
+ class MerlionADModels (str , metaclass = ExtendedEnumMeta ):
70
84
"""Supported Merlion AD sub models."""
71
85
72
86
# point anomaly
73
- AUTOENCODER = "autoencoder"
74
87
DAGMM = "dagmm"
75
- DBL = "dbl"
76
88
DEEP_POINT_ANOMALY_DETECTOR = "deep_point_anomaly_detector"
77
- ISOLATION_FOREST = "isolation_forest"
78
- LOF = "lof"
79
89
LSTM_ED = "lstm_ed"
80
- # RANDOM_CUT_FOREST = "random_cut_forest"
81
90
SPECTRAL_RESIDUAL = "spectral_residual"
82
- STAT_RESIDUAL = "stat_residual"
83
91
VAE = "vae"
84
- WINDSTATS = "windstats"
85
- WINDSTATS_MONTHLY = "windstats_monthly"
86
- ZMS = "zms"
87
92
88
93
# forecast_based
89
94
ARIMA = "arima"
90
95
ETS = "ets"
91
- MSES = "mses"
92
96
PROPHET = "prophet"
93
97
SARIMA = "sarima"
94
98
95
- #changepoint
99
+ # changepoint
96
100
BOCPD = "bocpd"
97
101
98
102
99
103
MERLIONAD_IMPORT_MODEL_MAP = {
100
- MerlionADSubmodels .AUTOENCODER : ".autoendcoder" ,
101
- MerlionADSubmodels .DAGMM : ".dagmm" ,
102
- MerlionADSubmodels .DBL : ".dbl" ,
103
- MerlionADSubmodels .DEEP_POINT_ANOMALY_DETECTOR : ".deep_point_anomaly_detector" ,
104
- MerlionADSubmodels .ISOLATION_FOREST : ".isolation_forest" ,
105
- MerlionADSubmodels .LOF : ".lof" ,
106
- MerlionADSubmodels .LSTM_ED : ".lstm_ed" ,
107
- # MerlionADSubmodels.RANDOM_CUT_FOREST: ".random_cut_forest",
108
- MerlionADSubmodels .SPECTRAL_RESIDUAL : ".spectral_residual" ,
109
- MerlionADSubmodels .STAT_RESIDUAL : ".stat_residual" ,
110
- MerlionADSubmodels .VAE : ".vae" ,
111
- MerlionADSubmodels .WINDSTATS : ".windstats" ,
112
- MerlionADSubmodels .WINDSTATS_MONTHLY : ".windstats_monthly" ,
113
- MerlionADSubmodels .ZMS : ".zms" ,
114
- MerlionADSubmodels .ARIMA : ".forecast_based.arima" ,
115
- MerlionADSubmodels .ETS : ".forecast_based.ets" ,
116
- MerlionADSubmodels .MSES : ".forecast_based.mses" ,
117
- MerlionADSubmodels .PROPHET : ".forecast_based.prophet" ,
118
- MerlionADSubmodels .SARIMA : ".forecast_based.sarima" ,
119
- MerlionADSubmodels .BOCPD : ".change_point.bocpd" ,
104
+ MerlionADModels .DAGMM : ".dagmm" ,
105
+ MerlionADModels .DEEP_POINT_ANOMALY_DETECTOR : ".deep_point_anomaly_detector" ,
106
+ MerlionADModels .LSTM_ED : ".lstm_ed" ,
107
+ MerlionADModels .SPECTRAL_RESIDUAL : ".spectral_residual" ,
108
+ MerlionADModels .VAE : ".vae" ,
109
+ MerlionADModels .ARIMA : ".forecast_based.arima" ,
110
+ MerlionADModels .ETS : ".forecast_based.ets" ,
111
+ MerlionADModels .PROPHET : ".forecast_based.prophet" ,
112
+ MerlionADModels .SARIMA : ".forecast_based.sarima" ,
113
+ MerlionADModels .BOCPD : ".change_point.bocpd" ,
120
114
}
121
115
122
116
123
117
MERLIONAD_MODEL_MAP = {
124
- MerlionADSubmodels .AUTOENCODER : "AutoEncoder" ,
125
- MerlionADSubmodels .DAGMM : "DAGMM" ,
126
- MerlionADSubmodels .DBL : "DynamicBaseline" ,
127
- MerlionADSubmodels .DEEP_POINT_ANOMALY_DETECTOR : "DeepPointAnomalyDetector" ,
128
- MerlionADSubmodels .ISOLATION_FOREST : "IsolationForest" ,
129
- MerlionADSubmodels .LOF : "LOF" ,
130
- MerlionADSubmodels .LSTM_ED : "LSTMED" ,
131
- # MerlionADSubmodels.RANDOM_CUT_FOREST: "RandomCutForest",
132
- MerlionADSubmodels .SPECTRAL_RESIDUAL : "SpectralResidual" ,
133
- MerlionADSubmodels .STAT_RESIDUAL : "StatThreshold" ,
134
- MerlionADSubmodels .VAE : "VAE" ,
135
- MerlionADSubmodels .WINDSTATS : "WindStats" ,
136
- MerlionADSubmodels .WINDSTATS_MONTHLY : "MonthlyWindStats" ,
137
- MerlionADSubmodels .ZMS : "ZMS" ,
138
- MerlionADSubmodels .ARIMA : "ArimaDetector" ,
139
- MerlionADSubmodels .ETS : "ETSDetector" ,
140
- MerlionADSubmodels .MSES : "MSESDetector" ,
141
- MerlionADSubmodels .PROPHET : "ProphetDetector" ,
142
- MerlionADSubmodels .SARIMA : "SarimaDetector" ,
143
- MerlionADSubmodels .BOCPD : "BOCPD" ,
118
+ MerlionADModels .DAGMM : "DAGMM" ,
119
+ MerlionADModels .DEEP_POINT_ANOMALY_DETECTOR : "DeepPointAnomalyDetector" ,
120
+ MerlionADModels .LSTM_ED : "LSTMED" ,
121
+ MerlionADModels .SPECTRAL_RESIDUAL : "SpectralResidual" ,
122
+ MerlionADModels .VAE : "VAE" ,
123
+ MerlionADModels .ARIMA : "ArimaDetector" ,
124
+ MerlionADModels .ETS : "ETSDetector" ,
125
+ MerlionADModels .PROPHET : "ProphetDetector" ,
126
+ MerlionADModels .SARIMA : "SarimaDetector" ,
127
+ MerlionADModels .BOCPD : "BOCPD" ,
144
128
}
145
129
146
130
@@ -182,6 +166,5 @@ class OutputColumns(str, metaclass=ExtendedEnumMeta):
182
166
Series = DataColumns .Series
183
167
184
168
185
- MERLION_DEFAULT_MODEL = "prophet"
186
169
TODS_DEFAULT_MODEL = "ocsvm"
187
170
SUBSAMPLE_THRESHOLD = 1000
0 commit comments