youtube facebook newspaper sales
1 276.12 45.36 83.04 26.52
2 53.40 47.16 54.12 12.48
3 20.64 55.08 83.16 11.16
4 181.80 49.56 70.20 22.20
5 216.96 12.96 70.08 15.48
6 10.44 58.68 90.00 8.64
Validation Set Approach (data split)
Dalam metode ini, dataset dibagi secara acak menjadi training dan testing set. Langkah-langkah berikut dilakukan untuk menerapkan teknik ini:
- Pengambilan sampel acak dari kumpulan data
- Model dilatih pada kumpulan data pelatihan
- Model yang dihasilkan diterapkan pada kumpulan data pengujian
- Hitung kesalahan prediksi dengan menggunakan metrik kinerja model
Di bawah ini adalah implementasi dari metode ini:
set.seed (123)
random_sample <- createDataPartition (marketing $ sales,
p = 0.8, list = FALSE )
training_dataset <- marketing[random_sample, ]
testing_dataset <- marketing[-random_sample, ]
model <- lm (sales ~., data = training_dataset)
predictions <- predict (model, testing_dataset)
data.frame ( R2 = R2 (predictions, testing_dataset $ sales),
RMSE = RMSE (predictions, testing_dataset $ sales),
MAE = MAE (predictions, testing_dataset $ sales))
|
Output:
R2 RMSE MAE
1 0.9049049 1.965508 1.433609
Keuntungan:
- Salah satu teknik paling dasar dan sederhana untuk menemukan model.
- Tidak ada langkah yang rumit untuk implementasi.
kekurangan:
- Prediksi yang dilakukan oleh model sangat penting pada subset observasi yang digunakan untuk pelatihan dan validasi.
- Menggunakan hanya satu subset data untuk tujuan pelatihan dapat membuat model menjadi bias.
Leave One Out Cross-Validation (LOOCV)
Metode ini juga membagi kumpulan data menjadi 2 bagian tetapi mengatasi pendekatan kumpulan Validasi. LOOCV melakukan validasi silang dengan cara sebagai berikut:
- Model latih pada titik data N-1
- Menguji model terhadap satu titik data yang tersisa di langkah sebelumnya
- hitung kesalahan prediksi
- Ulangi 3 langkah di atas hingga model tidak dilatih dan diuji pada semua titik data
- Hasilkan kesalahan prediksi keseluruhan dengan mengambil rata-rata kesalahan prediksi dalam setiap kasus
Di bawah ini adalah implementasi dari metode ini:
Output:
Linear Regression
200 samples
3 predictor
No pre-processing
Resampling: Leave-One-Out Cross-Validation
Summary of sample sizes: 199, 199, 199, 199, 199, 199, ...
Resampling results:
RMSE Rsquared MAE
2.059984 0.8912074 1.539441
Tuning parameter 'intercept' was held constant at a value of TRUE
Kekurangan:
- Melatih model N kali menyebabkan waktu komputasi yang mahal jika kumpulan datanya besar.
K-fold Cross-Validation
Teknik validasi silang ini membagi data menjadi K subset (lipatan) dengan ukuran yang hampir sama. Dari lipatan K ini, satu subset digunakan sebagai set validasi, dan sisanya terlibat dalam pelatihan model. Berikut ini adalah prosedur kerja lengkap dari metode ini:
- Pisahkan dataset menjadi subset K secara acak
- Gunakan subset K-1 untuk melatih model
- Uji model terhadap satu bagian yang tersisa di langkah sebelumnya
- langkah di atas untuk K kali yaitu, sampai model belum diuji dan diuji pada semua himpunan bagian
- Hasilkan kesalahan prediksi total dengan mengambil rata-rata kesalahan prediksi dalam setiap kasus
Di bawah ini adalah implementasi dari metode ini:
set.seed (125)
train_control <- trainControl (method = "cv" ,
number = 10)
model <- train (sales ~., data = marketing,
method = "lm" ,
trControl = train_control)
print (model)
|
Output:
Linear Regression
200 samples
3 predictor
No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 181, 180, 180, 179, 180, 180, ...
Resampling results:
RMSE Rsquared MAE
2.027409 0.9041909 1.539866
Tuning parameter 'intercept' was held constant at a value of TRUE
Keuntungan:
- Kecepatan komputasi yang cepat.
- Metode yang sangat efektif untuk memperkirakan perkiraan dan akurasi suatu model.
kekurangan:
- Nilai K yang lebih rendah mengarah ke model yang bias dan K yang lebih tinggi dapat menyebabkan variabilitas dalam metrik kinerja model. Jadi, sangat penting untuk menggunakan nilai K yang benar untuk model (umumnya K = 5 dan K = 10 yang diinginkan).
Repeated K-fold cross-validation:
Seperti namanya, dalam metode ini validasi silang K-fold diulang beberapa kali. Di bawah ini adalah implementasi dari metode ini:
set.seed (125)
train_control <- trainControl (method = "repeatedcv" ,
number = 10, repeats = 3)
model <- train (sales ~., data = marketing,
method = "lm" ,
trControl = train_control)
print (model)
|
Output:
Linear Regression
200 samples
3 predictor
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 181, 180, 180, 179, 180, 180, ...
Resampling results:
RMSE Rsquared MAE
2.020061 0.9038559 1.541517
Tuning parameter 'intercept' was held constant at a value of TRUE
Keuntungan:
- Dalam setiap pengulangan, sampel data dikocok yang menghasilkan pengembangan pemisahan data sampel yang berbeda.
Kekurangan:
- Dengan setiap pengulangan, algoritma harus melatih model dari awal yang berarti waktu komputasi untuk mengevaluasi model meningkat seiring dengan waktu pengulangan.
Catatan: Teknik validasi silang (cross-validation) yang paling disukai adalah repeated K-fold cross-validation untuk model pembelajaran mesin regresi dan klasifikasi.