R Academy · Pelajaran

Persampelan Semula dan Pengesahan Silang dengan rsample

Nilai model dengan CV k lipatan, bootstrap dan persampelan semula bersarang.

Pelajaran 4 daripada 413 langkah

Persampelan Semula dan Pengesahan Silang dengan rsample ialah pelajaran R Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran R Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus R Academy merangkumi sejumlah 4 pelajaran.

Mengapa Pensampelan Semula?

Satu pecahan latihan/ujian memberikan anggaran prestasi model yang bising — anda mungkin bernasib baik atau kurang bernasib baik dengan pemerhatian yang masuk ke dalam set ujian. Pensampelan semula mengulangi proses ini beberapa kali untuk mendapatkan anggaran yang stabil dan boleh dipercayai tentang cara model anda menggeneralisasi kepada data baharu.

library(rsample)

# Single split — performance estimate depends heavily
# on which 20% ended up as test data
split <- initial_split(mtcars, prop = 0.8)
train <- training(split)
test  <- testing(split)

cat('Train:', nrow(train), '| Test:', nrow(test))

initial_split()

initial_split(data, prop, strata) mencipta satu pecahan rawak kepada set latihan dan ujian. Gunakan strata untuk menstratakan mengikut lajur (contohnya pemboleh ubah hasil) bagi memastikan keseimbangan kelas dikekalkan dalam kedua-dua bahagian.

library(rsample)

# Stratified split by outcome variable
split <- initial_split(ames, prop = 0.8, strata = Sale_Price)

train <- training(split)
test  <- testing(split)

cat('Train rows:', nrow(train))
cat('Test rows:', nrow(test))

vfold_cv() — Pengesahan Silang K-Lipatan

vfold_cv(data, v = 10) mencipta 10 lipatan. Data dibahagikan kepada 10 bahagian yang sama; 9 digunakan untuk latihan dan 1 untuk pengesahan, secara bergilir-gilir merentasi semua lipatan. Ini memberikan 10 anggaran prestasi yang dipuratakan untuk mendapatkan metrik yang stabil.

folds <- vfold_cv(housing_train, v = 10, strata = price)

# Each fold is a split object
print(folds)

# Inspect one fold
fold_1 <- folds$splits[[1]]
train_1 <- analysis(fold_1)
val_1   <- assessment(fold_1)
cat('Fold 1 — Train:', nrow(train_1), '| Val:', nrow(val_1))

fit_resamples()

fit_resamples(workflow, resamples, metrics) melatih aliran kerja anda pada setiap lipatan latihan dan menilainya pada lipatan pengesahan, sambil mengumpulkan metrik yang diminta. Fungsi ini mengembalikan tibble hasil yang anda ringkaskan dengan collect_metrics().

library(tune)

folds <- vfold_cv(housing_train, v = 10)

res <- fit_resamples(
  wf,       # your workflow
  folds,
  metrics = metric_set(rmse, rsq)
)

# Average metric across all 10 folds
collect_metrics(res)

collect_metrics()

collect_metrics(resample_result) mengembalikan tibble teratur yang meringkaskan prestasi model merentas semua lipatan. Lajur mean ialah purata metrik dan std_err ialah ralat piawai, yang memberikan gambaran tentang varians dalam anggaran tersebut.

metrics_df <- collect_metrics(res)
print(metrics_df)

#   .metric .estimator   mean  n std_err .config
#   rmse    standard    24500  10   1200  Preprocessor1_Model1
#   rsq     standard    0.882  10  0.012  Preprocessor1_Model1

# Pull a single metric
collect_metrics(res) |>
  dplyr::filter(.metric == 'rmse') |>
  dplyr::pull(mean)

bootstraps() — Pensampelan Semula Bootstrap

bootstraps(data, times = 25) mencipta sampel bootstrap: setiap sampel ialah cabutan rawak dengan penggantian, bersaiz sama seperti set data asal. Pemerhatian yang tidak terpilih membentuk set penilaian di luar beg (OOB). Bootstrap mempunyai varians yang lebih tinggi berbanding k-lipatan tetapi berfungsi dengan baik pada set data kecil.

boot_samples <- bootstraps(housing_train, times = 25, strata = price)

print(boot_samples)

# Average proportion of unique rows in each bootstrap
mean(sapply(boot_samples$splits, function(s) {
  nrow(analysis(s)) / nrow(housing_train)
}))

Pengesahan Silang Monte Carlo

mc_cv(data, prop, times) mencipta times pecahan rawak, setiap satunya menggunakan prop daripada data untuk latihan. Berbeza daripada k-lipatan, pemerhatian yang sama boleh muncul dalam set pengesahan beberapa kali. Ini berguna apabila anda memerlukan lebih banyak lelaran pensampelan semula berbanding yang disediakan oleh k-lipatan.

mc_splits <- mc_cv(housing_train, prop = 0.8, times = 20)

res_mc <- fit_resamples(
  wf,
  mc_splits,
  metrics = metric_set(rmse, rsq)
)

collect_metrics(res_mc)

tune_grid() — Carian Hiperparameter

Apabila aliran kerja anda mengandungi ruang letak tune(), gunakan tune_grid(wf, resamples, grid) untuk mencari merentasi grid nilai hiperparameter. Setiap gabungan dinilai pada semua lipatan dan konfigurasi terbaik dipilih dengan select_best().

rf_spec <- rand_forest(mtry = tune(), trees = tune()) |>
  set_engine('ranger') |>
  set_mode('regression')

wf_tune <- workflow() |> add_recipe(rec) |> add_model(rf_spec)

grid <- grid_regular(mtry(range = c(2, 10)), trees(range = c(100, 500)), levels = 3)

tune_res <- tune_grid(wf_tune, resamples = folds, grid = grid)
collect_metrics(tune_res) |> head()

select_best() dan finalize_workflow()

Selepas penalaan, select_best(tune_res, metric) memilih gabungan hiperparameter dengan purata metrik terbaik. finalize_workflow(wf, best_params) mencipta aliran kerja baharu dengan nilai tersebut menggantikan tune().

best_params <- select_best(tune_res, metric = 'rmse')
print(best_params)

# Substitute best values into the workflow
final_wf <- finalize_workflow(wf_tune, best_params)

# Fit on all training data, evaluate on test
final_fit <- last_fit(final_wf, split)
collect_metrics(final_fit)

Pengesahan Silang Bersarang

Untuk penilaian yang benar-benar tidak berat sebelah apabila anda turut menala hiperparameter, gunakan pengesahan silang bersarang: gelung luar untuk menganggar prestasi dan gelung dalam untuk penalaan. Dalam rsample, cipta vfold_cv luar dan lakukan penalaan dalam setiap lipatan luar menggunakan lipatan dalam.

# Outer folds for unbiased evaluation
outer_folds <- vfold_cv(housing_train, v = 5)

# For each outer fold, tune on the inner training data
res_nested <- tune_grid(
  wf_tune,
  resamples = outer_folds,
  grid = 10,  # 10 random configurations
  metrics = metric_set(rmse)
)

collect_metrics(res_nested)

Membandingkan Strategi Pensampelan Semula

Setiap strategi pensampelan semula mempunyai pertukaran. Buat pilihan berdasarkan saiz set data dan belanjawan pengiraan anda:

  • k-lipatan (v=10): Bias rendah, varians sederhana. Pilihan lalai untuk kebanyakan masalah.
  • Bootstrap: Berfungsi dengan data yang sangat kecil; varians lebih tinggi berbanding k-lipatan.
  • CV Monte Carlo: Lebih fleksibel; baik untuk penalaan yang terhad oleh masa.
  • k-lipatan berulang: Varians lebih rendah; gunakan apabila anda mampu menanggung pengiraan tambahan.
# Repeated k-fold: 5-fold repeated 3 times = 15 models fitted
repeated_folds <- vfold_cv(housing_train, v = 5, repeats = 3)

res_rep <- fit_resamples(
  wf,
  repeated_folds,
  metrics = metric_set(rmse, rsq)
)

collect_metrics(res_rep)

Semakan Pantas

Apakah yang dikembalikan oleh collect_metrics() apabila digunakan pada hasil fit_resamples()?

Ulang Kaji Pensampelan Semula

Perkara penting daripada Pensampelan Semula dan Pengesahan Silang dengan rsample:

  • initial_split(data, prop, strata) mencipta pecahan latihan/ujian berstrata.
  • vfold_cv(data, v = 10) mencipta lipatan pengesahan silang k-lipatan.
  • bootstraps(data, times) mencipta sampel bootstrap untuk set data kecil.
  • fit_resamples(wf, folds, metrics) menilai aliran kerja merentas semua lipatan.
  • collect_metrics() meringkaskan hasil dengan purata dan ralat piawai.
  • tune_grid() mencari hiperparameter; select_best() memilih yang terbaik.
  • finalize_workflow() + last_fit() melengkapkan aliran kerja daripada penalaan hingga penggunaan.
# Full rsample pipeline
split  <- initial_split(data, prop = 0.8, strata = y)
train  <- training(split)
folds  <- vfold_cv(train, v = 10)

res    <- fit_resamples(wf, folds, metrics = metric_set(rmse, rsq))
collect_metrics(res)

# After tuning
best   <- select_best(tune_res, metric = 'rmse')
fin_wf <- finalize_workflow(wf_tune, best)
last_fit(fin_wf, split) |> collect_metrics()
Percuma untuk bermula

Pelajari R dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
43
Pelajaran
159

Soalan Lazim

Adakah pelajaran “Persampelan Semula dan Pengesahan Silang dengan rsample” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran R Academy, termasuk “Persampelan Semula dan Pengesahan Silang dengan rsample”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus R Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Persampelan Semula dan Pengesahan Silang dengan rsample”?

Nilai model dengan CV k lipatan, bootstrap dan persampelan semula bersarang. Anda berlatih R Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan R Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran R Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Persampelan Semula dan Pengesahan Silang dengan rsample” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran R Academy ini?

Ya. Setiap pelajaran R Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Kejuruteraan Ciri dengan recipes
  2. Spesifikasi Model dengan parsnip
  3. Aliran Kerja: Menggabungkan Resipi dan Model
  4. Persampelan Semula dan Pengesahan Silang dengan rsample
← Kembali ke R Academy