0Pricing
R Academy · Pelajaran

Spesifikasi Model dengan parsnip

Tentukan jenis model dan mesinnya secara terpisah dari langkah pelatihan.

Spesifikasi Model dengan parsnip adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Apa Itu parsnip?

parsnip menyediakan antarmuka terpadu ke ratusan mesin model. Daripada mempelajari sintaks unik setiap paket (glm(), randomForest(), e1071::svm()), Anda menulis satu spesifikasi yang konsisten dan memberi tahu parsnip mesin mana yang digunakan di balik layar.

Artinya, Anda dapat mengganti mesin—misalnya dari glm ke stan untuk regresi logistik Bayesian—dengan mengubah satu argumen.

library(parsnip)

# The same interface, different engines
logistic_reg() |> set_engine('glm')    # base R
logistic_reg() |> set_engine('glmnet') # regularized
logistic_reg() |> set_engine('stan')   # Bayesian

logistic_reg() untuk Klasifikasi

logistic_reg() menentukan model regresi logistik untuk klasifikasi biner. Rangkai dengan set_engine('glm') untuk menggunakan mesin GLM bawaan R, dan set_mode('classification') untuk menyatakan jenis tugas secara eksplisit.

Mode ('classification' atau 'regression') diperlukan untuk jenis model yang mendukung keduanya.

log_spec <- logistic_reg() |>
  set_engine('glm') |>
  set_mode('classification')

print(log_spec)
# Logistic Regression Model Specification (classification)
# Computational engine: glm

rand_forest() dengan tune()

rand_forest() menentukan random forest. Parameter seperti mtry (jumlah fitur per pemisahan) dan trees dapat ditetapkan nilainya atau diatur ke tune() sebagai pengganti sementara untuk pencarian hiperparameter.

Saat Anda memberikan tune(), tidymodels akan mencari dalam kisi nilai selama penyetelan validasi silang.

rf_spec <- rand_forest(
  mtry  = tune(),
  trees = 500,
  min_n = tune()
) |>
  set_engine('ranger', importance = 'impurity') |>
  set_mode('classification')

print(rf_spec)

linear_reg() untuk Regresi

linear_reg() menetapkan model regresi linear. Penggunaan set_engine('lm') menerapkan metode kuadrat terkecil biasa, sedangkan set_engine('glmnet') mengaktifkan regularisasi L1/L2 melalui parameter penalti dan campuran.

# OLS linear regression
lm_spec <- linear_reg() |>
  set_engine('lm')

# Ridge regression (penalty > 0, mixture = 0)
ridge_spec <- linear_reg(penalty = 0.01, mixture = 0) |>
  set_engine('glmnet')

# Lasso (penalty > 0, mixture = 1)
lasso_spec <- linear_reg(penalty = tune(), mixture = 1) |>
  set_engine('glmnet')

boost_tree() — Penguatan Gradien

boost_tree() menetapkan model pohon dengan penguatan gradien. Anda dapat menargetkan mesin xgboost, lightgbm, atau C5.0. Parameter yang dapat dituning mencakup tree_depth, learn_rate, dan loss_reduction.

xgb_spec <- boost_tree(
  trees      = 500,
  tree_depth = tune(),
  learn_rate = tune(),
  loss_reduction = tune()
) |>
  set_engine('xgboost') |>
  set_mode('classification')

print(xgb_spec)

fit() — Melatih Model

fit(spec, formula, data) melatih spesifikasi model menggunakan data aktual. Secara internal, parsnip menerjemahkan spesifikasi tersebut menjadi pemanggilan mesin yang sesuai. Hasilnya adalah objek model parsnip yang telah dilatih.

lm_spec <- linear_reg() |> set_engine('lm')

# Fit the model on training data
lm_fit <- fit(lm_spec, mpg ~ wt + hp + cyl, data = mtcars)

# The fitted object wraps the engine result
print(lm_fit)

# Access the underlying lm object
extract_fit_engine(lm_fit)

fit_xy() — Antarmuka Matriks

fit_xy(spec, x, y) merupakan alternatif untuk fit(spec, formula, data). Fungsi ini menerima matriks prediktor x dan vektor respons y secara langsung, sehingga berguna ketika data Anda sudah diproses menjadi matriks numerik (umum pada jaringan saraf atau XGBoost).

x_train <- train_baked |> select(-price)
y_train <- train_baked$price

lm_spec <- linear_reg() |> set_engine('lm')

# Matrix-style fit
lm_fit_xy <- fit_xy(lm_spec, x = x_train, y = y_train)

print(lm_fit_xy)

translate() — Melihat Kode Mesin

translate(spec) menampilkan secara tepat apa yang akan dipanggil parsnip secara internal untuk mesin tertentu. Ini sangat berguna untuk menelusuri kesalahan atau memahami bagaimana spesifikasi parsnip Anda dipetakan ke antarmuka asli mesin tersebut.

rf_spec <- rand_forest(mtry = 3, trees = 500) |>
  set_engine('ranger') |>
  set_mode('classification')

# See what ranger() call will be generated
translate(rf_spec)

# ranger::ranger(formula = ..., data = ...,
#   num.trees = 500, mtry = 3, ...)

predict() dengan parsnip

Semua model parsnip yang telah dilatih menggunakan antarmuka predict() yang sama. Untuk klasifikasi, type = 'class' mengembalikan kelas prediksi, sedangkan type = 'prob' mengembalikan probabilitas setiap kelas. Konsistensi ini merupakan salah satu keunggulan utama parsnip.

log_fit <- fit(logistic_reg() |> set_engine('glm') |> set_mode('classification'),
               species ~ ., data = train_df)

# Predicted classes
predict(log_fit, new_data = test_df, type = 'class')

# Predicted probabilities
predict(log_fit, new_data = test_df, type = 'prob')

augment() — Prediksi yang Digabungkan dengan Data

augment(fitted_model, new_data) menambahkan kolom prediksi langsung ke kerangka data masukan. Ini memudahkan evaluasi: hasilnya memuat nilai sebenarnya dan prediksi secara berdampingan, siap digunakan untuk perhitungan metrik.

log_fit <- fit(
  logistic_reg() |> set_engine('glm') |> set_mode('classification'),
  species ~ ., data = train_df
)

# Get predictions joined to test data
results <- augment(log_fit, new_data = test_df)
head(results[, c('species', '.pred_class', '.pred_setosa')])

Membandingkan Spesifikasi Model

Salah satu manfaat utama parsnip adalah perbandingan model yang cepat. Anda menetapkan beberapa spesifikasi, melatih semuanya menggunakan data yang sama, lalu membandingkan metriknya. Karena antarmukanya identik, mengganti model hanya memerlukan perubahan pada definisi spesifikasinya.

specs <- list(
  lm    = linear_reg() |> set_engine('lm'),
  ridge = linear_reg(penalty = 0.01, mixture = 0) |> set_engine('glmnet'),
  rf    = rand_forest(trees = 200) |> set_engine('ranger') |> set_mode('regression')
)

fits <- lapply(specs, fit, mpg ~ ., data = train_mtcars)

preds <- lapply(fits, predict, new_data = test_mtcars)

rmse_vals <- sapply(preds, function(p) {
  sqrt(mean((p$.pred - test_mtcars$mpg)^2))
})
print(rmse_vals)

Pemeriksaan Singkat

Dalam parsnip, apa yang dikembalikan oleh translate(spec)?

Ringkasan parsnip

Hal-hal penting dari Spesifikasi Model dengan parsnip:

  • parsnip menyediakan antarmuka terpadu: tetapkan jenis model, mesin, dan mode secara terpisah.
  • set_engine() memilih paket yang mendasarinya; set_mode() memilih klasifikasi atau regresi.
  • Gunakan tune() sebagai penanda pengganti untuk hiperparameter yang akan dicari nanti.
  • fit(spec, formula, data) melatih model; fit_xy(spec, x, y) menerima matriks.
  • predict(fit, new_data, type) konsisten di semua mesin.
  • translate(spec) menampilkan pemanggilan mesin untuk penelusuran kesalahan.
  • augment(fit, new_data) menambahkan prediksi ke kerangka data.
# Parsnip model comparison template
spec <- rand_forest(trees = 500, mtry = tune()) |>
  set_engine('ranger', importance = 'impurity') |>
  set_mode('classification')

print(translate(spec))

# When mtry is fixed:
spec_fixed <- rand_forest(trees = 500, mtry = 5) |>
  set_engine('ranger') |>
  set_mode('classification')
fit_fixed <- fit(spec_fixed, label ~ ., data = train_df)

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Spesifikasi Model dengan parsnip” gratis?

Ya — teks lengkap “Spesifikasi Model dengan parsnip” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Spesifikasi Model dengan parsnip”?

Tentukan jenis model dan mesinnya secara terpisah dari langkah pelatihan. Kamu berlatih R Academy 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 R Academy?

Tidak diperlukan pengalaman sebelumnya. R Academy 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 2 dari 4.

Berapa lama pelajaran “Spesifikasi Model dengan parsnip” 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 R Academy ini?

Ya. Setiap pelajaran R Academy 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. Rekayasa Fitur dengan recipes
  2. Spesifikasi Model dengan parsnip
  3. Alur Kerja: Menggabungkan Resep dan Model
  4. Pengambilan Sampel Ulang dan Validasi Silang dengan rsample
← Kembali ke R Academy