πŸ“˜ Pertemuan 4: Supervised Learning – Regresi

🎯 Tujuan Pembelajaran
Setelah mengikuti pertemuan ini, mahasiswa mampu:

  1. Memahami konsep Supervised Learning
  2. Memahami perbedaan regresi dan klasifikasi
  3. Memahami konsep Linear Regression
  4. Mengimplementasikan Linear Regression dengan scikit-learn
  5. Mengevaluasi model regresi menggunakan metrik yang tepat
  6. Menginterpretasikan hasil model

🧠 1. Apa itu Supervised Learning?

Supervised Learning adalah metode machine learning yang menggunakan data berlabel.
Struktur dataset:
Fitur (X) β†’ Target (y)
Contoh:

  • Prediksi harga rumah
  • Prediksi penjualan
  • Prediksi suhu
  • Prediksi nilai saham

πŸ“Œ Jenis Supervised Learning

Tipe Target
Regresi Numerik (kontinu)
Klasifikasi Kategori (diskrit)

Hari ini fokus: Regresi


πŸ“Š 2. Konsep Regresi

Regresi digunakan untuk memprediksi nilai kontinu.
Contoh:

  • Harga rumah
  • Pendapatan
  • Skor ujian
  • Jumlah penjualan

πŸ“ˆ 3. Linear Regression

Model regresi paling dasar.

Persamaan:

1
y = \beta_0 + \beta_1 x

Untuk multiple feature:
1
y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_n x_n

Dimana:
Ξ²β‚€ = intercept
β₁…βn = koefisien
x = fitur
y = target


πŸ“‰ 4. Implementasi Linear Regression (Praktik)

Gunakan dataset bawaan scikit-learn.

πŸ“Œ Import Library

1
2
3
4
5
6
7
8
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

πŸ“Œ Load Dataset

1
2
3
data = fetch_california_housing()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target

πŸ“Œ Train-Test Split

1
2
3
4
5
X_train, X_test, y_train, y_test = train_test_split(
X, y,
test_size=0.2,
random_state=42
)

πŸ“Œ Training Model

1
2
model = LinearRegression()
model.fit(X_train, y_train)

πŸ“Œ Prediksi

1
y_pred = model.predict(X_test)

πŸ“ 5. Evaluasi Model Regresi

🎯 Mean Squared Error (MSE)

1
MSE = \frac{1}{n} \sum (y - \hat{y})^2
1
2
mse = mean_squared_error(y_test, y_pred)
print("MSE:", mse)

Semakin kecil β†’ semakin baik.


🎯 Root Mean Squared Error (RMSE)

1
2
rmse = np.sqrt(mse)
print("RMSE:", rmse)

🎯 R² Score (Coefficient of Determination)

1
R^2 = 1 - \frac{SS_{res}}{SS_{tot}}
1
2
r2 = r2_score(y_test, y_pred)
print("R2 Score:", r2)

Interpretasi:

  • 1 β†’ sempurna
  • 0 β†’ tidak lebih baik dari rata-rata
  • < 0 β†’ buruk

πŸ“Š 6. Visualisasi Hasil Prediksi

1
2
3
4
5
6
plt.figure()
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Value")
plt.ylabel("Predicted Value")
plt.title("Actual vs Predicted")
plt.show()

Semakin mendekati garis diagonal β†’ semakin baik.


πŸ” 7. Interpretasi Koefisien

1
2
3
4
5
6
coefficients = pd.DataFrame({
"Feature": X.columns,
"Coefficient": model.coef_
})

print(coefficients)

Koefisien positif β†’ fitur meningkatkan nilai target
Koefisien negatif β†’ fitur menurunkan nilai target


⚠️ 8. Overfitting & Underfitting

Kondisi Ciri:

  • Overfitting Akurasi train tinggi, test rendah
  • Underfitting Akurasi train & test rendah

Linear Regression sederhana biasanya cenderung underfit pada data kompleks.


πŸ§ͺ Praktikum Ringkas (Full Pipeline)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
data = fetch_california_housing()

X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.target

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

model = LinearRegression()
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

print("MSE:", mean_squared_error(y_test, y_pred))
print("RMSE:", np.sqrt(mean_squared_error(y_test, y_pred)))
print("R2:", r2_score(y_test, y_pred))

πŸ“ Tugas Mandiri

  1. Jalankan Linear Regression pada dataset California Housing.
  2. Laporkan:
    • Nilai MSE
    • RMSE
    • RΒ² Score
  3. Interpretasikan:
    • Apakah model sudah cukup baik?
    • Fitur mana paling berpengaruh?
  4. Dokumentasikan menggunakan template: https://github.com/AzharRizkiZ/Template-DS-ML
  5. Upload ke GitHub.

πŸ“ Tugas Tambahan

  1. Ambil dataset regresi dari Kaggle.
  2. Lakukan:
    • EDA
    • Preprocessing
    • Linear Regression
    • Evaluasi
  3. Buat laporan lengkap.
  4. Upload ke GitHub.

πŸŽ“ Target Kompetensi Setelah Pertemuan 4

Mahasiswa mampu:

  • Mengimplementasikan regresi
  • Mengevaluasi model regresi
  • Menginterpretasikan hasil model
  • Menghubungkan teori dengan praktik