0Pricing
Learn AI with Python · Pelajaran

Strategi Validasi Silang

k-fold, stratified k-fold, leave-one-out, dan pemisahan deret waktu — kapan menggunakan masing-masing.

Strategi Validasi Silang adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.

Mengapa Menggunakan Validasi Silang

Satu pembagian pelatihan/pengujian bisa beruntung atau tidak. Validasi silang mengulangi evaluasi pada pembagian yang berbeda dan merata-ratakan skor, sehingga memberikan perkiraan kinerja yang lebih andal.

Validasi Silang K-Fold

KFold membagi data menjadi K bagian yang sama besar. Setiap lipatan digunakan sekali sebagai set pengujian, sedangkan bagian lainnya digunakan untuk melatih model. Anda memperoleh K skor untuk dirata-ratakan.

from sklearn.model_selection import KFold

kf = KFold(n_splits=5, shuffle=True, random_state=0)
for train_idx, test_idx in kf.split(X):
    Xtr, Xte = X[train_idx], X[test_idx]
    ytr, yte = y[train_idx], y[test_idx]
    # train and evaluate here

K-Fold Berstrata untuk Klasifikasi

Dalam klasifikasi, K-Fold biasa dapat menghasilkan lipatan dengan rasio kelas yang tidak seimbang. StratifiedKFold mempertahankan proporsi kelas di setiap lipatan.

from sklearn.model_selection import StratifiedKFold

skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
for train_idx, test_idx in skf.split(X, y):
    # each fold keeps the same class balance as the full set
    pass

Pintasan cross_val_score

cross_val_score menjalankan seluruh perulangan untuk Anda dan mengembalikan larik skor setiap lipatan. Fitur ini secara otomatis menggunakan StratifiedKFold untuk pengklasifikasi.

from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(random_state=0)
scores = cross_val_score(clf, X, y, cv=5, scoring="accuracy")
print(scores)
print("Mean:", scores.mean(), "Std:", scores.std())

Memilih Jumlah Lipatan

Lebih banyak lipatan (misalnya 10) memberikan perkiraan yang lebih sedikit bias, tetapi membutuhkan lebih banyak komputasi. Validasi 5 lipatan merupakan keseimbangan yang umum. Untuk set data yang sangat kecil, validasi satu-sampel menggunakan N lipatan, dengan setiap set pengujian berisi satu sampel.

from sklearn.model_selection import LeaveOneOut, cross_val_score

loo = LeaveOneOut()
scores = cross_val_score(clf, X, y, cv=loo)
print("Mean:", scores.mean())

TimeSeriesSplit untuk Data Temporal

Untuk deret waktu, Anda tidak boleh melatih model menggunakan masa depan. TimeSeriesSplit selalu menggunakan data masa lalu untuk pelatihan dan blok berikutnya untuk pengujian, dengan memperluas jendela pelatihan di setiap lipatan.

from sklearn.model_selection import TimeSeriesSplit

tscv = TimeSeriesSplit(n_splits=5)
for train_idx, test_idx in tscv.split(X):
    # train_idx always precedes test_idx in time
    print(len(train_idx), len(test_idx))

Mengapa Urutan Penting dalam Deret Waktu

Mengacak data yang berurutan berdasarkan waktu membocorkan informasi masa depan ke dalam pelatihan dan menggelembungkan skor. TimeSeriesSplit menghormati urutan kronologis, sehingga evaluasi Anda mencerminkan kondisi peramalan yang sebenarnya.

cross_validate untuk Beberapa Metrik

cross_validate mirip dengan cross_val_score, tetapi mengembalikan beberapa metrik sekaligus dan dapat menyertakan skor pelatihan serta waktu pelatihan.

from sklearn.model_selection import cross_validate

results = cross_validate(
    clf, X, y, cv=5,
    scoring=["accuracy", "f1_macro", "roc_auc_ovr"],
    return_train_score=True,
)
print(results["test_accuracy"])
print(results["test_f1_macro"])

Membaca Output cross_validate

Hasilnya berupa kamus dengan kunci seperti test_<metric>, train_<metric>, fit_time, dan score_time. Membandingkan skor pelatihan dan pengujian membantu mendiagnosis penyesuaian berlebihan.

import numpy as np

gap = results["train_accuracy"].mean() - results["test_accuracy"].mean()
print("Overfit gap:", gap)
print("Avg fit time:", np.mean(results["fit_time"]))

Validasi Silang dan Kebocoran Data

Selalu gunakan fit untuk prapemrosesan (penskalaan, pengodean) di dalam perulangan CV, bukan sebelumnya. Gunakan Pipeline agar setiap lipatan melakukan penskalaan hanya dengan data pelatihannya, sehingga mencegah kebocoran.

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score

pipe = make_pipeline(StandardScaler(), SVC())
scores = cross_val_score(pipe, X, y, cv=5)

Memilih Strategi yang Tepat

Gunakan StratifiedKFold untuk klasifikasi, KFold biasa untuk regresi, dan TimeSeriesSplit untuk data temporal. Bungkus prapemrosesan dalam alur kerja dan laporkan mean serta simpangan baku di seluruh lipatan.

Pemeriksaan Singkat

Uji pengetahuan Anda tentang validasi silang.

Ringkasan

Ringkasan: Validasi silang merata-ratakan kinerja di berbagai pembagian. Gunakan KFold untuk regresi, StratifiedKFold untuk klasifikasi berimbang, dan TimeSeriesSplit untuk data temporal. cross_val_score memberikan satu metrik; cross_validate memberikan banyak metrik beserta waktunya. Selalu lakukan prapemrosesan di dalam Pipeline untuk mencegah kebocoran.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Strategi Validasi Silang” gratis?

Ya — teks lengkap “Strategi Validasi Silang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Strategi Validasi Silang”?

k-fold, stratified k-fold, leave-one-out, dan pemisahan deret waktu — kapan menggunakan masing-masing. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn AI with Python?

Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Strategi Validasi Silang” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?

Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Strategi Validasi Silang
  2. Pendalaman Metrik Klasifikasi
  3. Pencarian Grid dan Pencarian Acak
  4. Optimisasi Bayesian dengan Optuna
← Kembali ke Learn AI with Python