Panduan Komprehensif tentang K-Fold Cross-Validation
Pelajari cara kerja K-Fold Cross-Validation beserta kelebihan dan kekurangannya. Temukan cara mengimplementasikan K-Fold Cross-Validation di Python dengan scikit-learn.
Bayangkan Anda sedang melatih model pembelajaran mesin, tetapi Anda tidak yakin bagaimana kinerjanya pada data baru yang belum pernah terlihat. Di sinilah K-Fold Cross-Validation berperan. Teknik ini memberi gambaran awal tentang bagaimana model Anda mungkin tampil di dunia nyata. Teknik ini membantu memastikan bahwa prediksi Anda bukan sekadar sekali berhasil, melainkan konsisten andal pada kumpulan data baru yang belum terlihat.
Dalam panduan ini, kita akan membahas dasar-dasar K-Fold Cross-Validation dan membandingkannya dengan metode yang lebih sederhana seperti Train-Test Split. Anda akan mengeksplorasi berbagai metode cross-validation menggunakan Python dan memahami mengapa memilih metode yang tepat dapat sangat memengaruhi proyek Anda. Pada akhirnya, Anda akan siap menerapkan strategi ini dengan scikit-learn.
Mari kita mulai dan pelajari cara membuat upaya pembelajaran mesin Anda benar-benar dapat diandalkan!
Apa itu K-Fold Cross-Validation?
K-Fold Cross-Validation adalah teknik yang tangguh untuk mengevaluasi kinerja model pembelajaran mesin. Teknik ini membantu memastikan model mampu melakukan generalisasi dengan baik pada data yang belum pernah terlihat dengan menggunakan bagian berbeda dari dataset untuk pelatihan dan pengujian dalam beberapa iterasi.
K-Fold Cross-Validation vs. Train-Test Split
Sementara K-Fold Cross-Validation membagi dataset menjadi beberapa subset untuk melatih dan menguji model secara iteratif, metode Train-Test Split membagi dataset hanya menjadi dua bagian: satu untuk pelatihan dan satu lagi untuk pengujian. Metode Train-Test Split sederhana dan cepat diterapkan, tetapi estimasi kinerjanya bisa sangat bergantung pada pembagian tertentu, sehingga menghasilkan varians yang tinggi pada hasilnya.
Gambar di bawah ini menggambarkan perbedaan struktural antara kedua metode tersebut. Gambar pertama menunjukkan metode Train-Test Split, di mana dataset dibagi menjadi 80% pelatihan dan 20% pengujian.
Ilustrasi Train/Test Split. Gambar oleh Penulis
Gambar kedua menggambarkan 5-Fold Cross-Validation, di mana dataset dibagi menjadi lima bagian, dengan setiap bagian berperan sebagai set uji dalam salah satu dari lima iterasi, memastikan setiap segmen digunakan untuk pelatihan dan pengujian.
Skema 5-Fold Cross-Validation. Gambar oleh Penulis
Kita dapat melihat bahwa K-Fold Cross-Validation memberikan estimasi kinerja yang lebih kuat dan andal karena mengurangi dampak variabilitas data. Dengan menggunakan beberapa siklus pelatihan dan pengujian, metode ini meminimalkan risiko overfitting pada pembagian data tertentu. Metode ini juga memastikan setiap titik data digunakan untuk pelatihan dan validasi, yang menghasilkan evaluasi kinerja model yang lebih komprehensif.
Mengimplementasikan K-Fold Cross-Validation di Python Menggunakan scikit-learn
Sekarang mari kita demonstrasikan K-Fold Cross-Validation menggunakan dataset California Housing untuk menilai kinerja model regresi linear. Metode ini memberikan estimasi akurasi model yang tangguh dengan menguji secara iteratif pada subset berbeda dari dataset, sehingga memastikan evaluasi yang komprehensif.
Gambaran umum dataset California Housing
California Housing Dataset, yang dikompilasi oleh Pace dan Barry (1997), berisi data dari Sensus AS 1990 tentang perumahan di California. Dataset ini mencakup 20.640 observasi dengan fitur seperti lokasi, usia hunian, dan populasi. Variabel targetnya adalah nilai tengah rumah untuk distrik di California.
Dataset ini menyediakan kumpulan fitur geografis, demografis, dan ekonomi yang beragam, sehingga sangat cocok untuk aplikasi data science dan pembelajaran mesin. Kita akan memulai contoh pengodean dengan mengunduhnya langsung dari pustaka scikit-learn.
Memuat dataset
Sebelum memulai pelatihan dan evaluasi model, kita perlu memuat datasetnya.
from sklearn.datasets import fetch_california_housing
data = fetch_california_housing()Didukung oleh
Kode ini mengimpor fungsi fetch_california_housing dari sklearn.datasets dan kemudian memanggilnya untuk memuat dataset California Housing. Dataset ini disimpan dalam variabel data, yang berisi fitur dan variabel targetnya.
Menyiapkan data
Setelah dataset dimuat, langkah berikutnya adalah menyiapkan data untuk analisis.
import pandas as pd
X = pd.DataFrame(data.data, columns=data.feature_names)
y = data.targetDidukung oleh
Di sini, kita menggunakan pustaka pandas untuk membuat DataFrame X yang berisi data fitur dari data.data. Kolom-kolom DataFrame diberi label menggunakan data.feature_names. Variabel target, yang merepresentasikan nilai tengah rumah, disimpan terpisah dalam y.
Menyiapkan K-Fold Cross-Validation
Sekarang saatnya menyiapkan model kita, termasuk memilih nilai K. Memilih nilai K yang tepat adalah langkah penting yang akan kita bahas secara rinci di bawah ini.
from sklearn.model_selection import KFold
k =5
kf = KFold(n_splits=k, shuffle=True, random_state=42)Didukung oleh
Kode ini menginisialisasi K-Fold Cross-Validation menggunakan kelas KFold dari sklearn.model_selection. Kita menyiapkan instance kf dengan 5 pembagian. Opsi shuffle=True mengacak urutan titik data, dan random_state=42 memastikan pengacakan ini konsisten di berbagai kali eksekusi. Pengaturan ini biasanya sudah cukup untuk mulai mengevaluasi kinerja model dengan cross-validation.
Menginisialisasi model
Dengan data yang sudah siap dan cross-validation disiapkan, langkah berikutnya adalah memilih dan menginisialisasi model.
from sklearn.linear_model import LinearRegression
model = LinearRegression()Didukung oleh
Kita mengimpor kelas LinearRegression dari sklearn.linear_model dan membuat sebuah instance model. Model ini akan digunakan untuk melakukan regresi linear pada dataset.
Melakukan cross-validation
Sekarang model telah diinisialisasi, kita bisa berlanjut ke bagian yang menyenangkan, yaitu melakukan cross-validation untuk mengevaluasi kinerjanya pada subset data yang berbeda.
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=kf, scoring='r2')Didukung oleh
Baris ini menggunakan fungsi cross_val_score untuk mengevaluasi model menggunakan dataset X dan target y. Cross-validation dilakukan menggunakan instance Kfoldkf, dan kinerja model diukur menggunakan skor R².
Menghitung skor R2 rata-rata
Kita dapat menggunakan R-squared sebagai metrik untuk mengevaluasi proporsi varians pada variabel dependen yang dapat diprediksi dari variabel independen, sehingga memberikan wawasan tentang goodness of fit model regresi.
import numpy as np
average_r2 = np.mean(scores)print(f"R² Score for each fold: {[round(score,4)for score in scores]}")print(f"Average R² across {k} folds: {average_r2:.2f}")Didukung oleh
Bagian ini menghitung skor R² rata-rata untuk semua fold. Skor untuk setiap fold dicetak terlebih dahulu, diikuti skor rata-ratanya. Penggunaan np.mean() menghitung rata-rata dari skor yang dikumpulkan selama cross-validation.
Menampilkan hasil akhir
Sekarang kita menggabungkan hasil untuk mendapatkan pemahaman yang komprehensif tentang kinerja model. Skor R² rata-rata memberikan satu metrik yang menunjukkan efektivitas model.
R² Score for each fold:[0.5758,0.6137,0.6086,0.6213,0.5875]
Average R² across 5 folds:0.60Didukung oleh
Ini adalah keluaran dari kode pada langkah sebelumnya. Keluaran ini menunjukkan skor R² untuk setiap fold dan skor R² rata-ratanya.
Apa yang Diwakili oleh ‘K’ dalam K-Fold Cross-Validation?
Dalam K-Fold Cross-Validation, ‘K’ mewakili jumlah kelompok tempat dataset dibagi. Angka ini menentukan berapa banyak putaran pengujian yang dijalani model, memastikan setiap segmen digunakan sebagai set pengujian sekali.
Berikut adalah sebuah heuristik:
K = 2 atau 3: Pilihan ini dapat menguntungkan saat sumber daya komputasi terbatas atau saat evaluasi yang lebih cepat dibutuhkan. Ini mengurangi jumlah siklus pelatihan, sehingga menghemat waktu dan daya komputasi sambil tetap memberikan estimasi kinerja model yang wajar.
K = 5 atau 10: Memilih K = 5 atau K = 10 adalah pilihan populer karena memberikan keseimbangan yang baik antara efisiensi komputasi dan estimasi kinerja model.
K = 20: Menggunakan nilai K yang lebih besar dapat memberikan evaluasi kinerja yang lebih terperinci. Namun, ini meningkatkan beban komputasi dan bisa menghasilkan varians yang lebih tinggi jika subset terlalu kecil.
Untuk pembahasan lebih lanjut tentang estimasi kinerja model, pertimbangkan untuk mengikuti kursus komprehensif kami Model Validation in Python.
Pertimbangan Utama Saat Menggunakan K-Fold Cross-Validation
Dampak 'K' dalam K-Fold Cross-Validation
Jumlah fold, atau 'K', dalam K-Fold Cross-Validation memengaruhi granularitas proses validasi sekaligus beban komputasi. K yang lebih kecil (misalnya, 3–5) mungkin lebih cepat tetapi dapat menghasilkan estimasi yang kurang andal karena setiap fold merepresentasikan porsi dataset yang lebih besar, berpotensi melewatkan skenario data yang beragam. K yang lebih besar (misalnya, 10) memberikan evaluasi yang lebih terperinci dengan biaya komputasi yang meningkat. Titik awal yang umum adalah K=5 atau K=10, yang seringkali cukup untuk mendapatkan estimasi andal tanpa komputasi berlebihan.
Pentingnya mengacak data dalam K-Fold Cross-Validation
Mengacak data dalam K-Fold Cross-Validation sangat direkomendasikan untuk meningkatkan keabsahan evaluasi model. Dengan menetapkan shuffle=True, pengacakan memutus urutan bawaan pada dataset yang dapat menimbulkan bias selama proses validasi. Ini memastikan setiap fold representatif terhadap keseluruhan dataset, yang penting untuk menilai seberapa baik model melakukan generalisasi pada data baru. Namun, penting untuk menghindari pengacakan pada kasus di mana urutan titik data bermakna, seperti pada data deret waktu, guna menjaga integritas proses pembelajaran.
Memastikan reprodusibilitas dalam K-Fold Cross-Validation
Memastikan hasil K-Fold Cross-Validation dapat direproduksi sangat penting untuk memverifikasi stabilitas dan kinerja model. Hal ini dapat dicapai dengan menetapkan parameter random_state, yang memastikan pengacakan data yang konsisten di berbagai kali eksekusi, sehingga memungkinkan pembagian data yang identik dan hasil yang dapat direproduksi.
K-Fold Standar vs. Metode Cross-Validation Lainnya
Memilih teknik cross-validation yang tepat sangat penting dalam membangun model pembelajaran mesin yang andal. Pilihan ini sangat bergantung pada karakteristik spesifik dataset dan jenis tugas pembelajaran mesin yang dikerjakan. Berbagai teknik dirancang untuk menangani beragam tantangan seperti data tidak seimbang atau struktur data berkelompok.
Tabel di bawah ini memberikan perbandingan komprehensif berbagai metode cross-validation paling populer, menyoroti fitur unik dan kasus penggunaan terbaiknya untuk memandu Anda dalam memilih teknik yang paling efektif untuk kebutuhan pemodelan spesifik Anda.
Jenis CV
Penggunaan
Deskripsi
Kapan Digunakan
K-Fold Cross-Validation Standar
Regresi dan klasifikasi
Membagi dataset menjadi k fold berukuran sama. Setiap fold digunakan sekali sebagai set uji.
Terbaik untuk dataset seimbang guna memastikan evaluasi model yang komprehensif.
Stratified K-Fold Cross-Validation
Utamanya klasifikasi
Mempertahankan proporsi label kelas yang sama di setiap fold seperti pada dataset asli.
Sangat baik untuk tugas klasifikasi dengan kelas tidak seimbang untuk menjaga proporsi kelompok.
Leave-One-Out Cross-Validation (LOOCV)
Regresi dan klasifikasi
Setiap titik data digunakan sekali sebagai set uji, dengan sisanya sebagai pelatihan.
Sangat baik untuk dataset kecil untuk memaksimalkan data pelatihan, meskipun intensif komputasi.
Leave-P-Out Cross-Validation
Regresi dan klasifikasi
Mirip LOOCV, tetapi mengeluarkan p titik data untuk set uji.
Ideal untuk dataset kecil untuk menguji bagaimana perubahan sampel data memengaruhi stabilitas model.
Group K-Fold Cross-Validation
Regresi dan klasifikasi dengan kelompok
Memastikan tidak ada kelompok yang berada di set pelatihan dan uji sekaligus, berguna saat titik data tidak independen.
Sangat baik untuk dataset dengan pengelompokan logis untuk menguji kinerja pada kelompok independen.
Stratified Group K-Fold Cross-Validation
Utamanya klasifikasi dengan data berkelompok
Menggabungkan stratifikasi dan integritas kelompok, memastikan kelompok tidak terpecah di antara fold.
Sangat baik untuk dataset yang berkelompok dan tidak seimbang guna menjaga integritas kelas dan kelompok sekaligus.
Kesimpulan
Panduan ini telah menunjukkan bahwa K-Fold Cross-Validation adalah alat yang ampuh untuk mengevaluasi model pembelajaran mesin. Metode ini lebih baik daripada Train-Test Split sederhana karena menguji model pada berbagai bagian data Anda, membantu Anda yakin bahwa model juga akan bekerja baik pada data yang belum terlihat.
Jika Anda mulai terjun ke pembelajaran mesin, berikut beberapa sumber yang bagus untuk membantu Anda:
Kursus Supervised Learning dengan Scikit-Learn dari DataCamp: Kursus ini membantu Anda memahami pemodelan prediktif. Bersifat praktis dan hands-on, ideal untuk memulai perjalanan Anda. Lihat kursusnya di sini.
Tutorial Machine Learning dengan Python: Tutorial ini menguraikan gagasan utama pembelajaran mesin dan menunjukkan cara menerapkannya. Sempurna untuk memantapkan pemahaman Anda. Baca tutorialnya di sini.
Cheat Sheet Scikit-Learn: Simpan cheat sheet ini. Sangat berguna sebagai pengingat cepat cara menggunakan fungsi pembelajaran mesin saat Anda mengerjakan proyek. Dapatkan cheat sheet di sini.
Kursus Kompetisi Kaggle dari DataCamp: Jika Anda ingin menguji kemampuan, kursus ini sangat cocok. Anda akan belajar cara tampil unggul di kompetisi Kaggle, tempat Anda bisa menerapkan apa yang telah dipelajari dengan cara yang menyenangkan dan kompetitif. Mulai kursusnya di sini.
Sumber-sumber ini ada untuk membimbing Anda, baik Anda baru memulai maupun ingin menyegarkan keterampilan. Mereka menawarkan perpaduan teori dan kiat praktis, memastikan Anda siap membangun dan menyempurnakan model yang akurat.
Pertanyaan yang Sering Diajukan
Bagaimana Anda menafsirkan skor cross-validation yang diperoleh dari K-Fold Cross-Validation?⌄
Skor cross-validation memberikan estimasi kinerja model pada data yang belum terlihat. Rata-rata skor yang lebih tinggi di seluruh fold menunjukkan generalisasi yang lebih baik. Namun, penting juga untuk mempertimbangkan varians skor antar fold. Varians tinggi menunjukkan kinerja model sensitif terhadap pembagian data tertentu, yang dapat mengindikasikan overfitting atau perlunya lebih banyak data. Upayakan rata-rata skor tinggi dengan varians rendah untuk model yang tangguh dan andal.
Bisakah Anda menggunakan K-Fold Cross-Validation untuk data deret waktu?⌄
K-Fold Cross-Validation standar mengasumsikan data terdistribusi independen dan identik, yang dilanggar pada deret waktu karena ketergantungan temporal. Untuk deret waktu, Anda sebaiknya menggunakan teknik seperti Time Series Split atau forward chaining di mana set pelatihan hanya mencakup titik data yang terjadi sebelum set uji.
Apa saja kesalahan umum yang perlu dihindari saat menyiapkan K-Fold Cross-Validation?⌄
Beberapa kesalahan umum termasuk tidak mengacak data, yang dapat menimbulkan bias jika dataset memiliki urutan bawaan, serta mengabaikan keacakan dalam penetapan fold, yang dapat menyebabkan variasi kinerja model di berbagai kali eksekusi. Memastikan data diacak (jika sesuai) dan menetapkan random_state tetap untuk reprodusibilitas adalah praktik kunci untuk menghindari masalah ini.
Apakah K-Fold Cross-Validation dapat digunakan untuk tugas pembelajaran tanpa pengawasan?⌄
Meskipun K-Fold Cross-Validation paling umum digunakan untuk pembelajaran terawasi guna memperkirakan kinerja prediktif, metode ini dapat diadaptasi untuk beberapa tugas tanpa pengawasan seperti klasterisasi dengan mengevaluasi stabilitas penetapan klaster di berbagai fold. Namun, penerapannya tidak sesederhana pada pengaturan terawasi.
Bagaimana K-Fold Cross-Validation menangani dataset dengan beragam skala fitur?⌄
K-Fold Cross-Validation sendiri tidak menangani berbagai skala fitur secara langsung. Penting untuk melakukan prapemrosesan dataset, biasanya menggunakan normalisasi atau standardisasi, sebelum menerapkan K-Fold Cross-Validation. Hal ini memastikan fitur dengan skala yang lebih besar tidak mendominasi proses pembelajaran model, sehingga menghasilkan evaluasi model yang lebih dapat digeneralisasi dan adil.
Vinod Chugani memulai kariernya di Tokyo sebagai Kepala Meja Penjualan Hedge Fund termuda di JPMorgan dan kemudian mencetak rekor penjualan individu di Lehman Brothers, lalu membangun bisnis distribusi elektronik di 30 negara dengan pendapatan melampaui SG$100 juta sebelum beralih ke data. Lulusan Ekonomi Duke dan alumni NYC Data Science Academy, ia menjadi salah satu dari tiga penerima beasiswa dari lebih dari 100 pelamar untuk kursus Building AI Applications oleh Hugo Bowne-Anderson di Maven. Saat ini, ia menulis untuk DataCamp, KDnuggets, Machine Learning Mastery, dan Statology tentang topik mulai dari statistika hingga AI agensial, dan membimbing para profesional data di NYC Data Science Academy dengan lebih dari 1.000 sesi tatap muka atas namanya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Bayangkan Anda sedang melatih model pembelajaran mesin, tetapi Anda tidak yakin bagaimana kinerjanya pada data baru yang belum pernah terlihat. Di sinilah K-Fold Cross-Validation berperan. Teknik ini memberi gambaran awal tentang bagaimana model Anda mungkin tampil di dunia nyata. Teknik ini membantu memastikan bahwa prediksi Anda bukan sekadar sekali berhasil, melainkan konsisten andal pada kumpulan data baru yang belum terlihat.
Dalam panduan ini, kita akan membahas dasar-dasar K-Fold Cross-Validation dan membandingkannya dengan metode yang lebih sederhana seperti Train-Test Split. Anda akan mengeksplorasi berbagai metode cross-validation menggunakan Python dan memahami mengapa memilih metode yang tepat dapat sangat memengaruhi proyek Anda. Pada akhirnya, Anda akan siap menerapkan strategi ini dengan scikit-learn.
Mari kita mulai dan pelajari cara membuat upaya pembelajaran mesin Anda benar-benar dapat diandalkan!
Apa itu K-Fold Cross-Validation?
K-Fold Cross-Validation adalah teknik yang tangguh untuk mengevaluasi kinerja model pembelajaran mesin. Teknik ini membantu memastikan model mampu melakukan generalisasi dengan baik pada data yang belum pernah terlihat dengan menggunakan bagian berbeda dari dataset untuk pelatihan dan pengujian dalam beberapa iterasi.
K-Fold Cross-Validation vs. Train-Test Split
Sementara K-Fold Cross-Validation membagi dataset menjadi beberapa subset untuk melatih dan menguji model secara iteratif, metode Train-Test Split membagi dataset hanya menjadi dua bagian: satu untuk pelatihan dan satu lagi untuk pengujian. Metode Train-Test Split sederhana dan cepat diterapkan, tetapi estimasi kinerjanya bisa sangat bergantung pada pembagian tertentu, sehingga menghasilkan varians yang tinggi pada hasilnya.
Gambar di bawah ini menggambarkan perbedaan struktural antara kedua metode tersebut. Gambar pertama menunjukkan metode Train-Test Split, di mana dataset dibagi menjadi 80% pelatihan dan 20% pengujian.
Ilustrasi Train/Test Split. Gambar oleh Penulis
Gambar kedua menggambarkan 5-Fold Cross-Validation, di mana dataset dibagi menjadi lima bagian, dengan setiap bagian berperan sebagai set uji dalam salah satu dari lima iterasi, memastikan setiap segmen digunakan untuk pelatihan dan pengujian.
Skema 5-Fold Cross-Validation. Gambar oleh Penulis
Kita dapat melihat bahwa K-Fold Cross-Validation memberikan estimasi kinerja yang lebih kuat dan andal karena mengurangi dampak variabilitas data. Dengan menggunakan beberapa siklus pelatihan dan pengujian, metode ini meminimalkan risiko overfitting pada pembagian data tertentu. Metode ini juga memastikan setiap titik data digunakan untuk pelatihan dan validasi, yang menghasilkan evaluasi kinerja model yang lebih komprehensif.
Mengimplementasikan K-Fold Cross-Validation di Python Menggunakan scikit-learn
Sekarang mari kita demonstrasikan K-Fold Cross-Validation menggunakan dataset California Housing untuk menilai kinerja model regresi linear. Metode ini memberikan estimasi akurasi model yang tangguh dengan menguji secara iteratif pada subset berbeda dari dataset, sehingga memastikan evaluasi yang komprehensif.
Gambaran umum dataset California Housing
California Housing Dataset, yang dikompilasi oleh Pace dan Barry (1997), berisi data dari Sensus AS 1990 tentang perumahan di California. Dataset ini mencakup 20.640 observasi dengan fitur seperti lokasi, usia hunian, dan populasi. Variabel targetnya adalah nilai tengah rumah untuk distrik di California.
Dataset ini menyediakan kumpulan fitur geografis, demografis, dan ekonomi yang beragam, sehingga sangat cocok untuk aplikasi data science dan pembelajaran mesin. Kita akan memulai contoh pengodean dengan mengunduhnya langsung dari pustaka scikit-learn.
Memuat dataset
Sebelum memulai pelatihan dan evaluasi model, kita perlu memuat datasetnya.
Kode ini mengimpor fungsi
fetch_california_housingdarisklearn.datasetsdan kemudian memanggilnya untuk memuat dataset California Housing. Dataset ini disimpan dalam variabel data, yang berisi fitur dan variabel targetnya.Menyiapkan data
Setelah dataset dimuat, langkah berikutnya adalah menyiapkan data untuk analisis.
Di sini, kita menggunakan pustaka pandas untuk membuat DataFrame X yang berisi data fitur dari data.data. Kolom-kolom DataFrame diberi label menggunakan
data.feature_names. Variabel target, yang merepresentasikan nilai tengah rumah, disimpan terpisah dalamy.Menyiapkan K-Fold Cross-Validation
Sekarang saatnya menyiapkan model kita, termasuk memilih nilai K. Memilih nilai K yang tepat adalah langkah penting yang akan kita bahas secara rinci di bawah ini.
Kode ini menginisialisasi K-Fold Cross-Validation menggunakan kelas KFold dari
sklearn.model_selection. Kita menyiapkan instancekfdengan 5 pembagian. Opsishuffle=Truemengacak urutan titik data, danrandom_state=42memastikan pengacakan ini konsisten di berbagai kali eksekusi. Pengaturan ini biasanya sudah cukup untuk mulai mengevaluasi kinerja model dengan cross-validation.Menginisialisasi model
Dengan data yang sudah siap dan cross-validation disiapkan, langkah berikutnya adalah memilih dan menginisialisasi model.
Kita mengimpor kelas
LinearRegressiondarisklearn.linear_modeldan membuat sebuah instance model. Model ini akan digunakan untuk melakukan regresi linear pada dataset.Melakukan cross-validation
Sekarang model telah diinisialisasi, kita bisa berlanjut ke bagian yang menyenangkan, yaitu melakukan cross-validation untuk mengevaluasi kinerjanya pada subset data yang berbeda.
Baris ini menggunakan fungsi
cross_val_scoreuntuk mengevaluasi model menggunakan datasetXdan targety. Cross-validation dilakukan menggunakan instanceKfoldkf, dan kinerja model diukur menggunakan skor R².Menghitung skor R2 rata-rata
Kita dapat menggunakan R-squared sebagai metrik untuk mengevaluasi proporsi varians pada variabel dependen yang dapat diprediksi dari variabel independen, sehingga memberikan wawasan tentang goodness of fit model regresi.
Bagian ini menghitung skor R² rata-rata untuk semua fold. Skor untuk setiap fold dicetak terlebih dahulu, diikuti skor rata-ratanya. Penggunaan
np.mean()menghitung rata-rata dari skor yang dikumpulkan selama cross-validation.Menampilkan hasil akhir
Sekarang kita menggabungkan hasil untuk mendapatkan pemahaman yang komprehensif tentang kinerja model. Skor R² rata-rata memberikan satu metrik yang menunjukkan efektivitas model.
Ini adalah keluaran dari kode pada langkah sebelumnya. Keluaran ini menunjukkan skor R² untuk setiap fold dan skor R² rata-ratanya.
Apa yang Diwakili oleh ‘K’ dalam K-Fold Cross-Validation?
Dalam K-Fold Cross-Validation, ‘K’ mewakili jumlah kelompok tempat dataset dibagi. Angka ini menentukan berapa banyak putaran pengujian yang dijalani model, memastikan setiap segmen digunakan sebagai set pengujian sekali.
Berikut adalah sebuah heuristik:
Untuk pembahasan lebih lanjut tentang estimasi kinerja model, pertimbangkan untuk mengikuti kursus komprehensif kami Model Validation in Python.
Pertimbangan Utama Saat Menggunakan K-Fold Cross-Validation
Dampak 'K' dalam K-Fold Cross-Validation
Jumlah fold, atau 'K', dalam K-Fold Cross-Validation memengaruhi granularitas proses validasi sekaligus beban komputasi. K yang lebih kecil (misalnya, 3–5) mungkin lebih cepat tetapi dapat menghasilkan estimasi yang kurang andal karena setiap fold merepresentasikan porsi dataset yang lebih besar, berpotensi melewatkan skenario data yang beragam. K yang lebih besar (misalnya, 10) memberikan evaluasi yang lebih terperinci dengan biaya komputasi yang meningkat. Titik awal yang umum adalah K=5 atau K=10, yang seringkali cukup untuk mendapatkan estimasi andal tanpa komputasi berlebihan.
Pentingnya mengacak data dalam K-Fold Cross-Validation
Mengacak data dalam K-Fold Cross-Validation sangat direkomendasikan untuk meningkatkan keabsahan evaluasi model. Dengan menetapkan shuffle=True, pengacakan memutus urutan bawaan pada dataset yang dapat menimbulkan bias selama proses validasi. Ini memastikan setiap fold representatif terhadap keseluruhan dataset, yang penting untuk menilai seberapa baik model melakukan generalisasi pada data baru. Namun, penting untuk menghindari pengacakan pada kasus di mana urutan titik data bermakna, seperti pada data deret waktu, guna menjaga integritas proses pembelajaran.
Memastikan reprodusibilitas dalam K-Fold Cross-Validation
Memastikan hasil K-Fold Cross-Validation dapat direproduksi sangat penting untuk memverifikasi stabilitas dan kinerja model. Hal ini dapat dicapai dengan menetapkan parameter random_state, yang memastikan pengacakan data yang konsisten di berbagai kali eksekusi, sehingga memungkinkan pembagian data yang identik dan hasil yang dapat direproduksi.
K-Fold Standar vs. Metode Cross-Validation Lainnya
Memilih teknik cross-validation yang tepat sangat penting dalam membangun model pembelajaran mesin yang andal. Pilihan ini sangat bergantung pada karakteristik spesifik dataset dan jenis tugas pembelajaran mesin yang dikerjakan. Berbagai teknik dirancang untuk menangani beragam tantangan seperti data tidak seimbang atau struktur data berkelompok.
Tabel di bawah ini memberikan perbandingan komprehensif berbagai metode cross-validation paling populer, menyoroti fitur unik dan kasus penggunaan terbaiknya untuk memandu Anda dalam memilih teknik yang paling efektif untuk kebutuhan pemodelan spesifik Anda.
Kesimpulan
Panduan ini telah menunjukkan bahwa K-Fold Cross-Validation adalah alat yang ampuh untuk mengevaluasi model pembelajaran mesin. Metode ini lebih baik daripada Train-Test Split sederhana karena menguji model pada berbagai bagian data Anda, membantu Anda yakin bahwa model juga akan bekerja baik pada data yang belum terlihat.
Jika Anda mulai terjun ke pembelajaran mesin, berikut beberapa sumber yang bagus untuk membantu Anda:
Sumber-sumber ini ada untuk membimbing Anda, baik Anda baru memulai maupun ingin menyegarkan keterampilan. Mereka menawarkan perpaduan teori dan kiat praktis, memastikan Anda siap membangun dan menyempurnakan model yang akurat.