Pertemuan 07: Hands-on Supervised Learning

🎯 Tujuan Pembelajaran

Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu:

  • Mengimplementasikan full ML pipeline dari raw data hingga final model
  • Menyelesaikan case study klasifikasi fasies seismik end-to-end
  • Membuat model prediksi properti reservoir dari well log
  • Melakukan interpretasi dan validasi hasil model dengan domain knowledge
  • Mempresentasikan hasil analisis ML secara profesional
📊 Materi Presentasi
💡 Catatan: Slide presentasi di atas akan otomatis terupdate ketika dosen melakukan perubahan pada Google Slides. Pastikan koneksi internet Anda stabil untuk viewing yang optimal.

Ringkasan Materi

1. End-to-End ML Pipeline

Implementasi complete workflow dari raw data hingga model deployment mencakup tahapan: Data loading & inspection, Data preprocessing (cleaning, transformation), Feature engineering, Model selection & training, Hyperparameter tuning, Model evaluation, dan Result interpretation.

2. Case Study: Seismic Facies Classification

Practical implementation klasifikasi 9 tipe facies dari seismic attributes. Dataset: F3 Block North Sea dengan atribut amplitude, envelope, instantaneous frequency, phase, dll.

Python
# Complete pipeline example
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix

# 1. Load data
df = pd.read_csv('F3_seismic_facies.csv')

# 2. Prepare features and target
features = ['amplitude', 'envelope', 'inst_freq', 'inst_phase', 'sweetness']
X = df[features]
y = df['facies']

# 3. Split data
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

# 4. Scale features
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 5. Train model
model = RandomForestClassifier(
    n_estimators=200,
    max_depth=25,
    min_samples_split=5,
    class_weight='balanced',
    random_state=42,
    n_jobs=-1
)
model.fit(X_train_scaled, y_train)

# 6. Evaluate
y_pred = model.predict(X_test_scaled)
print(classification_report(y_test, y_pred))
print(f"Accuracy: {model.score(X_test_scaled, y_test):.3f}")

# 7. Feature importance
for feat, imp in zip(features, model.feature_importances_):
    print(f"{feat}: {imp:.3f}")

3. Case Study: Well Log Property Prediction

Prediksi porositas dan permeabilitas dari well log curves. Input features: GR, RHOB, NPHI, DT, RESDEEP. Target: PHIT (total porosity) dan PERM (permeability).

Python
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.linear_model import Ridge
from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
import numpy as np

# Compare multiple models
models = {
    'Ridge': Ridge(alpha=1.0),
    'Random Forest': RandomForestRegressor(n_estimators=100, random_state=42),
    'Gradient Boosting': GradientBoostingRegressor(n_estimators=100, random_state=42)
}

results = []
for name, model in models.items():
    model.fit(X_train_scaled, y_train)
    y_pred = model.predict(X_test_scaled)
    
    r2 = r2_score(y_test, y_pred)
    mae = mean_absolute_error(y_test, y_pred)
    rmse = np.sqrt(mean_squared_error(y_test, y_pred))
    
    results.append({
        'Model': name,
        'R²': r2,
        'MAE': mae,
        'RMSE': rmse
    })
    
# Display results
results_df = pd.DataFrame(results)
print(results_df)

4. Model Interpretation

  • Feature Importance: Which well log curves matter most?
  • Error Analysis: Where does model fail? Geological reasons?
  • Prediction Confidence: Analyze prediction uncertainty
  • Domain Validation: Do results make geological sense?

5. Best Practices Checklist

  • Always validate with domain expert (geoscientist)
  • Document all preprocessing steps for reproducibility
  • Test model on completely unseen wells/seismic sections
  • Compare ML results with physics-based methods
  • Consider uncertainty quantification
✅ Project Deliverables:
  • Clean, well-documented Jupyter notebook
  • Technical report dengan methodology dan findings
  • Visualizations dan interpretations
  • Presentation slides (10-15 menit)
  • Code yang reproducible dan modular

Resources Tambahan

📚

Pandas Documentation

Official docs untuk data manipulation

Visit →
🔧

Lasio Library

Python library untuk LAS file handling

Visit →
💻

Sample Notebooks

Jupyter notebooks dengan contoh lengkap

Download →
📊

Sample LAS Files

Well log data untuk praktek

Download →

Tugas & Latihan

📝 Tugas Mingguan:
  1. Complete end-to-end facies classification project dari raw seismic data hingga final model
  2. Implement well log property prediction dengan minimal 3 algorithms (comparison study)
  3. Create comprehensive technical report dengan visualizations dan interpretations
  4. Prepare presentation (10-15 menit) tentang methodology, findings, dan business insights
  5. Submit clean Jupyter notebook dengan dokumentasi lengkap dan reproducible results

Persiapan Pertemuan Selanjutnya

Pada pertemuan berikutnya, kita akan membahas , kita akan melakukan UTS (Ujian Tengah Semester). Pastikan Anda sudah:

  • Review semua materi pertemuan 1-7
  • Latihan soal-soal tentang data wrangling, EDA, supervised learning
  • Pahami konsep-konsep fundamental ML dan aplikasinya di geofisika
  • Persiapkan coding skills untuk potential practical exam
← Previous: Introduction ML Next: EDA →