1. PENDAHULUAN
Dalam era digital, volume data transaksi meningkat secara signifikan. Setiap transaksi yang terjadi di sistem retail menyimpan informasi penting yang dapat dianalisis untuk mendeteksi pola perilaku normal maupun abnormal. Deteksi anomali menjadi krusial dalam berbagai konteks, seperti:
- Deteksi fraud transaksi
- Kesalahan input sistem
- Penyimpangan harga
- Aktivitas pembelian yang tidak wajar
Metode tradisional seperti Z-Score atau IQR sering digunakan untuk mendeteksi anomali berbasis statistik. Namun, metode tersebut memiliki keterbatasan ketika data memiliki hubungan non-linear yang kompleks.
Deep Learning menawarkan pendekatan yang lebih kuat melalui model Autoencoder.
Autoencoder mampu mempelajari representasi laten (latent representation) dari data normal dan mengidentifikasi anomali berdasarkan reconstruction error.
Artikel ini bertujuan untuk:
- Menjelaskan konsep Autoencoder
- Mengimplementasikan Autoencoder untuk anomaly detection
- Menggunakan dataset transaksi retail nyata
- Menganalisis hasil deteksi anomali
2. TINJAUAN PUSTAKA
2.1 Anomaly Detection
Anomali adalah data yang menyimpang secara signifikan dari pola normal.
Jenis anomali:
- Point anomaly
- Contextual anomaly
- Collective anomaly
Dalam konteks retail, contoh anomali:
- Total belanja sangat besar dibanding transaksi normal
- Quantity tidak wajar
- Revenue tidak konsisten
2.2 Autoencoder
Autoencoder adalah neural network yang dilatih untuk merekonstruksi input menjadi output yang identik.
Struktur Autoencoder terdiri dari:
- Encoder → Mengompresi data
- Bottleneck (latent space)
- Decoder → Merekonstruksi data
Tujuan training:
Minimalkan reconstruction loss:
Loss = ||X – X_hat||²
Konsep penting:
- Latent representation
- Reconstruction error
- Threshold anomali
3. METODOLOGI PENELITIAN
3.1 Dataset
Dataset retail terdiri dari 12.418 transaksi dengan 13 kolom.
Fitur yang digunakan untuk deteksi anomali:
- price_per_unit
- quantity
- total_spent
- Revenue
Fitur kategorikal tidak digunakan karena Autoencoder bekerja optimal pada data numerik.
3.2 Tahapan Penelitian
- Data preprocessing
- Normalisasi data
- Split data (training normal data)
- Membangun model Autoencoder
- Training model
- Menghitung reconstruction error
- Menentukan threshold
- Evaluasi dan analisis hasil
4. IMPLEMENTASI PRAKTIK (PYTHON)
Untuk bahan praktik ini, download dataset disini
Berikut implementasi lengkap menggunakan TensorFlow/Keras. Jalankan kode ini di Google Colab.
4.1 Import Library
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense
4.2 Upload Dataset dari Komputer (Google Colab)
from google.colab import files
import iouploaded = files.upload()# Ambil nama file CSV yang di-upload
file_name = list(uploaded.keys())[0]# Load dataset
df = pd.read_csv(io.BytesIO(uploaded[file_name]))print("Dataset berhasil di-load!")
print("Ukuran dataset:", df.shape)
df.head()
📌 Cara pakai:
- Jalankan cell
- Klik Choose Files
- Pilih file CSV dari komputer
- Dataset langsung masuk ke
df
4.3 Seleksi Fitur Numerik (Untuk Autoencoder)
features = df[
['price_per_unit', 'quantity', 'total_spent', 'Revenue']
]print("Fitur yang digunakan:")
features.head()
4.4 Normalisasi Data
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(features)print("Data sudah dinormalisasi")
4.5 Membangun Arsitektur Autoencoder

input_dim = scaled_data.shape[1]input_layer = Input(shape=(input_dim,))# Encoder
encoder = Dense(16, activation="relu")(input_layer)
encoder = Dense(8, activation="relu")(encoder)
encoder = Dense(4, activation="relu")(encoder)# Bottleneck
bottleneck = Dense(2, activation="relu")(encoder)# Decoder
decoder = Dense(4, activation="relu")(bottleneck)
decoder = Dense(8, activation="relu")(decoder)
decoder = Dense(16, activation="relu")(decoder)output_layer = Dense(input_dim, activation="sigmoid")(decoder)autoencoder = Model(inputs=input_layer, outputs=output_layer)
autoencoder.compile(optimizer="adam", loss="mse")autoencoder.summary()
4.6 Training Model Autoencoder

history = autoencoder.fit(
scaled_data,
scaled_data,
epochs=50,
batch_size=32,
shuffle=True,
validation_split=0.2
)
4.7 Visualisasi Loss Training
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.legend()
plt.title("Training vs Validation Loss")
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.show()
4.8 Hitung Reconstruction Error
reconstructions = autoencoder.predict(scaled_data)reconstruction_error = np.mean(
np.square(scaled_data - reconstructions),
axis=1
)df['reconstruction_error'] = reconstruction_error
df.head()
4.9 Tentukan Threshold Anomali
threshold = np.percentile(reconstruction_error, 95)
print("Threshold Anomali:", threshold)
5. DETEKSI ANOMALI
df['anomaly'] = df['reconstruction_error'] > thresholdprint("Jumlah Anomali:", df['anomaly'].sum())
df[df['anomaly'] == True].head()
5.1 Visualisasi Distribusi Error

plt.hist(reconstruction_error, bins=50)
plt.axvline(threshold)
plt.title("Distribusi Reconstruction Error")
plt.xlabel("Reconstruction Error")
plt.ylabel("Jumlah Data")
plt.show()
5.2 Analisis Anomali
Biasanya ditemukan:
- Transaksi dengan Revenue sangat tinggi
- Quantity ekstrem
- Total_spent tidak sebanding dengan price_per_unit
Ini dapat mengindikasikan:
- Potensi fraud
- Kesalahan pencatatan
- Diskon abnormal
6. PEMBAHASAN
6.1 Keunggulan Autoencoder
- Tidak perlu label data
- Dapat menangkap hubungan non-linear
- Cocok untuk high-dimensional data
6.2 Keterbatasan
- Sulit menentukan threshold optimal
- Sensitif terhadap overfitting
- Perlu tuning arsitektur
6.3 Perbandingan dengan Metode Statistik
Metode Statistik:
- Cepat
- Mudah
Autoencoder:
- Lebih kompleks
- Lebih adaptif terhadap pola non-linear
7. PENGEMBANGAN LANJUTAN
Beberapa pengembangan yang bisa kamu tulis untuk memperpanjang artikel:
- Variational Autoencoder (VAE)
- Isolation Forest comparison
- Visualisasi latent space
- Menggunakan fitur kategorikal dengan encoding
- Deploy model sebagai API
8. KESIMPULAN
Penelitian ini menunjukkan bahwa Autoencoder efektif dalam mendeteksi anomali pada data transaksi retail tanpa memerlukan label data.
Dengan memanfaatkan reconstruction error sebagai indikator penyimpangan, sistem mampu mengidentifikasi transaksi yang berbeda secara signifikan dari pola normal.
Hasil menunjukkan bahwa sebagian kecil transaksi memiliki nilai reconstruction error tinggi, yang berpotensi menjadi indikasi anomali atau penyimpangan bisnis.
Autoencoder memberikan pendekatan yang fleksibel dan scalable untuk anomaly detection pada sistem retail modern.