2016-01-27 4 views
1

Я использую h2o для обнаружения аномалий в данных. Данные содержат несколько непрерывных и категориальных признаков, и метка может быть равна 0 или 1. Теперь, поскольку количество 1s меньше 1%, я использую метод обнаружения аномалий вместо обычных методов классификации. Однако в конце я получаю MSE, рассчитанный на каждую строку данных, и я не уверен, как интерпретировать его, чтобы иметь возможность сказать, что фактическая метка равна 0, но из-за этого является аномалией и должна быть равна 1.Как интерпретировать реконструкцию MSE от обнаружения аномалии H2O?

код, я использую до сих пор:

features <- names(train.df)[!names(train.df) %in% c("label")] 
train.df <- subset(train.df, label==0) 
train.h <- as.h2o(train.df) 

mod.dl <- h2o.deeplearning(
    x=features, 
    autoencoder=TRUE, 
    training_frame=train.h, 
    activation=c("Tanh"), 
    hidden=c(10,10), epochs=20, adaptive_rate=FALSE, 
    variable_importances=TRUE, 
    l1=1e-4, l2=1e-4, 
    sparse=TRUE 
) 

pred.oc <- as.data.frame(h2o.anomaly(mod.dl.oc, train.h.oc)) 

head(pred.oc):

Reconstruction.MSE 
1  0.012059304 
2  0.014490905 
3  0.011002231 
4  0.013142910 
5  0.009631915 
6  0.012897779 

ответ

1

автоассоциатор пытается узнать нелинейную, уменьшенное представление исходных данных. Это неконтролируемый подход, поэтому он будет рассматривать только функции данных. Это не подход к классификации.

Средняя квадратная ошибка - это способ увидеть, как сложно автогенератору представлять результат. Аномалии считаются строками/наблюдениями с высокой средней квадратичной ошибкой.

В вашем случае строки с наивысшим значением MSE следует считать аномальными. Они могут быть строками, которые равны 1, но обозначены как 0. Однако этот вывод не может быть определенно сделан из подхода к автокодированию.

Смежные вопросы