Я новичок в использовании R. Я попытался использовать библиотеку H2o, чтобы проверить наличие аномалий, сравнив сценарии со сценарием профиля.Примером может служить расход масла движущегося автомобиля:
Чем дольше движущийся автомобиль остается на дороге, тем меньше бензин.
У нас есть данные испытаний, когда чем дольше движущийся автомобиль остается на дороге, тем выше остается бензин.Это должно помечаться как аномалия.
Библиотека H2o, по-видимому, проверяет точечные аномалии и не помечает ее как аномальную, поскольку значения в Серии 1 существуют в Профиле.
Профиль: это правильный профиль для ссылок.Бензин движущегося транспортного средства по логике должен постепенно снижаться со временем.Следовательно, градиент для [Бензин влево] должен уменьшаться при увеличении времени.
Timing 1 Timing 2 Timing 3 Timing 4
Petrol left(L) 45 40 35 30
Тестовые данные: Градиент для [Бензин влево] увеличивается по мере увеличения времени.
Timing 1 Timing 2 Timing 3 Timing 4
Petrol left(L) 30 35 40 45
Код:
library(h2o)
h2o.init(ip = "h2o")
traindf = h2o.uploadFile("training data")
testdf = h2o.uploadFile("test data")
dlmodel = h2o.deeplearning(x = 1:10, training_frame = traindf,
autoencoder = TRUE,
hidden = c(50, 50, 50),
epochs = 100,
reproducible = TRUE,
seed=1)
errors <- h2o.anomaly(dlmodel, testdf, per_feature = FALSE)
errors <- as.data.frame(errors)
row_outliers <- which(errors > 0.8)
testdf[row_outliers,]
Я ожидаю, что на выходе будут показаны все [Бензиновый левый] из Series1 как аномалия, но фактический результат не является аномалией.
ЕстьЕсть ли другие библиотеки, которые могут определить порядок / градиент, и пометить Series 1 как аномальный?