Melanjutkan postingan sebelumnya, di sini akan digunakan model H2O.
Apa yang membuat H2O lebih cepat?
H2O memiliki fitur yang bersih dan jelas untuk langsung menghubungkan tool baik R atau Python, dengan CPU yang ada di mesin anda. Dengan cara ini kita dapat menyalurkan lebih banyak memori, memproses dengan tool yang ada di R atau Python untuk membuat perhitungan lebih cepat. Package H2O memungkinkan perhitungan berlangsung pada kapasitas CPU 100% . Di samping itu H2O juga dapat dihubungkan dengan cluster di platform cloud untuk melakukan perhitungan. H2O dapat mengkompresi data yang besar, juga melakukan proses secara paralel.
Split data
Data displit menjadi 3 bagian, 2 bagian train data dan 1 bagian test data.
Apa yang membuat H2O lebih cepat?
H2O memiliki fitur yang bersih dan jelas untuk langsung menghubungkan tool baik R atau Python, dengan CPU yang ada di mesin anda. Dengan cara ini kita dapat menyalurkan lebih banyak memori, memproses dengan tool yang ada di R atau Python untuk membuat perhitungan lebih cepat. Package H2O memungkinkan perhitungan berlangsung pada kapasitas CPU 100% . Di samping itu H2O juga dapat dihubungkan dengan cluster di platform cloud untuk melakukan perhitungan. H2O dapat mengkompresi data yang besar, juga melakukan proses secara paralel.
Fraud illustration |
Split data
Data displit menjadi 3 bagian, 2 bagian train data dan 1 bagian test data.
splits
<- h2o.splitFrame(creditcard_hf,
ratios = c(0.4, 0.4),
seed = 42)
train_unsupervised <- splits[[1]]
train_supervised <- splits[[2]]
test
<- splits[[3]]
response
<- "Class"
features
<- setdiff(colnames(train_unsupervised), response)
Autoencoder
Pertama, menggunakan deep leatning autoencouder pada train_unsupervised kita cukup mengatur autoencoder = TRUE.
Di sini, dipakai teknik "bottleneck", di mana lapisan tersembunyi di tengah sangat kecil. Ini berarti bahwa model harus dikurangi dimensinay(dalam hal ini, hingga 2 node / dimensi).
Model autoencoder kemudian akan mempelajari pola input data terlepas dari label kelas yang diberikan. Akan dilihat transaksi credit card mana yang serupa dan transaksi mana yang outlier atau anomali.
model_nn
<- h2o.deeplearning(x = features,
training_frame =
train_unsupervised,
model_id =
"model_nn",
autoencoder =
TRUE,
reproducible =
TRUE,
#slow - turn off for real problems
#slow - turn off for real problems
ignore_const_cols
= FALSE,
seed = 42,
hidden = c(10, 2, 10),
epochs = 100,
activation =
"Tanh")
Simpan model
h2o.saveModel(model_nn,
path="model_nn", force = TRUE)
model_nn
<- h2o.loadModel("model_nn")
model_nn
##
Model Details:
##
H2OAutoEncoderModel: deeplearning
##
Model ID: model_nn
##
Status of Neuron Layers: auto-encoder, gaussian distribution, Quadratic loss,
776 weights/biases, 16.0 KB, 2,622,851 training samples, mini-batch size 1
## layer units
type dropout l1 l2 mean_rate rate_rms momentum
##
1 1
34 Input 0.00 %
##
2 2
10 Tanh 0.00 % 0.000000 0.000000 0.709865 0.320108 0.000000
##
3 3 2
Tanh 0.00 % 0.000000
0.000000 0.048458 0.109033 0.000000
##
4 4
10 Tanh 0.00 % 0.000000 0.000000 0.164717 0.192053 0.000000
##
5 5
34 Tanh 0.000000 0.000000 0.369681 0.425672 0.000000
## mean_weight weight_rms mean_bias bias_rms
##
1
##
2 -0.039307 0.691302
0.008052 0.965178
##
3 -0.097383 0.314106
0.226376 0.067917
##
4 0.227664 1.089589
0.112032 0.672444
##
5 0.011072 0.605586
0.091124 0.722602
##
##
H2OAutoEncoderMetrics: deeplearning
##
** Reported on training data. **
##
##
Training Set Metrics:
##
MSE: (Extract with `h2o.mse`) 0.001472071
##
RMSE: (Extract with `h2o.rmse`) 0.03836757
#Convert
to autoencoded representation
test_autoenc
<- h2o.predict(model_nn, test)
Reduce hidden layers dimension
Karena saya telah menggunakan model bottleneck dengan dua node di lapisan tersembunyi di tengah, kita dapat menggunakan pengurangan dimensi ini untuk menjelajahi ruang fitur kami (mirip dengan apa yang bisa kami lakukan dengan analisis komponen utama). Kami dapat mengekstrak fitur tersembunyi ini dengan fungsi h2o.deepfeatures () dan memplotnya untuk menunjukkan representasi data input yang berkurang.