การกำหนดรายละเอียดโมเดลด้วย parsnip
ระบุประเภทโมเดลและกลไกการทำงานโดยแยกจากขั้นตอนการฝึก
การกำหนดรายละเอียดโมเดลด้วย parsnip เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
parsnip คืออะไร
parsnip มีส่วนติดต่อแบบรวมสำหรับกลไกของโมเดลนับร้อย แทนที่จะต้องเรียนรู้ไวยากรณ์เฉพาะของแต่ละแพ็กเกจ (glm(), randomForest(), e1071::svm()) คุณสามารถเขียนข้อกำหนดที่มีรูปแบบเดียวกัน แล้วบอก parsnip ว่าต้องการใช้กลไกใดอยู่เบื้องหลัง
ซึ่งหมายความว่าคุณสามารถสลับกลไกได้ เช่น จาก glm เป็น stan สำหรับการถดถอยโลจิสติกแบบเบย์ โดยเปลี่ยนอาร์กิวเมนต์เพียงตัวเดียว
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') # Bayesianlogistic_reg() สำหรับการจำแนกประเภท
logistic_reg() ใช้ระบุโมเดลการถดถอยโลจิสติกสำหรับการจำแนกประเภทแบบทวิภาค เชื่อมต่อ set_engine('glm') เพื่อใช้กลไก GLM ในตัวของ R และใช้ set_mode('classification') เพื่อประกาศประเภทงานอย่างชัดเจน
ต้องระบุโหมด ('classification' หรือ 'regression') สำหรับประเภทโมเดลที่รองรับทั้งสองแบบ
log_spec <- logistic_reg() |>
set_engine('glm') |>
set_mode('classification')
print(log_spec)
# Logistic Regression Model Specification (classification)
# Computational engine: glmrand_forest() กับ tune()
rand_forest() ใช้ระบุ Random Forest พารามิเตอร์อย่าง mtry (จำนวนคุณลักษณะต่อการแบ่งแต่ละครั้ง) และ trees สามารถกำหนดค่าแน่นอน หรือกำหนดเป็น tune() เพื่อใช้เป็นตัวยึดตำแหน่งสำหรับการค้นหาพารามิเตอร์ไฮเปอร์
เมื่อส่ง tune() tidymodels จะค้นหาค่าต่าง ๆ ในกริดระหว่างการปรับแต่งด้วยการตรวจสอบไขว้
rf_spec <- rand_forest(
mtry = tune(),
trees = 500,
min_n = tune()
) |>
set_engine('ranger', importance = 'impurity') |>
set_mode('classification')
print(rf_spec)linear_reg() สำหรับการถดถอย
linear_reg() ใช้ระบุแบบจำลองการถดถอยเชิงเส้น การใช้ set_engine('lm') จะใช้วิธีกำลังสองน้อยที่สุดแบบธรรมดา ส่วน set_engine('glmnet') จะเปิดใช้การทำให้เป็นปกติแบบ L1/L2 ผ่านพารามิเตอร์ penalty และ mixture
# 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() — การเพิ่มต้นไม้แบบเกรเดียนต์
boost_tree() ใช้ระบุแบบจำลองต้นไม้ที่เพิ่มแบบเกรเดียนต์ คุณสามารถเลือกเครื่องยนต์ xgboost, lightgbm หรือ C5.0 ได้ พารามิเตอร์ที่ปรับได้ ได้แก่ tree_depth, learn_rate และ 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() — ฝึกแบบจำลอง
fit(spec, formula, data) ใช้ฝึกข้อกำหนดแบบจำลองกับข้อมูลจริง โดยภายใน parsnip จะแปลงข้อกำหนดให้เป็นการเรียกใช้เครื่องยนต์ที่เหมาะสม ผลลัพธ์คือออบเจ็กต์แบบจำลอง parsnip ที่ผ่านการฝึกแล้ว
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() — ส่วนติดต่อแบบเมทริกซ์
fit_xy(spec, x, y) เป็นอีกทางเลือกหนึ่งนอกเหนือจาก fit(spec, formula, data) โดยรับเมทริกซ์ตัวทำนาย x และเวกเตอร์คำตอบ y โดยตรง เหมาะเมื่อข้อมูลของคุณถูกเตรียมให้อยู่ในรูปเมทริกซ์ตัวเลขแล้ว ซึ่งมักพบในการใช้โครงข่ายประสาทเทียมหรือ 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() — ดูโค้ดของเครื่องยนต์
translate(spec) แสดงให้เห็นอย่างชัดเจนว่า parsnip จะเรียกใช้อะไรภายในสำหรับเครื่องยนต์ที่กำหนด ฟังก์ชันนี้มีประโยชน์อย่างยิ่งสำหรับการแก้ไขข้อผิดพลาดหรือทำความเข้าใจว่าข้อกำหนด parsnip ของคุณเชื่อมโยงกับส่วนติดต่อดั้งเดิมของเครื่องยนต์อย่างไร
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() กับ parsnip
แบบจำลอง parsnip ที่ผ่านการฝึกทั้งหมดใช้ส่วนติดต่อ predict() เดียวกัน สำหรับการจำแนกประเภท type = 'class' จะส่งคืนประเภทที่คาดการณ์ และ type = 'prob' จะส่งคืนความน่าจะเป็นของแต่ละประเภท ความสอดคล้องนี้เป็นข้อได้เปรียบสำคัญประการหนึ่งของ 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() — เพิ่มค่าคาดการณ์ลงในข้อมูล
augment(fitted_model, new_data) จะเพิ่มคอลัมน์ค่าคาดการณ์ลงในกรอบข้อมูลนำเข้าโดยตรง วิธีนี้สะดวกสำหรับการประเมินผล เพราะผลลัพธ์จะมีทั้งค่าจริงและค่าคาดการณ์วางเคียงกัน พร้อมสำหรับการคำนวณตัวชี้วัด
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')])การเปรียบเทียบข้อกำหนดแบบจำลอง
ประโยชน์สำคัญประการหนึ่งของ parsnip คือการเปรียบเทียบแบบจำลองได้อย่างรวดเร็ว คุณสามารถกำหนดข้อกำหนดหลายรายการ ฝึกทั้งหมดกับข้อมูลชุดเดียวกัน แล้วเปรียบเทียบตัวชี้วัด เนื่องจากส่วนติดต่อเหมือนกัน การสลับแบบจำลองจึงทำได้โดยเปลี่ยนเพียงการกำหนดข้อกำหนด
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)ตรวจสอบความเข้าใจ
ใน parsnip translate(spec) ส่งคืนอะไร
สรุป parsnip
ประเด็นสำคัญจากข้อกำหนดแบบจำลองด้วย parsnip:
- parsnip มีส่วนติดต่อแบบรวมเป็นหนึ่งเดียว โดยแยกการระบุประเภทแบบจำลอง เครื่องยนต์ และโหมดออกจากกัน
set_engine()ใช้เลือกแพ็กเกจพื้นฐาน ส่วนset_mode()ใช้เลือกการจำแนกประเภทหรือการถดถอย- ใช้
tune()เป็นตัวยึดตำแหน่งสำหรับพารามิเตอร์ไฮเปอร์ที่ต้องค้นหาในภายหลัง fit(spec, formula, data)ใช้ฝึกแบบจำลอง ส่วนfit_xy(spec, x, y)ใช้รับเมทริกซ์predict(fit, new_data, type)ทำงานสอดคล้องกันในทุกเครื่องยนต์translate(spec)แสดงการเรียกใช้เครื่องยนต์เพื่อช่วยแก้ไขข้อผิดพลาดaugment(fit, new_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)เรียนรู้ R ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 43
- บทเรียน
- 159
คำถามที่พบบ่อย
บทเรียน “การกำหนดรายละเอียดโมเดลด้วย parsnip” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดรายละเอียดโมเดลด้วย parsnip” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดรายละเอียดโมเดลด้วย parsnip”
ระบุประเภทโมเดลและกลไกการทำงานโดยแยกจากขั้นตอนการฝึก คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดรายละเอียดโมเดลด้วย parsnip” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม
ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- วิศวกรรมคุณลักษณะด้วย recipes
- การกำหนดรายละเอียดโมเดลด้วย parsnip
- เวิร์กโฟลว์: การรวมสูตรกับโมเดล
- การสุ่มตัวอย่างใหม่และการตรวจสอบไขว้ด้วย rsample