データの異常検出に h2o を使用しています。データにはいくつかの連続したカテゴリ特徴が含まれており、ラベルは 0 または 1 のいずれかになります。現在、1 の数は 1% 未満であるため、通常の分類方法を使用する代わりに、異常検出手法を試しています。ただし、最終的にデータの行ごとに MSE が計算され、実際のラベルが 0 であると言えるように解釈する方法がわかりませんが、それは異常であり、1 である必要があります。
私がこれまでに使用しているコード:
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