Bab 6 ~4 jam

Dasar-Dasar Machine Learning

Pahami paradigma fundamental, alur kerja pemodelan, dan konsep kritis yang mendasari seluruh machine learning.

6.1 Paradigma ML

Supervised

Belajar dari contoh berlabel (input→output).

Regresi, Klasifikasi

Unsupervised

Temukan pola dalam data tanpa label.

Clustering, Reduksi Dimensi

Reinforcement

Belajar melalui coba-coba dengan reward.

Game, Robotika, RLHF

Catatan: Ada juga semi-supervised, self-supervised, dan federated learning. Kami fokus pada tiga paradigma inti karena mencakup 90%+ aplikasi dunia nyata.

6.2 Alur Kerja ML

from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import classification_report # 1. Bagi data X = df.drop('target', axis=1) y = df['target'] X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42, stratify=y ) # 2. Preprocessing (fit hanya pada train!) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 3. Latih model model = LogisticRegression(random_state=42) model.fit(X_train_scaled, y_train) # 4. Evaluasi y_pred = model.predict(X_test_scaled) print(classification_report(y_test, y_pred))
Aturan Kritis: Jangan pernah gunakan data test untuk feature selection, imputasi, scaling, atau tuning hyperparameter. Data test harus benar-benar belum terlihat sampai evaluasi akhir.

6.3 Pembagian Data & Cross-Validation

# Hold-out sederhana X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # K-Fold Cross-Validation from sklearn.model_selection import cross_val_score skor = cross_val_score(model, X_train, y_train, cv=5, scoring='accuracy') print(f"Rata-rata: {skor.mean():.3f} ± {skor.std():.3f}") # Stratified K-Fold (untuk data tidak seimbang) from sklearn.model_selection import StratifiedKFold cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) # Repeated stratified k-fold untuk estimasi lebih robust from sklearn.model_selection import RepeatedStratifiedKFold cv = RepeatedStratifiedKFold(n_splits=5, n_repeats=3)

6.4 Tradeoff Bias-Varian

Error prediksi model apa pun dapat diuraikan menjadi tiga komponen:

Error Total = Bias² + Varian + Noise Irreduksi

Bias Tinggi (Underfitting)

  • • Model terlalu sederhana untuk data
  • • Kinerja training DAN test buruk
  • • Solusi: lebih banyak fitur, model kompleks

Varian Tinggi (Overfitting)

  • • Model menghafal data training
  • • Kinerja training bagus, test buruk
  • • Solusi: lebih banyak data, regularisasi, model sederhana
# Diagnosis dengan learning curves from sklearn.model_selection import learning_curve ukuran_train, skor_train, skor_val = learning_curve( model, X_train, y_train, cv=5, train_sizes=np.linspace(0.1, 1.0, 10) ) # Plot skor train vs validasi vs ukuran training # Gap = varian, skor rendah = bias

6.5 Metrik Evaluasi

Tugas Metrik Kapan Digunakan
RegresiMAEInterpretable, robust terhadap pencilan
RMSEM memberi penalti pada error besar
Proporsi varians yang dijelaskan
KlasifikasiAkurasiKelas seimbang
Presisi/RecallKelas tidak seimbang, sensitif biaya
F1-SkorKeseimbangan presisi & recall
AUC-ROCEvaluasi independen threshold
from sklearn.metrics import (mean_squared_error, mean_absolute_error, r2_score, accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, confusion_matrix, classification_report) # Regresi print(f"MAE: {mean_absolute_error(y_test, y_pred):.2f}") print(f"RMSE: {mean_squared_error(y_test, y_pred, squared=False):.2f}") print(f"R²: {r2_score(y_test, y_pred):.3f}") # Klasifikasi print(classification_report(y_test, y_pred)) print(confusion_matrix(y_test, y_pred)) print(f"AUC: {roc_auc_score(y_test, y_prob):.3f}")
Latihan: Latih logistic regression pada dataset kanker payudara. Hitung akurasi, presisi, recall, F1, dan AUC-ROC. Lalu coba dengan class_weight='balanced' dan bandingkan hasilnya.