Pertemuan 04: Supervised Learning - Klasifikasi
Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu:
- Memahami konsep supervised learning untuk klasifikasi
- Memahami algoritma yang dapat digunakan untuk kasus klasifikasi
- Mengimplementasikan KNN untuk kasus sederhana
- Mengimplementasikan Decision Tree untuk kasus sederhana
Ringkasan Materi
1. Konsep Klasifikasi
Klasifikasi adalah supervised learning task untuk memprediksi kategori diskrit. Berbeda dengan regresi yang memprediksi nilai kontinu, klasifikasi mengassign data ke classes yang sudah ditentukan. Dalam geofisika, aplikasi klasifikasi sangat luas mulai dari interpretasi lithology, facies seismik, hingga reservoir characterization.
Aplikasi Klasifikasi dalam Geofisika:
- Klasifikasi litologi dari well log (sandstone, shale, limestone, dll)
- Seismic facies classification untuk reservoir mapping
- Fluid type identification (oil, gas, water)
- Lithofacies prediction dari seismic attributes
- Sweet spot detection untuk drilling optimization
2. Decision Tree Classifier
Decision Tree adalah algoritma yang membuat keputusan berdasarkan series of questions. Setiap node internal represents a test pada attribute, setiap branch represents outcome dari test, dan setiap leaf node represents class label.
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, confusion_matrix
# Prepare data - klasifikasi lithology dari well log
X = df[['GR', 'RHOB', 'NPHI', 'DT', 'RESDEEP']]
y = df['LITHOLOGY'] # Classes: Sandstone, Shale, Limestone
# Split data
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
# Train Decision Tree
dt_model = DecisionTreeClassifier(
max_depth=10,
min_samples_split=10,
min_samples_leaf=5,
random_state=42
)
dt_model.fit(X_train, y_train)
# Predictions
y_pred = dt_model.predict(X_test)
# Evaluation
print(f"Accuracy: {dt_model.score(X_test, y_test):.3f}")
print(classification_report(y_test, y_pred))
3. Random Forest
Random Forest mengatasi kelemahan single decision tree dengan membuat multiple trees dan menggabungkan prediksinya. Setiap tree dilatih pada random subset of data dan features.
from sklearn.ensemble import RandomForestClassifier
# Train Random Forest
rf_model = RandomForestClassifier(
n_estimators=100,
max_depth=20,
min_samples_split=5,
random_state=42,
n_jobs=-1
)
rf_model.fit(X_train, y_train)
# Feature Importance
importances = rf_model.feature_importances_
for feat, imp in zip(X.columns, importances):
print(f"{feat}: {imp:.3f}")
# Predictions
y_pred_rf = rf_model.predict(X_test)
print(f"RF Accuracy: {rf_model.score(X_test, y_test):.3f}")
4. Support Vector Machine (SVM)
SVM mencari hyperplane optimal untuk memisahkan classes dengan maximum margin. Menggunakan kernel trick untuk non-linear separation.
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
# SVM requires scaling
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# Train SVM
svm_model = SVC(kernel='rbf', C=1.0, random_state=42)
svm_model.fit(X_train_scaled, y_train)
print(f"SVM Accuracy: {svm_model.score(X_test_scaled, y_test):.3f}")
- Gunakan stratified split untuk imbalanced data
- Check class distribution sebelum training
- Analyze confusion matrix untuk understand errors
- Feature importance untuk geological interpretation
Resources Tambahan
Tugas & Latihan
- Implementasikan Decision Tree untuk klasifikasi litologi dari well log
- Bandingkan performa Random Forest vs Single Decision Tree
- Tune hyperparameter menggunakan GridSearchCV
- Buat confusion matrix dan analisis error pattern untuk setiap class
- Visualisasi feature importance dan interpretasikan hasilnya
Persiapan Pertemuan Selanjutnya
Pada pertemuan berikutnya, kita akan membahas Supervised Learning - Regresi. Pastikan Anda sudah:
- Memahami perbedaan antara klasifikasi dan regresi
- Review metrics untuk regression (MAE, RMSE, R²)
- Familiar dengan konsep linear regression
- Data yang sudah di-preprocessing siap untuk regression modeling