Sebelum memahami Regresi Linier diharapkan sudah menguasai ini :
Regresi Linier atau Linear Regression adalah suatu model statistik yang umum dan paling sederhana yang digunakan untuk Machine Learning untuk melakukan prediksi dengan cara supervised learning.
Regresi Linier hanya bisa digunakan untuk data yang bersifat interval dan ratio yang biasanya bersifat diskrit dan kontinu, dan merupakan analisis bivariate dan multivariate, simplenya kita bahas bivariate terlebih dahulu, diharapkan juga sudah membaca tentang analisa bivariate terlebih dahulu dimana dijelaskan tentang korelasi antara 2 variabel yang sudah dibahas di Statistika Dasar (Lanjutan).
Regresi Linier melibatkan 2 variabel dimana salah satunya adalah variabel independen (x) dan satu lagi adalah variabel dependen (y).
Independen berarti variabel ini sebagai variabel utama yang mungkin akan mempengaruhi nilai variabel kedua (dependen).
Dependen berarti nilai variabel ini akan tergantung dari nilai variabel independennya, jika korelasi tinggi maka dependensi juga tinggi.
Mari kita mulai dengan contoh paling sederhana :
Terdapat data sample yang didapat dari 10 orang sebagai berikut :
Data Tinggi Badan(cm) : 151,174,138,186,128,136,179,163,152,131Data Berat Badan (Kg) : 63, 81, 56, 91, 47, 57, 76, 72, 62, 48
Disini tinggi badan merupakan variabel independen (x), dan berat badan merupakan variabel dependen (y).
Data x dan y ini dapat kita sebarkan ke dalam sumbu x dan y seperti berikut :
Jika memang x dan y memiliki korelasi tinggi maka titik-titik akan cenderung menurun atau naik, dengan data diatas seharusnya naik. Regresi Linear adalah proses mencari garis linear yang menujukkan korelasi antara kedua variabel tersebut, garis linear itu akan didapat dengan sebuah persamaan :
y = ax + b atau y = w1x + w0
dimana
a atau w1 adalah slope / gradient / coefficient
b atau w0 adalah intercept / bias
Sebelum menggunakan Regresi Linier, hitung terlebih dahulu korelasinya menggunakan rumus Pearson Correlation (r), jika belum paham ini, disarankan membaca tentang Statistika Dasar Lanjutan untuk analisis bivariate :
mean x = (151+174+138+186+128+136+179+163+152+131)/10 = 153.8
mean y = (63+81+56+91+47+57+76+72+62+48)/10 = 65.3r = (((151-153.8)*(63-65.3)) + ... + ((131-153.8)*(48-65.3))) / √(((151-153.3)² + ... + (131-153.8)²)*((63-65.3)² + ... + (48-65,3)²))
= 0.9771295961897941Catatan : korelasi 0.97 adalah nilai yang sangat tinggi, artinya nilai y benar-benar sangat dipengaruhi oleh nilai x, karena korelasi tinggi maka algoritma Regresi Linier ini cocok digunakan untuk data tersebut.
Setelah ditemukan korelasi tinggi selanjutnya adalah mencari persamaan garis dengan mencari terlebih dahulu nilai a dan b, dengan menggunakan rumus Least Square, rumus yang digunakan adalah sebagai berikut :
mean x = (151+174+138+186+128+136+179+163+152+131)/10 = 153.8
mean y = (63+81+56+91+47+57+76+72+62+48)/10 = 65.3
a = (((151-153.8)*(63-65.3)) + ... + ((131-153.8)*(48-65.3))) / ((151-153.3) + ... + (131-153.8))²
= 0.67461045
b = 65.3 - 0.67461045 * 153.8
= -38.45508707607701maka persamaan garis :
y = 0.67461045 x - 38.45508707607701Catatan :
Jadi persamaan garis diatas dapat digunakan untuk melakukan prediksi apabila kita memiliki data tinggi badan yang baru, berat badan dapat diperkirakan dengan rumus tersebut, masukkan nilai tinggi baru ke x, maka perkiraan nilai y (berat badan) akan didapat.
Tentang algoritma Regresi Linier
Digunakan untuk Prediksi dengan mencari pola garis terbaik antara variable independent dan dependen
Pros:
- Mudah diimplementasikan
- Digunakan untuk memprediksi nilai numerik/ continous /data jenis interval dan ratio
Cons :
- Cenderung mudah Overfitting
- Tidak dapat digunakan bila relasi antara variabel independen dan dependen tidak linier atau korelasi variabel rendah
Mari implementasi dengan R dan Python, code berikut akan melakukan 2 fase, fase training dan fase prediksi.
x <- c(151,174,138,186,128,136,179,163,152,131)
y <- c(63,81,56,91,47,57,76,72,62,48)relation <- lm(y~x) #fase training
print(relation)
print(summary(relation))x_test <- data.frame(x = c(170,171)) #data yang akan diprediksiresult <- predict(relation,x_test) #fase prediksi
print(result) #hasil prediksi#prepare plot
plot(x,y,col="red",main="Regresi Tinggi dan Berat",abline(lm(y~x)),cex=1.3,pch=16,xlab="Tinggi dalam cm",ylab="Berat dalam Kg")#dev.off() #matikan grafik
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegressiondf = pd.DataFrame([[151,63],[174,81],[138,56],[186,91],[128,47],[136,57],[179,76],[163,72],[152,62],[131,48]])
df.columns = ['x', 'y']x_train = df['x'].values[:,np.newaxis]
y_train = df['y'].valueslm = LinearRegression()
lm.fit(x_train,y_train) #fase training
print(’Coefficient : ' + str(lm.coef_))
print(’Intercept : ' + str(lm.intercept_))x_test = [[170],[171]] #data yang akan diprediksip = lm.predict(x_test) #fase prediksi
print(p) #hasil prediksi#prepare plot
pb = lm.predict(x_train)
dfc = pd.DataFrame({'x': df['x'],'y':pb})
plt.scatter(df['x'],df['y'])
plt.plot(dfc['x'],dfc['y'],color='red',linewidth=1)
plt.xlabel('Tinggi dalam cm')
plt.ylabel('Berat dalam Kg')
plt.show()
Pengukur Akurasi
Model tipe Regresi Linier tingkat akurasinya dapat dihitung dengan beberapa metode, yang paling umum adalah :
- R-squared (r²) atau biasa disebut juga Coefficient of Determination, yaitu nilai dari r dikuaratkan, nilai r sudah dibahas diatas.
- Adjusted R-squared (r²) biasanya digunakan apabila sample kecil dari populasi yang sangat besar.
- Multiple R-squared (r²) biasanya digunakan untuk multiple correlation multivariate.
Pengukur Error
Semakin tinggi nilai error, semakin besar errornya.
- Redisual (y actual — y predicted)
- Standard Error (SE)
- Root Mean Square Error (RMSE)
- Mean Absolute Error (MAE), absolute berarti nilai negatif dipositifkan
- Root Relative Squared Error (RRSE)
- Relative Absolute Error (RAE), absolute berarti nilai negatif dipositifkan