เวิร์กโฟลว์: การรวมสูตรกับโมเดล
รวมการเตรียมข้อมูลและโมเดลไว้ในออบเจ็กต์เวิร์กโฟลว์เดียว
เวิร์กโฟลว์: การรวมสูตรกับโมเดล เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
เวิร์กโฟลว์คืออะไร
เวิร์กโฟลว์จะรวมสูตรและข้อกำหนดแบบจำลองไว้ในออบเจ็กต์เดียวกัน วิธีนี้แก้ปัญหาสำคัญ เพราะขั้นตอนการเตรียมข้อมูลและการสร้างแบบจำลองต้องได้รับการจัดการเป็นหน่วยเดียวกันระหว่างการตรวจสอบไขว้และการฝึกขั้นสุดท้าย มิฉะนั้นพารามิเตอร์อย่างค่าเฉลี่ยสำหรับการทำให้เป็นมาตรฐานอาจรั่วไหลจากชุดทดสอบย่อย
library(workflows)
# Start an empty workflow
wf <- workflow()
print(wf)
# Workflows have two slots: preprocessor and model
# Both must be filled before fittingadd_recipe() และ add_model()
ใช้ add_recipe(rec) เพื่อแนบตัวประมวลผลสูตร และใช้ add_model(spec) เพื่อแนบข้อกำหนดแบบจำลอง parsnip ตัวดำเนินการไปป์ช่วยให้โค้ดนี้อ่านเข้าใจได้ง่ายมาก
library(recipes)
library(parsnip)
library(workflows)
rec <- recipe(price ~ ., data = train) |>
step_impute_median(all_numeric_predictors()) |>
step_dummy(all_nominal_predictors()) |>
step_normalize(all_numeric_predictors())
spec <- linear_reg() |> set_engine('lm')
wf <- workflow() |>
add_recipe(rec) |>
add_model(spec)
print(wf)fit() กับเวิร์กโฟลว์
เมื่อเรียก fit(wf, data = train) กับเวิร์กโฟลว์ ระบบจะเรียก prep() กับสูตรโดยใช้ข้อมูลฝึกโดยอัตโนมัติ จากนั้นจึงฝึกแบบจำลองกับคุณลักษณะที่ผ่านการเตรียมแล้ว คุณไม่จำเป็นต้องเรียก prep() หรือ bake() ด้วยตนเอง
fitted_wf <- fit(wf, data = housing_train)
# The fitted workflow stores both the prepped recipe
# and the trained model
print(fitted_wf)predict() กับเวิร์กโฟลว์ที่ฝึกแล้ว
เมื่อเรียก predict(fitted_wf, new_data = test) เวิร์กโฟลว์จะใช้ bake() กับข้อมูลใหม่โดยอัตโนมัติ โดยอาศัยสูตรที่ฝึกแล้ว ก่อนสร้างค่าคาดการณ์ วิธีนี้ช่วยลดความเสี่ยงจากการลืมเตรียมข้อมูลทดสอบ
# Predictions automatically preprocess the test data
preds <- predict(fitted_wf, new_data = housing_test)
head(preds)
# For classification
preds_prob <- predict(fitted_wf, new_data = test_df, type = 'prob')
preds_class <- predict(fitted_wf, new_data = test_df, type = 'class')last_fit() — ฝึกด้วยข้อมูลทั้งหมดและประเมินกับข้อมูลทดสอบ
last_fit(wf, split) รับเวิร์กโฟลว์สุดท้ายและออบเจ็กต์การแบ่งข้อมูลฝึก/ทดสอบเริ่มต้น ฟังก์ชันนี้จะฝึกเวิร์กโฟลว์กับส่วนข้อมูลฝึกและประเมินกับส่วนข้อมูลทดสอบ ซึ่งเป็นขั้นตอนมาตรฐานในการประเมินแบบจำลองสุดท้ายหลังการปรับแต่งเสร็จสิ้น
library(rsample)
split <- initial_split(housing_data, prop = 0.8, strata = price)
# Fit on training, evaluate on test
final_res <- last_fit(wf, split)
# View performance on the held-out test set
collect_metrics(final_res)extract_fit_parsnip()
extract_fit_parsnip(fitted_wf) แยกออบเจ็กต์แบบจำลอง parsnip ที่ฝึกแล้วออกจากเวิร์กโฟลว์ที่ผ่านการฝึก จากนั้นคุณสามารถใช้เพื่อตรวจสอบค่าสัมประสิทธิ์ ความสำคัญของตัวแปร หรือส่งต่อให้เครื่องมืออธิบายแบบจำลอง
fitted_wf <- fit(wf, data = housing_train)
# Extract the parsnip model
parsnip_fit <- extract_fit_parsnip(fitted_wf)
# Now access the underlying model
tidy(parsnip_fit) # coefficients for lm
vip::vip(parsnip_fit) # variable importance plotextract_recipe()
extract_recipe(fitted_wf) ส่งคืนสูตรที่เตรียมแล้วจากเวิร์กโฟลว์ที่ผ่านการฝึก ฟังก์ชันนี้มีประโยชน์สำหรับตรวจสอบว่ามีการใช้การแปลงใดบ้าง หรือดึงการเตรียมข้อมูลที่ฝึกแล้วไปใช้กับข้อมูลภายนอกโดยอิสระ
fitted_wf <- fit(wf, data = housing_train)
# Get the prepped recipe
prepped_rec <- extract_recipe(fitted_wf)
# Inspect normalization stats
tidy(prepped_rec, number = 3) # step_normalize details
# Apply recipe to completely new external data
new_baked <- bake(prepped_rec, new_data = brand_new_df)augment() กับเวิร์กโฟลว์
augment(fitted_wf, new_data) ส่งคืนกรอบข้อมูลนำเข้าที่เพิ่มคอลัมน์ค่าคาดการณ์แล้ว สำหรับการถดถอย จะเพิ่ม .pred ส่วนการจำแนกประเภทจะเพิ่ม .pred_class และคอลัมน์ความน่าจะเป็นสำหรับแต่ละประเภท
fitted_wf <- fit(wf, data = housing_train)
# Append predictions to the test data frame
results <- augment(fitted_wf, new_data = housing_test)
# Now compute metrics directly
library(yardstick)
results |>
metrics(truth = price, estimate = .pred)การอัปเดตเวิร์กโฟลว์
คุณสามารถอัปเดตองค์ประกอบแต่ละส่วนของเวิร์กโฟลว์ด้วย update_recipe() หรือ update_model() โดยไม่ต้องสร้างใหม่ตั้งแต่ต้น วิธีนี้สะดวกในระหว่างการทดลอง เมื่อคุณต้องการเปลี่ยนเครื่องยนต์ของแบบจำลองแต่ยังคงใช้สูตรเดิม
# Original workflow with lm
wf_lm <- workflow() |>
add_recipe(rec) |>
add_model(linear_reg() |> set_engine('lm'))
# Swap model to random forest, keep same recipe
wf_rf <- update_model(
wf_lm,
rand_forest(trees = 300) |>
set_engine('ranger') |>
set_mode('regression')
)
fit_rf <- fit(wf_rf, data = housing_train)add_formula() เทียบกับ add_recipe()
หากคุณไม่จำเป็นต้องใช้สูตร คุณสามารถใช้ add_formula(outcome ~ .) เป็นตัวประมวลผลข้อมูลได้ วิธีนี้จะใช้การแปลงเพียงเล็กน้อย คือใช้แค่ข้อกำหนดสูตร ใช้ add_recipe() เมื่อต้องการสร้างคุณลักษณะ และใช้ add_formula() สำหรับแบบจำลองพื้นฐานที่ต้องการสร้างอย่างรวดเร็ว
# Simple baseline — no recipe needed
baseline_wf <- workflow() |>
add_formula(price ~ sqft + bedrooms + bathrooms) |>
add_model(linear_reg() |> set_engine('lm'))
baseline_fit <- fit(baseline_wf, data = housing_train)
baseline_preds <- predict(baseline_fit, new_data = housing_test)
# Compare RMSE to recipe-based model
yardstick::rmse_vec(housing_test$price, baseline_preds$.pred)ชุดเวิร์กโฟลว์สำหรับการเปรียบเทียบ
workflow_set() จากแพ็กเกจเวิร์กโฟลว์เซ็ตส์จะสร้างชุดเวิร์กโฟลว์ที่รวมสูตรและข้อกำหนดแบบจำลองหลายรายการเข้าด้วยกัน จากนั้นคุณสามารถปรับแต่งและประเมินชุดผสมทั้งหมดพร้อมกันด้วย workflow_map()
library(workflowsets)
all_workflows <- workflow_set(
preproc = list(basic = basic_rec, full = full_rec),
models = list(
lm = linear_reg() |> set_engine('lm'),
rf = rand_forest(trees = 200) |> set_engine('ranger') |> set_mode('regression')
)
)
# Fit all 4 combinations on resamples
results <- workflow_map(all_workflows, 'fit_resamples', resamples = cv_folds)
autoplot(results)ตรวจสอบความเข้าใจ
ข้อได้เปรียบหลักของการใช้ last_fit(workflow, split) แทนการฝึกและสร้างค่าคาดการณ์ด้วยตนเองคืออะไร
สรุปเวิร์กโฟลว์
ประเด็นสำคัญจากเวิร์กโฟลว์: การรวมสูตรและแบบจำลอง:
workflow() |> add_recipe(rec) |> add_model(spec)รวมการเตรียมข้อมูลและการสร้างแบบจำลองไว้ด้วยกันfit(wf, data = train)เตรียมสูตรและฝึกแบบจำลองด้วยการเรียกเพียงครั้งเดียวpredict(fitted_wf, new_data)ใช้ bake กับข้อมูลใหม่โดยอัตโนมัติก่อนสร้างค่าคาดการณ์last_fit(wf, split)ฝึกกับข้อมูลฝึกและประเมินกับข้อมูลทดสอบ ใช้สำหรับประเมินแบบจำลองขั้นสุดท้ายextract_fit_parsnip()และextract_recipe()ใช้ดึงองค์ประกอบออกมาตรวจสอบaugment()เพิ่มค่าคาดการณ์ลงในกรอบข้อมูลเพื่อให้คำนวณตัวชี้วัดได้ง่ายworkflow_set()เปรียบเทียบชุดผสมสูตรและแบบจำลองหลายรายการพร้อมกัน
# Canonical tidymodels workflow pattern
split <- initial_split(data, prop = 0.8)
train <- training(split)
test <- testing(split)
rec <- recipe(y ~ ., data = train) |> step_normalize(all_numeric_predictors())
spec <- rand_forest(trees = 300) |> set_engine('ranger') |> set_mode('regression')
wf <- workflow() |> add_recipe(rec) |> add_model(spec)
final_res <- last_fit(wf, split)
collect_metrics(final_res)คำถามที่พบบ่อย
บทเรียน “เวิร์กโฟลว์: การรวมสูตรกับโมเดล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เวิร์กโฟลว์: การรวมสูตรกับโมเดล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เวิร์กโฟลว์: การรวมสูตรกับโมเดล”
รวมการเตรียมข้อมูลและโมเดลไว้ในออบเจ็กต์เวิร์กโฟลว์เดียว คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “เวิร์กโฟลว์: การรวมสูตรกับโมเดล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม
ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- วิศวกรรมคุณลักษณะด้วย recipes
- การกำหนดรายละเอียดโมเดลด้วย parsnip
- เวิร์กโฟลว์: การรวมสูตรกับโมเดล
- การสุ่มตัวอย่างใหม่และการตรวจสอบไขว้ด้วย rsample