Seluruh model yang kita bahas sepanjang course ini — regresi linear, pohon keputusan, hingga gradient boosting — hidup dalam satu dunia yang sama: mereka belajar dari fitur yang sudah tersaji, dan kualitas mereka sangat bergantung pada seberapa baik fitur itu dirancang. Deep learning menempuh jalan berbeda: daripada memakai fitur buatan tangan, ia menyusun lapisan-lapisan kecil yang belajar sendiri menyaring representasi dari data mentah — inilah kata “deep”-nya, kedalaman lapisan. Kita tidak akan membangun jaringan raksasa di sini; justru sebaliknya: kita membedah jaringan terkecil yang mungkin dengan MLPClassifier scikit-learn — kerabat dekat deep learning yang sudah ada di kotak peralatan kita — supaya konsep neuron, lapisan, dan aktivasi terlihat dari dekat sebelum menyentuh pustaka yang lebih berat.
Dari Satu Neuron ke Jaringan #
Blok terkecil jaringan saraf tiruan adalah neuron — dan ia lebih sederhana dari namanya. Sebuah neuron menerima beberapa masukan angka, memberi bobot pada masing-masing, menjumlahkannya dengan sebuah bias, lalu menggeser hasilnya lewat fungsi aktivasi. Itu seluruhnya:
import numpy as np
# satu "neuron": jumlah tertimbang + aktivasi
bobot = np.array([0.6, -0.4])
bias = 0.1
masukan = np.array([1.0, 0.8]) # [umur ternormalisasi, frekuensi belanja]
z = bobot @ masukan + bias # gabungan linear
keluaran = 1 / (1 + np.exp(-z)) # aktivasi sigmoid
print("Gabungan linear z :", round(float(z), 3))
print("Keluaran sigmoid :", round(float(keluaran), 3))Output yang Dihasilkan:
Gabungan linear z : 0.38
Keluaran sigmoid : 0.594Mari kita telaah baris-baris pentingnya:
- Baris 8 (
bobot @ masukan + bias): gabungan linear — persis bentuk yang dihitung regresi linear. Satu neuron tanpa aktivasi memang hanya regresi linear kecil. - Baris 10 (sigmoid): fungsi aktivasi menekan hasil ke rentang 0-1, dan yang terpenting — ia melengkungkan ruang hitung. Tanpa aktivasi non-linear, seribu neuron pun yang tersusun tetap hanya bisa menghasilkan garis lurus.
- Bobot dan bias inilah “yang dipelajari”: pelatihan jaringan adalah pencarian nilai bobot dan bias yang membuat keluaran-keluaran lapisan berguna bagi lapisan berikutnya.
Kekuatan muncul ketika neuron disusun berlapis: lapisan pertama menyaring pola sederhana (misalnya “belanja tinggi DAN umur muda”), lapisan kedua menggabungkan pola-pola itu menjadi konsep lebih besar, dan seterusnya. hidden_layer_sizes=(8,) berarti satu lapisan tersembunyi berisi delapan neuron antara masukan dan keluaran.
Kapan Lapisan Menyala: Batas Model Linear #
Contoh klasiknya adalah data berbentuk lingkaran: pelanggan loyal justru yang berada di tengah (datang dekat, kafe langganan), dan pelanggan sesekali tersebar di pinggir. Tidak ada satu garis pun yang memisahkan kedua kelompok ini — dunia model linear berhenti di sini, jaringan saraf melangkah:
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.neural_network import MLPClassifier
rng = np.random.default_rng(42)
n = 120
# data lingkaran: pelanggan "loyal" justru di tengah (non-linear)
sudut = rng.uniform(0, 2 * np.pi, n)
jarak = rng.choice([0.4, 1.0], n, p=[0.5, 0.5]) + rng.normal(0, 0.08, n)
umur = jarak * np.cos(sudut)
belanja = jarak * np.sin(sudut)
loyal = (jarak < 0.7).astype(int)
X = np.column_stack([umur, belanja])
X_latih, X_uji, y_latih, y_uji = train_test_split(
X, loyal, test_size=0.25, random_state=42, stratify=loyal)
skala = StandardScaler().fit(X_latih)
Xl, Xu = skala.transform(X_latih), skala.transform(X_uji)
model_linear = LogisticRegression().fit(Xl, y_latih)
model_mlp = MLPClassifier(hidden_layer_sizes=(8,), max_iter=2000,
random_state=42).fit(Xl, y_latih)
print(f"Akurasi LogisticRegression : {model_linear.score(Xu, y_uji):.3f}")
print(f"Akurasi MLP (8 neuron) : {model_mlp.score(Xu, y_uji):.3f}")
n_param = (model_mlp.coefs_[0].size + model_mlp.coefs_[1].size
+ model_mlp.intercepts_[0].size + model_mlp.intercepts_[1].size)
print(f"Jumlah parameter MLP : {n_param}")Output yang Dihasilkan:
Akurasi LogisticRegression : 0.467
Akurasi MLP (8 neuron) : 1.000
Jumlah parameter MLP : 33Mari kita telaah hasilnya:
- Regresi logistik kandas (0,467 — di bawah lempar koin): model linear hanya bisa memasang satu garis pemisah, dan untuk kelompok konsentris garis mana pun membelah dua lingkaran sekaligus. Bukan soal kualitas data — soal bentuk alatnya.
- MLP dengan 8 neuron menuntaskan (1,000): delapan neuron lapisan pertama masing-masing mempelajari satu “garis imajiner”; keluaran-keluarannya digabung lapisan berikutnya menjadi batas lengkung mengelilingi kelompok tengah. Kapasitas membentuk batas non-linear inilah inti keunggulan jaringan saraf.
- Harganya terbaca di jumlah parameter: 33 angka yang harus dipelajari dari data — bobot dan bias seluruh neuron. Parameter tumbuh cepat seiring lebar dan kedalaman jaringan; itulah sebabnya jaringan besar membutuhkan data besar pula, sebagaimana model apa pun: tanpa cukup data, kapasitas berubah menjadi mesin hafalan (ingat overfitting di Section Dasar Machine Learning).
- Scaling tetap wajib: jaringan saraf sensitif terhadap skala masukan —
StandardScalerdi-fit pada data latih sebelum kedua model dilatih, persis disiplin anti-kebocoran kita.
Daerah yang Layak dan Tidak Layak #
Deep learning bukan sekadar “versi lebih baik” dari model biasa — ia alat dengan daerah kerja yang jelas:
| Situasi | Layak deep learning? | Alasan |
|---|---|---|
| Citra, audio, teks panjang | Ya | Pola hierarkisnya dalam; fitur tangan kalah canggih |
| Data tabular kecil-menengah | Umumnya tidak | Gradient boosting/linear lebih akurat, cepat, mudah dijelaskan |
| Data tabular raksasa + hubungan rumit | Kadang | Perlu eksperimen jujur melawan baseline gradient boosting |
| Butuh interpretasi ketat | Hati-hati | Lapisan menengah sulit dibaca (lihat chapter Explainable AI) |
| Sumber daya terbatas | Tidak | Pelatihan dan penyajian menuntut komputasi besar |
Catatan terakhir yang sering dilupakan: deep learning tidak membatalkan semua yang kita pelajari — split data, evaluasi, baseline, kebocoran, penskalaan, semuanya tetap berlaku dan justru lebih kritis karena jumlah parameternya besar. Fondasinya sama; hanya bentuk alatnya yang berubah.
Rangkuman #
- Neuron = gabungan linear (bobot, bias) plus fungsi aktivasi non-linear; tanpa aktivasi, susunan neuron apa pun tetap hanya model linear.
- Lapisan tersembunyi membangun representasi bertingkat: pola sederhana dirangkai jadi konsep besar — “deep” merujuk kedalaman lapisan ini.
- Pada data konsentris, model linear gagal total (0,467) sementara MLP 8 neuron memisahkan sempurna — batas non-linear adalah keunggulan intinya.
- Kapasitas besar menuntut data besar: parameter yang banyak tanpa cukup data berujung hafalan; seluruh disiplin evaluasi dan anti-kebocoran tetap berlaku.
- Deep learning unggul di citra/audio/teks; untuk tabular kecil-menengah, gradient boosting biasanya lebih praktis dan setara atau lebih baik.
Teknik-teknik lanjutan yang kita jelajahi sepanjang Section ini — dari deteksi anomali sampai deep learning — memancarkan pesona yang bisa membuat kita lupa bertanya: apakah semua ini sepadan? Chapter penutup section mengajukan pertanyaan itu dengan jujur: Batasan Teknik Lanjutan .