🍊Multiple Linear Regression

Regresi Linier Majemuk (Berganda)

Pengantar

Multiple linear Regression merupakan turunan dari simple linear regression, multiple linear juga menghasilkan prediksi dalam bentuk angka continyu, perbedaan antara simple dan multiple adalah pada data variable independent/penjelas/bebas (X) dimana dalam multiple linear terdapat beberapa fitur / variable independent. Hubungan linear antara variable independent dan variable dependent pada multiple regression ini dapat dirumuskan sebagai berikut ini

y=α+β1x1+β2x2++βnxny=α+β_1 x_1+β_2 x_2+⋯+β_n x_n Y=βXY=βX

Pada persamaan diatas dapat dilihat bahwa pada multiple linear regression terdapat lebih dari variable independent sehingga parameter beta jumlahnya akan menyesuaikan dengan jumlah variable independent, dimana :

  • 𝑦 adalah vektor kolom nilai variabel respon/dependent.

  • 𝛼 adalah nilai intercept

  • 𝛽 adalah vektor kemiringan (slope)

  • x adalah matriks berdimensi 𝒎 kali 𝒏 dari nilai variabel independent pada data training

  • 𝑚 adalah jumlah data training.

  • 𝑛 adalah jumlah fitur.

Sama halnya dengan simple linear regression, tantangan pada multiple linear regression adalah penetuan parameter (α dan β). Penentuan parameter α dan β dengan menggunakan metode least square dengan menggunakan dua variable independent. Tabel berikut adalah Contoh data training dan data testing untuk multiple linear regression dengan menggunakan dua buah fitur.

Data Training

DiameterPizza (inci)
JumlahTopping
HargaPizza (dolar)

6

2

7

8

1

9

10

0

13

14

2

17.5

18

3

18

Data Testing

DiameterPizza (inci)
JumlahTopping
HargaPizza (dolar)

8

2

11

9

0

8.5

11

2

15

16

2

18

12

0

11

Selanjutnya kita buat kode program untuk melakukan prediksi mengguakan data training dan data testing diatas sebagai berikut:

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

# Data training
X_train = np.array([
    [6, 2],
    [8, 1],
    [10, 0],
    [14, 2],
    [18, 3]
])
y_train = np.array([7, 9, 13, 17.5, 18])

# Data testing
X_test = np.array([
    [8, 2],
    [9, 0],
    [11, 2],
    [16, 2],
    [12, 0]
])
y_test = np.array([11, 8.5, 15, 18, 11])

# Inisialisasi model Linear Regression
model = LinearRegression()

# Melatih model dengan data training
model.fit(X_train, y_train)

# Melakukan prediksi dengan data testing
y_pred = model.predict(X_test)

# Menghitung R-squared (R2) dari model terlatih
r2 = r2_score(y_test, y_pred)

# Menampilkan hasil prediksi dan nilai target
print("Hasil Prediksi Harga Pizza:")
for i in range(len(y_pred)):
    print(f"Data Test {i + 1}: Prediksi ${y_pred[i]:.2f}, Target ${y_test[i]:.2f}")

# Menampilkan nilai R-squared
print(f"\nR-squared (R2): {r2:.2f}")

didapatkan hasil,

Hasil Prediksi Harga Pizza:
Data Test 1: Prediksi $9.00, Target $11.00
Data Test 2: Prediksi $11.97, Target $8.50
Data Test 3: Prediksi $12.31, Target $15.00
Data Test 4: Prediksi $17.81, Target $18.00
Data Test 5: Prediksi $15.27, Target $11.00

R-squared (R2): 0.27

dari hasil tersebut maka didapatkan beberapa point, yaitu:

  1. Hasil Prediksi Harga Pizza: Bagian ini menampilkan hasil prediksi harga pizza untuk setiap data testing. Terdapat lima data testing (Data Test 1 hingga Data Test 5). Di samping setiap data testing, terdapat dua angka: prediksi harga pizza (Prediksi) dan harga pizza yang sebenarnya (Target). Misalnya, pada Data Test 1, model memprediksi harga pizza sebesar $9.00, sementara harga pizza yang sebenarnya adalah $11.00.

  2. R-squared R2R^2: Nilai R2R^2(R-squared) adalah metrik evaluasi untuk mengukur sejauh mana model Linear Regression yang telah dilatih cocok dengan data. Nilai R2R^2 berkisar antara 0 hingga 1. Dalam kasus ini, nilai R2R^2 sebesar 0.27 menunjukkan bahwa model yang telah dilatih mampu menjelaskan sekitar 27% dari variasi dalam data testing. Nilai yang lebih tinggi dari R2R^2 akan menunjukkan bahwa model memiliki kemampuan yang lebih baik dalam menjelaskan variasi data.

Poin utama dari hasil ini adalah bahwa model Linear Regression yang telah dilatih memiliki R2R^2 sebesar 0.27, yang berarti model ini cukup baik dalam menjelaskan variasi dalam data, meskipun masih ada variasi yang tidak dapat dijelaskan oleh model. Semakin tinggi nilai R2R^2, menunjukan bahawa semakin baik model.

Last updated