Belajar AI #8: Regresi — Memprediksi Nilai Kontinu dengan Linear Regression

Masuk episode 8, akhirnya kita sentuh algoritma sungguhan yang pertama kali saya latih sendiri: linear regression. Dipilih bukan karena canggih — justru karena paling polos. Dan dari kesederhanaannya, konsep-konsep episode sebelumnya (model sebagai fungsi, loss, evaluasi) akhirnya terasa nyambung semua.

Regresi itu memprediksi angka

Regresi adalah tugas supervised learning untuk memprediksi nilai kontinu — angka pada rentang bebas, bukan kategori. Harga rumah, suhu besok, estimasi durasi commit CI, pendapatan bulan depan. Bedakan dengan klasifikasi (episode berikutnya) yang outputnya kelas.

Linear regression adalah bentuk paling sederhananya: asumsi bahwa output adalah kombinasi linear dari fitur. Satu fitur berarti garis lurus, dua fitur bidang datar, banyak fitur hyperplane yang tidak bisa digambar tapi rumusnya sama:

y = w0 + w1*x1 + w2*x2 + ... + wn*xn

Persis seperti yang dibahas di episode 6: bobot dan bias. Training = mencari nilai w dan b yang membuat prediksi sedekat mungkin dengan data, biasanya dengan meminimalkan MSE dari episode 6. Semua episode lama ketemu di sini.

Kenapa mulai dari yang sederhana

  • Cepat dilatih — selesai dalam hitungan detik bahkan di laptop biasa.
  • Bisa dijelaskan — tiap bobot punya arti: “tiap tambahan 1 m² menambah harga sekian”. Emas saat harus presentasi ke orang non-teknis.
  • Baseline yang jujur — kalau model canggih hanya mengalahkan linear regression tipis, pertanyaan dulu apakah kompleksitasnya worth it.

Praktik: melatih linear regression

Contoh lengkap dengan scikit-learn, termasuk evaluasinya:

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, r2_score

X = [[50], [80], [120], [60], [95]]   # luas m2
y = [500, 750, 1100, 590, 900]        # harga juta

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

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

pred = model.predict(X_test)
print("MAE :", mean_absolute_error(y_test, pred))
print("R^2 :", r2_score(y_test, pred))

Dua metrik regresi yang saya pakai: MAE (rata-rata selisih absolut — “rata-rata meleset sekian unit”, gampang dijelaskan ke siapa pun) dan (proporsi variasi data yang bisa dijelaskan model; 1 sempurna, 0 setara menebak rata-rata). Untuk regresi, MSE dari episode 6 adalah loss function-nya; MAE dan R² lebih sering saya pakai untuk melapor hasil.

Asumsi dan batasan

Linear regression punya asumsi yang kalau dilanggar hasilnya menyesatkan secara halus. Yang paling sering saya temui:

  • Linearitas — hubungan fitur-target memang mendekati garis lurus. Kalau tidak, transformasi (log, akar) atau model lain perlu dipertimbangkan.
  • Outlier — satu titik ekstrem bisa menyeret garis cukup jauh, karena kuadrat error menghukumnya berat.
  • Ekstrapolasi — model hanya andal di rentang data latih. Prediksi harga rumah 500 m² padahal data maksimal 200 m²? Jangan percaya.

Kalau hubungannya jelas melengkung, ada turunan seperti polynomial regression yang tetap “linear” secara matematis tapi bisa menangkap kelengkungan. Catatan untuk nanti.

Catatan untuk diri sendiri

Eksperimen pertama saya gagal bukan karena algoritmanya, tapi karena saya lupa train/test split dan mengukur di data yang sama dengan data latih — hasilnya R² hampir sempurna yang ternyata bohong. Pelajaran episode ini: algoritma sederhana + evaluasi benar mengalahkan algoritma canggih + evaluasi salah. Selalu.

Sumber

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses