Skip to main content

Experimentation

Setelah melakukan problem definition, memahami data, menentukan evaluation metric, menentukan features, memilih model, melakukan training, tuning, dan model comparison, kita sampai pada tahap yang sangat penting dalam Machine Learning:

Experimentation

Eksperimentasi adalah proses mencoba berbagai pendekatan untuk menemukan solusi yang memberikan hasil terbaik terhadap suatu permasalahan.

Pertanyaan utama pada tahap ini adalah:

Apa yang sudah kita coba?

Apa yang belum kita coba?

Apa yang bisa kita ubah?

Apa yang bisa kita tingkatkan?

Machine Learning bukan proses yang dilakukan satu kali.

Kita tidak selalu mendapatkan model terbaik pada percobaan pertama.


Machine Learning Bukan Proses Linear

Pemula sering membayangkan workflow Machine Learning seperti:

Problem

Data

Features

Model

Evaluation

Selesai

Dalam proyek nyata, prosesnya lebih sering berbentuk siklus:

Problem

Data

Evaluation

Features

Modelling

Experimentation

Evaluation

Perbaikan

Experimentation

Evaluation

...

Kita dapat kembali ke tahap sebelumnya kapan saja jika hasil belum memenuhi requirement.


Mengapa Eksperimentasi Diperlukan?

Bayangkan kita membuat model untuk memprediksi harga rumah.

Model pertama menghasilkan:

MAE = Rp100 juta

Stakeholder mengatakan bahwa kesalahan tersebut masih terlalu besar.

Kita tidak cukup hanya mengatakan:

"Modelnya memang seperti itu."

Sebaliknya, kita perlu melakukan eksperimen.

Misalnya:

Model 1

MAE = Rp100 juta

Model 2

MAE = Rp85 juta

Model 3

MAE = Rp70 juta

Kemudian kita mencari tahu:

Apa yang berbeda?

Model apa yang digunakan?

Fitur apa yang digunakan?

Hyperparameter apa yang digunakan?

Apakah preprocessing berubah?

Apakah data ditambah?

Eksperimen membantu kita menemukan faktor yang berkontribusi terhadap peningkatan performa.


Experimentation sebagai Siklus

Workflow eksperimentasi dapat digambarkan:

Baseline

Evaluate

Identify Problem

Create Hypothesis

Change Something

Train

Evaluate

Compare

Keep or Reject

New Experiment

Setiap eksperimen sebaiknya memiliki tujuan yang jelas.


Jangan Mengubah Terlalu Banyak Hal Sekaligus

Misalnya model awal:

Model A
Accuracy = 82%

Kemudian kita mengubah sekaligus:

Model
Features
Preprocessing
Hyperparameters
Dataset
Metric

Hasilnya:

Accuracy = 90%

Masalahnya kita tidak tahu perubahan mana yang menyebabkan peningkatan.

Apakah:

Model baru?

atau:

Feature baru?

atau:

Preprocessing?

atau:

Hyperparameter?

Karena itu, eksperimen yang terkontrol sangat penting.


Membuat Hipotesis

Eksperimen yang baik biasanya dimulai dengan hipotesis.

Contoh:

Hipotesis:

Menambahkan fitur "umur rumah"
akan meningkatkan kemampuan model
dalam memprediksi harga rumah.

Kemudian kita melakukan eksperimen:

Model A
Features = luas, kamar, lokasi

Model B
Features = luas, kamar, lokasi, umur rumah

Kemudian membandingkan:

Model A → MAE 100 juta
Model B → MAE 85 juta

Kita mendapatkan bukti bahwa fitur tersebut mungkin memberikan informasi tambahan yang berguna.

Namun eksperimen yang lebih kuat tetap perlu dilakukan untuk memastikan hasil tersebut konsisten.


Contoh Eksperimentasi Model

Misalnya baseline:

from sklearn.linear_model import LinearRegression

model = LinearRegression()

model.fit(
X_train,
y_train
)

Kemudian kita evaluasi:

from sklearn.metrics import mean_absolute_error

predictions = model.predict(X_test)

mae = mean_absolute_error(
y_test,
predictions
)

print(f"MAE: {mae:.2f}")

Misalnya:

MAE: 120000000

Kemudian kita mencoba Random Forest:

from sklearn.ensemble import RandomForestRegressor

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

model.fit(
X_train,
y_train
)

predictions = model.predict(X_test)

mae = mean_absolute_error(
y_test,
predictions
)

print(f"MAE: {mae:.2f}")

Misalnya hasilnya:

Linear Regression → MAE 120 juta
Random Forest → MAE 85 juta

Eksperimen tersebut memberikan informasi bahwa Random Forest lebih baik pada konfigurasi dan dataset tersebut.


Eksperimentasi dengan Features

Eksperimen tidak selalu berarti mengganti algoritma.

Kita juga dapat mengubah fitur.

Misalnya dataset awal:

Features:
- luas rumah
- jumlah kamar
- lokasi

Kemudian kita menambahkan:

- umur bangunan
- jumlah kamar mandi
- jarak ke pusat kota

Workflow:

Features Lama

Training

Evaluation

Features Baru

Training

Evaluation

Comparison

Jika hasil meningkat secara konsisten, fitur baru tersebut mungkin memberikan informasi yang berguna.


Menambah atau Mengurangi Features

Menambah fitur tidak selalu meningkatkan performa.

Contohnya:

Model A
5 features
Accuracy = 88%

Kemudian:

Model B
50 features
Accuracy = 84%

Mengapa bisa terjadi?

Beberapa fitur mungkin:

  • tidak relevan
  • mengandung noise
  • memiliki banyak missing value
  • mengandung informasi yang tidak stabil
  • menyebabkan model lebih kompleks
  • memiliki korelasi yang tidak berguna terhadap target

Karena itu kita juga dapat melakukan eksperimen dengan mengurangi fitur.


Eksperimentasi dengan Hyperparameter

Kita juga dapat mengubah hyperparameter.

Misalnya:

RandomForestClassifier(
n_estimators=100,
max_depth=10
)

Kemudian:

RandomForestClassifier(
n_estimators=300,
max_depth=10
)

Atau:

RandomForestClassifier(
n_estimators=300,
max_depth=5
)

Setiap konfigurasi merupakan eksperimen yang dapat dibandingkan.


Eksperimentasi dengan Dataset

Kita juga dapat bereksperimen dengan data.

Contohnya:

Dataset Awal

100.000 sample

Kemudian:

Dataset Bersih

95.000 sample

Atau:

Dataset Lama

100.000 sample

Dataset Baru

150.000 sample

Perubahan kualitas dan jumlah data dapat memengaruhi kemampuan model untuk melakukan generalisasi.


Start Small

Eksperimen sebaiknya tidak selalu dimulai dengan dataset terbesar.

Misalnya:

100.000 sample

Kita dapat memulai dengan:

10.000 sample

untuk menguji apakah pipeline sudah berjalan dengan benar.

Workflow:

10.000 data

Experiment

Pipeline benar?

Model masuk akal?

Metric benar?

Ya

50.000 data

Experiment

100.000 data

Tujuannya adalah mempercepat siklus eksperimen.


Experiment Tracking

Ketika eksperimen mulai banyak, kita perlu mencatat hasilnya.

Contohnya:

ExperimentModelFeaturesHyperparameterScore
1Linear RegressionBasicDefault82%
2Random ForestBasicDefault87%
3Random ForestExtendedDefault89%
4Random ForestExtendedTuned91%

Catatan seperti ini membantu kita memahami perkembangan eksperimen.


Mengapa Experiment Tracking Penting?

Tanpa pencatatan, kita dapat mengalami situasi:

"Model yang kemarin hasilnya bagus yang mana?"

"Parameter yang digunakan apa?"

"Fitur apa saja yang digunakan?"

"Dataset yang digunakan versi berapa?"

Jika eksperimen sudah puluhan atau ratusan, masalah ini menjadi semakin serius.

Karena itu, experiment tracking merupakan bagian penting dari workflow Machine Learning.


Eksperimen yang Reproducible

Eksperimen sebaiknya dapat diulang.

Contohnya menggunakan:

random_state=42

Misalnya:

RandomForestClassifier(
n_estimators=100,
random_state=42
)

Dengan random state yang konsisten, hasil eksperimen yang melibatkan proses random dapat menjadi lebih reproducible.

Namun reproducibility tidak hanya bergantung pada random_state.

Kita juga perlu memperhatikan:

Dataset
Preprocessing
Feature Engineering
Model
Hyperparameters
Library Versions
Environment
Random Seeds

Framework Machine Learning

Setelah memahami proses eksperimentasi, kita dapat merangkum keseluruhan framework Machine Learning menjadi enam langkah utama.

1. Problem Definition
2. Data
3. Evaluation
4. Features
5. Modelling
6. Experimentation

Framework ini membantu kita memahami bagaimana sebuah proyek Machine Learning dikerjakan dari awal sampai proses pengembangan model.


Langkah 1 - Problem Definition

Pertanyaan utama:

Masalah apa yang ingin kita selesaikan?

Sebelum menyentuh kode, kita harus memahami masalah.

Contohnya:

Bisnis memiliki banyak pelanggan
dan ingin mengetahui pelanggan
yang kemungkinan berhenti menggunakan layanan.

Kemudian kita dapat mengubah masalah tersebut menjadi Machine Learning problem:

Input

Data pelanggan

Output

Prediksi churn

Problem definition menentukan arah seluruh proyek.


Langkah 2 - Data

Pertanyaan utama:

Data apa yang kita miliki?

Kita perlu mengetahui:

Berapa banyak data?
Apa sumber datanya?
Apa formatnya?
Apakah terdapat missing value?
Apakah terdapat duplicate?
Apakah data memiliki label?
Apakah data cukup representatif?

Contohnya:

Customer Data
├── Age
├── Income
├── Subscription
├── Usage
├── Transactions
└── Churn

Data merupakan bahan utama yang digunakan oleh model.


Langkah 3 - Evaluation

Pertanyaan utama:

Apa yang mendefinisikan keberhasilan?

Kita perlu menentukan metric sebelum terlalu jauh mengembangkan model.

Contohnya:

Classification

Accuracy
Precision
Recall
F1 Score

Untuk regression:

Regression

MAE
MSE
RMSE

Metric harus sesuai dengan problem.


Langkah 4 - Features

Pertanyaan utama:

Apa yang sudah kita ketahui dari data tersebut?

Features merupakan informasi yang digunakan model untuk membuat prediksi.

Contoh:

Features
├── Age
├── Income
├── Usage
└── Transactions

Target
└── Churn

Feature engineering juga dapat dilakukan untuk menghasilkan representasi data yang lebih informatif.


Langkah 5 - Modelling

Pertanyaan utama:

Model apa yang harus kita gunakan?

Pada tahap ini kita:

Memilih model

Training

Validation

Tuning

Comparison

Kita dapat mencoba berbagai algoritma.

Contohnya:

Linear Regression
Logistic Regression
Decision Tree
Random Forest
Gradient Boosting
Neural Network

Pemilihan model harus disesuaikan dengan jenis masalah dan data.


Langkah 6 - Experimentation

Pertanyaan utama:

Apa lagi yang bisa kita coba untuk meningkatkan hasil?

Jika model belum memenuhi requirement, kita dapat melakukan eksperimen.

Contohnya:

Model Baru
Features Baru
Hyperparameter Baru
Preprocessing Baru
Dataset Baru
Feature Engineering

Kemudian:

Training

Evaluation

Comparison

Jika belum cukup baik:

Experiment Again

Enam Langkah Framework

Kita dapat merangkumnya dalam bentuk:

┌───────────────────────────────┐
│ 1. Problem Definition │
│ Apa masalahnya? │
└───────────────┬───────────────┘

┌───────────────────────────────┐
│ 2. Data │
│ Data apa yang tersedia? │
└───────────────┬───────────────┘

┌───────────────────────────────┐
│ 3. Evaluation │
│ Bagaimana mengukur sukses? │
└───────────────┬───────────────┘

┌───────────────────────────────┐
│ 4. Features │
│ Informasi apa yang tersedia? │
└───────────────┬───────────────┘

┌───────────────────────────────┐
│ 5. Modelling │
│ Model apa yang digunakan? │
└───────────────┬───────────────┘

┌───────────────────────────────┐
│ 6. Experimentation │
│ Apa lagi yang bisa dicoba? │
└───────────────┬───────────────┘


Evaluation

└──────→ Experiment Again

Perhatikan bahwa langkah keenam dapat membawa kita kembali ke langkah sebelumnya.


Framework dalam Proyek Nyata

Misalnya stakeholder meminta:

"Kami ingin mengetahui pelanggan yang berpotensi berhenti menggunakan layanan."

Kita mulai dari:

Problem Definition

Prediksi Customer Churn

Kemudian mencari data:

Customer Data

Data Analysis

Menentukan keberhasilan:

Recall ≥ 85%

Menentukan features:

Age
Subscription
Usage
Transactions
Customer Tenure

Membuat baseline:

Logistic Regression

Kemudian:

Accuracy = 82%
Recall = 78%

Stakeholder meminta recall yang lebih tinggi.

Kita kemudian melakukan eksperimen:

Random Forest

Recall = 83%

Kemudian:

Feature Engineering

Recall = 86%

Kemudian tuning:

Hyperparameter Tuning

Recall = 88%

Sekarang model telah mendekati requirement.


Eksperimentasi Tidak Hanya Mengganti Model

Ini merupakan konsep yang sangat penting.

Eksperimentasi dapat dilakukan pada berbagai bagian pipeline.

Experimentation

┌────────────────┼────────────────┐
↓ ↓ ↓
Data Features Model
│ │ │
↓ ↓ ↓
Data Cleaning Feature Eng. Algorithm
Sampling Selection Hyperparameter
More Data Transformation Architecture
│ │ │
└────────────────┼────────────────┘

Evaluation

Jadi jika performa model buruk, jangan selalu langsung menyimpulkan:

"Algoritmanya salah."

Masalah dapat berasal dari data, fitur, preprocessing, metric, atau konfigurasi model.


Tool Matching Project

Proyek Machine Learning dapat dipandang sebagai tool matching project.

Artinya, kita tidak perlu menggunakan semua tools yang tersedia.

Kita memilih tools berdasarkan kebutuhan.

Contohnya:

Data Manipulation

Pandas

Numerical Computing

NumPy

Visualization

Matplotlib / Seaborn

Classical Machine Learning

Scikit-Learn

Deep Learning

TensorFlow / PyTorch

Tool dipilih berdasarkan problem yang ingin diselesaikan.


Pandas

Pandas banyak digunakan untuk bekerja dengan data tabular.

Contohnya:

import pandas as pd

df = pd.read_csv(
"data.csv"
)

df.head()

Pandas dapat digunakan untuk:

  • membaca dataset
  • membersihkan data
  • memilih kolom
  • menangani missing value
  • melakukan filtering
  • melakukan transformasi
  • melakukan eksplorasi data

NumPy

NumPy digunakan untuk operasi numerik dan array.

Contoh:

import numpy as np

numbers = np.array([
10,
20,
30,
40
])

print(numbers.mean())

NumPy menjadi salah satu fondasi ekosistem scientific computing Python.


Matplotlib

Matplotlib dapat digunakan untuk visualisasi data.

Contohnya:

import matplotlib.pyplot as plt

plt.scatter(
df["age"],
df["income"]
)

plt.xlabel("Age")
plt.ylabel("Income")

plt.show()

Visualisasi membantu kita memahami pola dan hubungan dalam data.


Scikit-Learn

Scikit-Learn merupakan salah satu library utama untuk classical Machine Learning di Python.

Contohnya:

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(
random_state=42
)

model.fit(
X_train,
y_train
)

Scikit-Learn menyediakan banyak komponen untuk:

Preprocessing
Model Selection
Training
Cross-Validation
Hyperparameter Tuning
Evaluation
Pipelines

TensorFlow dan Deep Learning

Untuk beberapa jenis masalah, khususnya data tidak terstruktur seperti:

Image
Audio
Video
Text

kita dapat menggunakan framework Deep Learning seperti TensorFlow atau framework lain yang sesuai.

Workflow dapat menjadi:

Data

Neural Network

Training

Validation

Tuning

Evaluation

Pemilihan framework tetap bergantung pada kebutuhan proyek.


Dari Framework ke Workflow Teknis

Setelah memahami enam langkah framework, kita dapat mulai masuk ke workflow yang lebih teknis.

Contohnya:

Problem Definition

Dataset

Exploratory Data Analysis

Data Cleaning

Feature Engineering

Train / Validation / Test

Baseline Model

Model Training

Evaluation

Hyperparameter Tuning

Model Comparison

Experimentation

Final Model

Workflow tersebut kemudian dapat dilanjutkan dengan:

Model Serialization

API

Deployment

Monitoring

Retraining

Eksperimentasi dan Production

Eksperimentasi tidak berhenti ketika model berhasil pada Test Set.

Setelah deployment:

Model

Production

Real User Data

Monitoring

Performance Evaluation

Jika performa menurun:

Production Performance

Investigate

New Experiment

Retraining

New Model

Deployment

Dengan demikian, Machine Learning dalam production juga merupakan proses iteratif.


Prinsip Penting Eksperimentasi

Beberapa prinsip yang perlu diterapkan:

Mulai dari Baseline

Selalu memiliki model pembanding.

Baseline

Experiment

Improvement

Buat Hipotesis

Jangan mengubah sesuatu tanpa alasan.

Hipotesis

Experiment

Result

Conclusion

Ubah Secara Terkontrol

Hindari mengubah seluruh pipeline sekaligus jika tujuan eksperimen adalah memahami pengaruh satu perubahan.

Catat Hasil

Simpan:

Model
Features
Hyperparameters
Dataset
Metric
Score
Training Time

Jangan Hanya Mengejar Score

Pertimbangkan juga:

Latency
Memory
Model Size
Training Cost
Maintainability
Business Requirement

Checklist Experimentation

Sebelum menyelesaikan tahap ini, pastikan:

  • Memahami bahwa Machine Learning adalah proses iteratif
  • Sudah memiliki baseline model
  • Sudah menentukan metric keberhasilan
  • Sudah membuat hipotesis eksperimen
  • Sudah mencoba model alternatif
  • Sudah mencoba feature engineering
  • Sudah mencoba hyperparameter tuning
  • Sudah membandingkan hasil eksperimen
  • Eksperimen dicatat
  • Dataset dan preprocessing terdokumentasi
  • Test Set tidak digunakan secara berulang untuk tuning
  • Model yang dipilih memenuhi requirement
  • Trade-off performa dan resource sudah dipertimbangkan

Ringkasan Enam Langkah Framework Machine Learning

Framework yang telah dipelajari:

LangkahPertanyaan Utama
1. Problem DefinitionApa masalah yang ingin diselesaikan?
2. DataData apa yang kita miliki?
3. EvaluationApa yang mendefinisikan keberhasilan?
4. FeaturesInformasi apa yang tersedia dari data?
5. ModellingModel apa yang harus digunakan?
6. ExperimentationApa lagi yang bisa kita coba?

Framework tersebut bukan aturan yang harus selalu dijalankan secara kaku.

Dalam proyek nyata, kita dapat kembali ke langkah sebelumnya.

Contohnya:

Problem

Data

Evaluation

Features

Modelling

Experimentation

Belum berhasil

Kembali ke Data

Feature Engineering

Modelling

Experimentation

Gambaran Besar Workflow Machine Learning

Jika seluruh materi dirangkum:

┌─────────────────────┐
│ Problem Definition │
└──────────┬──────────┘

┌─────────────────────┐
│ Data │
└──────────┬──────────┘

┌─────────────────────┐
│ Evaluation │
└──────────┬──────────┘

┌─────────────────────┐
│ Features │
└──────────┬──────────┘

┌─────────────────────┐
│ Modelling │
└──────────┬──────────┘

┌─────────────────────┐
│ Experimentation │
└──────────┬──────────┘

Evaluation

┌─────────┴─────────┐
│ │
Belum baik Berhasil
│ │
↓ ↓
Experiment Final Model
│ │
└───────→ ↓
Deployment

Monitoring

Experiment Again

Inilah pola pikir yang perlu dibangun ketika mengerjakan proyek Machine Learning.

Machine Learning bukan sekadar:

Import Library

model.fit()

model.predict()

Tetapi merupakan proses untuk:

Memahami masalah

Memahami data

Menentukan keberhasilan

Membangun fitur

Membangun model

Melakukan eksperimen

Mengevaluasi

Memperbaiki

Mengulang

Kesimpulan

Experimentation merupakan bagian penting dari Machine Learning karena model pertama hampir tidak selalu menjadi model terbaik.

Pertanyaan yang harus selalu dipertimbangkan adalah:

Apa yang sudah kita coba?

Apa yang belum kita coba?

Apa yang dapat kita ubah?

Apakah perubahan tersebut benar-benar meningkatkan hasil?

Enam langkah framework Machine Learning dapat dirangkum sebagai:

1. Problem Definition

2. Data

3. Evaluation

4. Features

5. Modelling

6. Experimentation

Framework ini memberikan cara berpikir yang sistematis untuk mengerjakan proyek Machine Learning.

Namun prosesnya bersifat iteratif.

Jika hasil belum memenuhi requirement, kita dapat kembali ke:

Data
Features
Modelling
Evaluation

kemudian melakukan eksperimen kembali.

Pada tahap berikutnya, kita dapat mulai meninggalkan gambaran framework yang bersifat konseptual dan masuk ke workflow Machine Learning menggunakan Python secara lebih teknis, mulai dari menyiapkan dataset, Exploratory Data Analysis, preprocessing, train/test split, baseline model, evaluasi, hingga membangun pipeline Machine Learning.