Validasi silang tinggalkan satu keluar dengan python (dengan contoh)
Untuk mengevaluasi performa suatu model pada kumpulan data, kita perlu mengukur seberapa cocok prediksi yang dibuat oleh model tersebut dengan data yang diamati.
Metode yang umum digunakan untuk melakukan hal ini dikenal sebagai Leave-One-Out Cross-Validation (LOOCV) , yang menggunakan pendekatan berikut:
1. Pisahkan kumpulan data menjadi kumpulan pelatihan dan kumpulan pengujian, dengan menggunakan semua kecuali satu observasi sebagai bagian dari kumpulan pelatihan.
2. Buat model hanya dengan menggunakan data dari set pelatihan.
3. Gunakan model untuk memprediksi nilai respon observasi yang dikeluarkan dari model dan menghitung mean square error (MSE).
4. Ulangi proses ini sebanyak n kali. Hitung UMK tes sebagai rata-rata dari semua UMK tes.
Tutorial ini memberikan contoh langkah demi langkah tentang cara menjalankan LOOCV untuk model tertentu dengan Python.
Langkah 1: Muat Perpustakaan yang Diperlukan
Pertama, kita akan memuat fungsi dan perpustakaan yang diperlukan untuk contoh ini:
from sklearn. model_selection import train_test_split
from sklearn. model_selection import LeaveOneOut
from sklearn. model_selection import cross_val_score
from sklearn. linear_model import LinearRegression
from numpy import means
from numpy import absolute
from numpy import sqrt
import pandas as pd
Langkah 2: Buat datanya
Selanjutnya, kita akan membuat pandas DataFrame yang berisi dua variabel prediktor, x1 dan x2 , dan satu variabel respons y.
df = pd.DataFrame({' y ': [6, 8, 12, 14, 14, 15, 17, 22, 24, 23],
' x1 ': [2, 5, 4, 3, 4, 6, 7, 5, 8, 9],
' x2 ': [14, 12, 12, 13, 7, 8, 7, 4, 6, 5]})
Langkah 3: Lakukan Validasi Silang Tinggalkan Satu Keluar
Selanjutnya, kita akan menyesuaikan model regresi linier berganda ke kumpulan data dan melakukan LOOCV untuk mengevaluasi performa model.
#define predictor and response variables
X = df[[' x1 ', ' x2 ']]
y = df[' y ']
#define cross-validation method to use
cv = LeaveOneOut()
#build multiple linear regression model
model = LinearRegression()
#use LOOCV to evaluate model
scores = cross_val_score(model, X, y, scoring=' neg_mean_absolute_error ',
cv=cv, n_jobs=-1)
#view mean absolute error
mean(absolute(scores))
3.1461548083469726
Dari hasilnya terlihat mean absolute error (MAE) adalah 3.146 . Artinya, rata-rata kesalahan absolut antara prediksi model dan data observasi sebenarnya adalah 3,146.
Secara umum, semakin rendah MAE, semakin baik suatu model mampu memprediksi observasi aktual.
Metrik lain yang umum digunakan untuk mengevaluasi kinerja model adalah root mean square error (RMSE). Kode berikut menunjukkan cara menghitung metrik ini menggunakan LOOCV:
#define predictor and response variables
X = df[[' x1 ', ' x2 ']]
y = df[' y ']
#define cross-validation method to use
cv = LeaveOneOut()
#build multiple linear regression model
model = LinearRegression()
#use LOOCV to evaluate model
scores = cross_val_score(model, X, y, scoring=' neg_mean_squared_error ',
cv=cv, n_jobs=-1)
#view RMSE
sqrt(mean(absolute(scores)))
3.619456476385567
Dari hasilnya terlihat bahwa root mean square error (RMSE) adalah 3,619 . Semakin rendah RMSE, semakin baik suatu model mampu memprediksi observasi aktual.
Dalam praktiknya, kami biasanya menyesuaikan beberapa model berbeda dan membandingkan RMSE atau MAE masing-masing model untuk memutuskan model mana yang menghasilkan tingkat kesalahan pengujian terendah dan oleh karena itu merupakan model terbaik untuk digunakan.
Sumber daya tambahan
Pengantar Singkat tentang Validasi Silang Tinggalkan Satu Keluar (LOOCV)
Panduan Lengkap Regresi Linier dengan Python