Skip to main content

Modelling: Memilih & Melatih Model

Setelah memahami problem definition, mengenali jenis data, melakukan preprocessing, serta membagi dataset menjadi training, validation, dan test set, tahap berikutnya adalah modelling.

Modelling adalah proses memilih algoritma Machine Learning yang sesuai, melatihnya menggunakan data, melakukan optimasi, kemudian membandingkan hasilnya dengan model lain.

Secara sederhana:

Data
↓
Memilih Model
↓
Training
↓
Evaluasi
↓
Tuning
↓
Perbandingan Model
↓
Model Terbaik

Modelling bukan hanya tentang memilih algoritma yang paling canggih. Tujuan utamanya adalah menemukan model yang cukup baik untuk menyelesaikan masalah dengan efisien dan dapat melakukan generalisasi terhadap data baru.


3 Tahapan Utama dalam Modelling​

Secara umum, proses modelling dapat dibagi menjadi tiga tahapan utama:

  1. Choosing and Training a Model
  2. Tuning a Model
  3. Model Comparison

Ketiga tahapan tersebut biasanya dilakukan secara iteratif.

┌──────────────────────┐
│ Choosing a Model │
└──────────┬───────────┘
↓
┌──────────────────────┐
│ Training the Model │
└──────────┬───────────┘
↓
┌──────────────────────┐
│ Evaluate the Model │
└──────────┬───────────┘
↓
┌──────────────────────┐
│ Tune the Model │
└──────────┬───────────┘
↓
┌──────────────────────┐
│ Compare Models │
└──────────┬───────────┘
↓
Model Terbaik

Namun dalam praktiknya, proses tersebut tidak selalu berjalan satu kali dari atas ke bawah.

Sering kali prosesnya seperti:

Model A
↓
Training → Evaluation
↓
Tuning
↓
Evaluation
↓
Model B
↓
Training → Evaluation
↓
Comparison
↓
Model terbaik

Inilah salah satu alasan mengapa Machine Learning disebut sebagai proses yang iteratif.


Choosing and Training a Model​

Tahap pertama adalah menentukan algoritma yang akan digunakan dan melatih algoritma tersebut menggunakan training data.

Misalnya kita memiliki dataset untuk memprediksi harga rumah.

Features (X)
├── Luas rumah
├── Jumlah kamar
├── Jumlah kamar mandi
└── Lokasi

Target (y)
└── Harga rumah

Model akan mencoba mempelajari hubungan antara X dan y.

Secara sederhana:

X
│
│ Luas
│ Kamar
│ Lokasi
│
▼
┌─────────────────┐
│ Machine │
│ Learning Model │
└────────┬────────┘
│
▼
Prediksi
│
▼
Harga Rumah

Tujuan training adalah membuat model menemukan pola yang dapat digunakan untuk menghasilkan prediksi pada data baru.


Input dan Output dalam Machine Learning​

Dalam supervised learning, kita biasanya memiliki dua komponen utama:

  • X → Features atau input
  • y → Target atau label

Contohnya:

X = [
[100, 3, 2],
[150, 4, 2],
[200, 5, 3]
]

y = [
500000000,
750000000,
1000000000
]

Pada contoh tersebut:

X
├── Luas rumah
├── Jumlah kamar
└── Jumlah kamar mandi

y
└── Harga rumah

Model akan belajar hubungan antara kedua komponen tersebut.


Training Model​

Training adalah proses memberikan data kepada algoritma agar algoritma dapat mempelajari pola yang terdapat di dalam data.

Contoh sederhana menggunakan LinearRegression:

from sklearn.linear_model import LinearRegression

model = LinearRegression()

model.fit(X_train, y_train)

Pada kode tersebut:

model.fit(X_train, y_train)

berarti model dilatih menggunakan:

  • X_train → data fitur
  • y_train → target

Setelah training selesai, model dapat digunakan untuk melakukan prediksi.

predictions = model.predict(X_test)

Model Belajar dari Kesalahan​

Model Machine Learning tidak sekadar menghafal data.

Selama training, model mencoba menemukan parameter yang menghasilkan prediksi sebaik mungkin berdasarkan objective atau loss function yang digunakan.

Secara sederhana:

Training Data
↓
Model membuat prediksi
↓
Prediksi dibandingkan dengan target
↓
Menghitung error
↓
Model memperbaiki parameter
↓
Prediksi berikutnya
↓
Berulang

Contohnya pada regresi:

Harga sebenarnya : 500 juta
Prediksi model : 450 juta

Error : 50 juta

Model kemudian berusaha menemukan parameter yang menghasilkan error yang lebih kecil.

Cara proses optimasi tersebut berlangsung bergantung pada algoritma yang digunakan.


Training Set untuk Melatih Model​

Dalam workflow Machine Learning, data biasanya dibagi menjadi beberapa bagian.

Salah satu pembagian yang umum adalah:

Dataset
│
├── Training Set
├── Validation Set
└── Test Set

Training Set digunakan untuk melatih model.

Validation Set digunakan untuk membantu memilih model dan melakukan tuning.

Test Set digunakan untuk mengevaluasi performa akhir model pada data yang belum digunakan dalam proses pengembangan model.

Contoh:

Dataset = 10.000 data

Training Set → 8.000
Validation Set → 1.000
Test Set → 1.000

Pembagian tersebut bukan aturan wajib. Proporsinya dapat disesuaikan dengan ukuran dataset dan kebutuhan eksperimen.


Mengapa Test Set Tidak Digunakan untuk Training?​

Test Set dapat dianggap sebagai ujian akhir.

Bayangkan seorang siswa:

Belajar
↓
Latihan
↓
Simulasi
↓
Ujian

Jika soal ujian diberikan kepada siswa sebelum ujian dan digunakan untuk belajar, maka hasil ujian tidak lagi memberikan gambaran yang objektif.

Hal yang sama berlaku pada Machine Learning.

Jika model dilatih menggunakan Test Set, kita tidak lagi memiliki data yang benar-benar independen untuk mengukur kemampuan generalisasi model.

Oleh karena itu:

Training Set
↓
Model
↓
Validation Set
↓
Pemilihan & Tuning
↓
Final Model
↓
Test Set
↓
Evaluasi Akhir

Memilih Model Berdasarkan Jenis Data​

Tidak ada satu algoritma yang selalu menjadi algoritma terbaik untuk semua masalah.

Pemilihan model harus mempertimbangkan:

  • jenis data
  • ukuran dataset
  • jumlah fitur
  • jenis masalah
  • kebutuhan interpretasi
  • waktu training
  • kebutuhan deployment
  • resource komputasi
  • performa yang diharapkan

Salah satu pertimbangan penting adalah apakah data yang digunakan merupakan structured data atau unstructured data.


Structured Data​

Structured data adalah data yang memiliki struktur yang jelas, biasanya berbentuk tabel.

Contohnya:

UmurPendapatanJumlah TransaksiMembeli
2550000003Ya
3180000008Ya
2230000001Tidak
451200000010Ya

Data seperti ini umum ditemukan dalam:

  • database
  • spreadsheet
  • sistem transaksi
  • sistem informasi
  • data pelanggan
  • data keuangan

Untuk structured data, model berbasis tree sering menjadi pilihan yang sangat kuat.

Contohnya:

  • Decision Tree
  • Random Forest
  • Gradient Boosting
  • XGBoost
  • CatBoost

Tree-Based Models​

Decision Tree bekerja dengan membuat serangkaian keputusan berdasarkan fitur.

Contoh sederhana:

Apakah pendapatan > 10 juta?
│
┌────┴────┐
│ │
Ya Tidak
│ │
▼ ▼
Beli? Apakah umur > 30?
│
┌────┴────┐
│ │
Ya Tidak
│ │
▼ ▼
Beli Tidak Beli

Decision Tree kemudian dapat dikembangkan menjadi model ensemble seperti Random Forest dan Gradient Boosting.


Random Forest​

Random Forest adalah ensemble model yang menggunakan banyak Decision Tree.

Secara sederhana:

Dataset
│
├── Tree 1 ──→ Prediksi
├── Tree 2 ──→ Prediksi
├── Tree 3 ──→ Prediksi
├── Tree 4 ──→ Prediksi
└── Tree 5 ──→ Prediksi
│
▼
Gabungkan Prediksi
│
▼
Final Prediction

Kelebihan Random Forest antara lain:

  • kuat untuk banyak jenis structured data
  • mampu menangani hubungan non-linear
  • relatif mudah digunakan
  • tidak memerlukan preprocessing yang terlalu kompleks pada banyak kasus
  • dapat digunakan untuk classification maupun regression

Contoh:

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(
n_estimators=100,
random_state=42
)

model.fit(X_train, y_train)

Gradient Boosting​

Gradient Boosting juga merupakan pendekatan ensemble berbasis tree.

Berbeda dengan Random Forest yang membangun banyak tree secara relatif independen, Gradient Boosting membangun model secara bertahap, dengan model berikutnya berusaha memperbaiki kesalahan model sebelumnya.

Secara sederhana:

Data
↓
Model 1
↓
Error
↓
Model 2 memperbaiki error
↓
Error
↓
Model 3 memperbaiki error
↓
...
↓
Final Model

Beberapa implementasi populer antara lain:

  • XGBoost
  • CatBoost
  • LightGBM
  • HistGradientBoosting

Contoh menggunakan XGBoost:

from xgboost import XGBClassifier

model = XGBClassifier(
n_estimators=100,
random_state=42
)

model.fit(X_train, y_train)

Unstructured Data​

Unstructured data adalah data yang tidak memiliki struktur tabel sederhana seperti data database.

Contohnya:

  • gambar
  • audio
  • video
  • teks
  • dokumen
  • suara

Contoh gambar:

┌───────────────────────┐
│ │
│ 🐱 │
│ │
│ Gambar │
│ │
└───────────────────────┘

Komputer harus memproses representasi numerik dari data tersebut sebelum model dapat menggunakannya.

Untuk jenis data seperti ini, Deep Learning sering menjadi pendekatan yang sangat efektif.


Deep Learning​

Deep Learning merupakan pendekatan Machine Learning yang menggunakan neural network dengan banyak lapisan.

Contoh sederhana:

Input
↓
Input Layer
↓
Hidden Layer
↓
Hidden Layer
↓
Output Layer
↓
Prediction

Untuk gambar, misalnya, model dapat mempelajari pola secara bertingkat:

Pixel
↓
Edges
↓
Shapes
↓
Parts
↓
Object

Inilah salah satu alasan Deep Learning sangat populer untuk computer vision.


Transfer Learning​

Selain melatih model dari awal, kita juga dapat menggunakan Transfer Learning.

Transfer Learning berarti menggunakan model yang sebelumnya sudah dilatih pada dataset besar kemudian menyesuaikannya untuk masalah baru.

Contohnya:

Model Pretrained
↓
Pengetahuan yang sudah dipelajari
↓
Transfer Learning
↓
Dataset kita
↓
Fine-Tuning
↓
Model untuk kebutuhan kita

Pendekatan ini sangat berguna ketika dataset yang kita miliki relatif kecil.


Perbandingan Pendekatan Berdasarkan Data​

Secara umum:

Jenis DataPendekatan yang Sering Digunakan
Structured DataDecision Tree
Structured DataRandom Forest
Structured DataGradient Boosting
Structured DataXGBoost
Structured DataCatBoost
GambarDeep Learning
TeksDeep Learning / NLP
AudioDeep Learning
VideoDeep Learning
Dataset kecil untuk masalah tertentuTransfer Learning

Namun tabel tersebut bukan aturan mutlak.

Pemilihan model tetap harus dilakukan melalui eksperimen dan evaluasi.


Jangan Langsung Menggunakan Model yang Kompleks​

Salah satu kesalahan yang sering dilakukan ketika mulai belajar Machine Learning adalah langsung memilih model yang sangat kompleks.

Misalnya:

Masalah sederhana
↓
Langsung menggunakan
Deep Neural Network
↓
Training sangat lama
↓
Sulit melakukan debugging
↓
Performa ternyata tidak jauh berbeda

Pendekatan yang lebih baik adalah memulai dengan baseline model.

Contohnya:

Problem
↓
Simple Baseline
↓
Evaluation
↓
Model lebih kompleks
↓
Evaluation
↓
Comparison

Dengan cara tersebut kita memiliki titik pembanding.


Apa Itu Baseline Model?​

Baseline adalah model awal yang digunakan sebagai referensi.

Tujuannya bukan selalu menghasilkan performa terbaik.

Tujuan utamanya adalah mengetahui:

"Seberapa baik kita bisa menyelesaikan masalah ini dengan pendekatan sederhana?"

Misalnya kita memiliki masalah classification.

Kita dapat memulai dengan:

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=1000)

model.fit(X_train, y_train)

Kemudian evaluasi:

score = model.score(X_test, y_test)

print(f"Accuracy: {score:.2%}")

Misalnya hasilnya:

Accuracy: 82%

Kemudian kita mencoba Random Forest:

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(
n_estimators=100,
random_state=42
)

model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print(f"Accuracy: {score:.2%}")

Misalnya:

Accuracy: 89%

Sekarang kita memiliki perbandingan:

Logistic Regression → 82%
Random Forest → 89%

Random Forest memberikan hasil yang lebih baik pada eksperimen tersebut.


Machine Learning adalah Proses Iteratif​

Machine Learning hampir tidak pernah selesai hanya dengan satu kali training.

Dalam praktiknya, prosesnya lebih mirip:

Problem
↓
Data
↓
Model
↓
Training
↓
Evaluation
↓
Apakah hasil cukup baik?
│
├── Tidak
│ ↓
│ Perbaiki
│ ↓
│ Training kembali
│
└── Ya
↓
Model Final

Kita dapat melakukan perubahan pada:

  • preprocessing
  • fitur
  • algoritma
  • hyperparameter
  • jumlah data
  • teknik sampling
  • threshold
  • strategi training

Kemudian melakukan training dan evaluasi kembali.


Start Small​

Ketika dataset sangat besar, jangan selalu memulai eksperimen menggunakan seluruh dataset.

Misalnya kita memiliki:

100.000 data

Daripada langsung melakukan eksperimen menggunakan seluruh data, kita dapat mencoba:

10.000 data

terlebih dahulu.

Tujuannya adalah mempercepat siklus eksperimen.

Contohnya:

100.000 data
↓
Training 20 menit
↓
Eksperimen
↓
Ternyata preprocessing salah
↓
Training ulang
↓
20 menit lagi

Jika menggunakan dataset kecil:

10.000 data
↓
Training 2 menit
↓
Eksperimen
↓
Perbaiki
↓
Training ulang
↓
2 menit

Kita dapat melakukan lebih banyak eksperimen dalam waktu yang sama.


Mengapa Eksperimen Cepat Itu Penting?​

Misalnya sebuah eksperimen membutuhkan 30 menit.

Jika kita memiliki waktu 3 jam:

3 jam
÷
30 menit
=
6 eksperimen

Tetapi jika satu eksperimen hanya membutuhkan 3 menit:

3 jam
÷
3 menit
=
60 eksperimen

Eksperimen yang lebih cepat memungkinkan kita mencoba lebih banyak kemungkinan.

Karena itu, dalam Machine Learning:

Faster iteration often means faster learning.


Setelah Model Bekerja, Gunakan Data Lebih Besar​

Menggunakan dataset kecil bukan berarti kita akan selalu menggunakan dataset tersebut pada model final.

Dataset kecil digunakan untuk eksperimen awal.

Setelah pipeline dan pendekatan terbukti bekerja, kita dapat meningkatkan jumlah data.

Contohnya:

Tahap 1
10.000 data
↓
Eksperimen berhasil
↓
Tahap 2
50.000 data
↓
Eksperimen berhasil
↓
Tahap 3
100.000 data
↓
Final Training

Dengan demikian, proses pengembangan menjadi lebih efisien.


Membandingkan Model​

Setelah mencoba beberapa algoritma, kita perlu membandingkan performanya.

Misalnya:

ModelAccuracy
Logistic Regression82%
Decision Tree84%
Random Forest89%
Gradient Boosting91%

Dari hasil tersebut, Gradient Boosting memiliki accuracy paling tinggi.

Namun jangan hanya melihat satu angka.

Kita juga perlu mempertimbangkan:

  • waktu training
  • waktu prediction
  • penggunaan memory
  • kompleksitas model
  • interpretabilitas
  • ukuran model
  • kebutuhan deployment
  • kemampuan generalisasi

Misalnya:

Model A
Accuracy : 90%
Training : 1 menit
Model size: 20 MB

Model B
Accuracy : 91%
Training : 8 jam
Model size: 2 GB

Perbedaan accuracy hanya 1%, tetapi biaya komputasinya sangat berbeda.

Dalam kasus tertentu, Model A justru dapat menjadi pilihan yang lebih baik.


Fokus pada Hasil Praktis​

Tujuan Machine Learning bukan sekadar mendapatkan skor benchmark paling tinggi.

Tujuan sebenarnya adalah membuat sistem yang berguna untuk menyelesaikan masalah nyata.

Misalnya:

Model A
Accuracy = 90%
Training = 1 menit

Model B
Accuracy = 91%
Training = 10 jam

Jika tambahan 1% performa tidak memberikan manfaat bisnis yang berarti, menggunakan Model B mungkin tidak sebanding dengan biaya komputasinya.

Karena itu, kita perlu mempertimbangkan trade-off.

Performance
↕
Complexity
↕
Training Time
↕
Inference Time
↕
Infrastructure Cost
↕
Maintainability

Model terbaik bukan selalu model dengan skor tertinggi.

Model terbaik adalah model yang memberikan keseimbangan yang sesuai dengan kebutuhan masalah.


Contoh Workflow Modelling dengan Scikit-Learn​

Berikut contoh sederhana workflow modelling untuk classification.

Import Library​

import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

Menyiapkan Data​

Misalnya kita sudah memiliki:

X = df.drop("target", axis=1)
y = df["target"]

Kemudian membagi data:

X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42,
stratify=y
)

Membuat Baseline Model​

Kita dapat menggunakan Logistic Regression sebagai model awal.

baseline_model = LogisticRegression(
max_iter=1000
)

baseline_model.fit(
X_train,
y_train
)

Kemudian melakukan prediksi:

baseline_predictions = baseline_model.predict(X_test)

Evaluasi:

baseline_accuracy = accuracy_score(
y_test,
baseline_predictions
)

print(f"Baseline Accuracy: {baseline_accuracy:.2%}")

Mencoba Model Lain​

Selanjutnya kita dapat mencoba Random Forest.

rf_model = RandomForestClassifier(
n_estimators=100,
random_state=42
)

rf_model.fit(
X_train,
y_train
)

Prediksi:

rf_predictions = rf_model.predict(X_test)

Evaluasi:

rf_accuracy = accuracy_score(
y_test,
rf_predictions
)

print(f"Random Forest Accuracy: {rf_accuracy:.2%}")

Membandingkan Model​

Hasil dapat disimpan dalam dictionary:

results = {
"Logistic Regression": baseline_accuracy,
"Random Forest": rf_accuracy
}

for model_name, score in results.items():
print(f"{model_name}: {score:.2%}")

Contoh output:

Logistic Regression: 82.50%
Random Forest: 89.00%

Dari eksperimen tersebut kita dapat melanjutkan ke tahap berikutnya, yaitu tuning dan eksperimen lebih lanjut.


Jangan Terlalu Cepat Menyimpulkan Model Terbaik​

Jika Random Forest mendapatkan accuracy 89% dan Logistic Regression mendapatkan 82%, bukan berarti Random Forest selalu lebih baik.

Hasil tersebut hanya berlaku pada eksperimen dan kondisi dataset tersebut.

Kita masih perlu mempertimbangkan:

Apakah data sudah diproses dengan benar?
↓
Apakah metric yang digunakan tepat?
↓
Apakah pembagian data tepat?
↓
Apakah model mengalami overfitting?
↓
Bagaimana hasil validation?
↓
Bagaimana hasil test?
↓
Bagaimana performa pada data baru?

Karena itu, pemilihan model harus dilakukan secara sistematis.


Prinsip Praktis dalam Memilih Model​

Beberapa prinsip yang dapat digunakan:

1. Mulai dari Model Sederhana​

Jangan langsung menggunakan model kompleks.

Mulailah dengan baseline.

Simple Model
↓
Measure
↓
Improve

2. Gunakan Model yang Sesuai dengan Data​

Structured data sering cocok dengan tree-based models.

Unstructured data sering membutuhkan pendekatan Deep Learning.

Namun tetap lakukan eksperimen.

3. Perhatikan Ukuran Dataset​

Dataset kecil tidak selalu membutuhkan model yang sangat kompleks.

Dataset besar dapat membuka lebih banyak kemungkinan untuk model yang lebih kompleks.

4. Pertimbangkan Resource​

Perhatikan:

  • CPU
  • GPU
  • RAM
  • storage
  • waktu training
  • biaya cloud

5. Jangan Mengejar Kompleksitas​

Model kompleks belum tentu memberikan hasil yang lebih baik.

6. Gunakan Baseline​

Baseline memberikan titik pembanding yang jelas.

7. Lakukan Eksperimen Secara Iteratif​

Jangan berharap mendapatkan model terbaik pada percobaan pertama.


Checklist Choosing and Training a Model​

Sebelum melanjutkan ke tahap berikutnya, pastikan:

  • Problem sudah didefinisikan dengan jelas
  • Jenis masalah sudah diketahui
  • Features dan target sudah ditentukan
  • Data sudah dipisahkan dengan benar
  • Training set sudah tersedia
  • Model baseline sudah dibuat
  • Model sudah dilatih
  • Prediksi sudah dilakukan
  • Metric sudah dipilih
  • Performa model sudah diukur
  • Model alternatif sudah dicoba
  • Hasil antar-model sudah dibandingkan
  • Waktu training sudah dipertimbangkan
  • Kompleksitas model sudah dipertimbangkan

Ringkasan​

Modelling merupakan salah satu bagian penting dalam workflow Machine Learning.

Tiga tahapan utama dalam modelling adalah:

1. Choosing and Training a Model
2. Tuning a Model
3. Model Comparison

Model dilatih menggunakan hubungan antara:

X = Features / Inputs
y = Target / Labels

Training dilakukan menggunakan Training Set, sedangkan Validation Set dan Test Set digunakan untuk proses evaluasi dan pengambilan keputusan model.

Untuk structured data, model berbasis Decision Tree dan ensemble seperti Random Forest serta Gradient Boosting sering menjadi pilihan yang kuat.

Untuk unstructured data seperti gambar, teks, audio, dan video, Deep Learning serta Transfer Learning sering menjadi pendekatan yang efektif.

Hal yang sangat penting adalah tidak selalu menggunakan model paling kompleks.

Workflow yang lebih baik adalah:

Start Small
↓
Build Baseline
↓
Train
↓
Evaluate
↓
Try Another Model
↓
Compare
↓
Tune
↓
Scale Up
↓
Final Model

Machine Learning merupakan proses eksperimen yang iteratif. Dengan memulai dari model sederhana, dataset yang lebih kecil, dan eksperimen yang cepat, kita dapat belajar lebih cepat dan mengurangi waktu yang terbuang.

Pada materi berikutnya, kita akan membahas Tuning a Model, yaitu bagaimana menyesuaikan hyperparameter agar model yang sudah dipilih dapat memberikan performa yang lebih baik.