0Pricing
R Academy · บทเรียน

เวิร์กโฟลว์: การรวมสูตรกับโมเดล

รวมการเตรียมข้อมูลและโมเดลไว้ในออบเจ็กต์เวิร์กโฟลว์เดียว

เวิร์กโฟลว์: การรวมสูตรกับโมเดล เป็นบทเรียน 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 fitting

add_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 plot

extract_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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. วิศวกรรมคุณลักษณะด้วย recipes
  2. การกำหนดรายละเอียดโมเดลด้วย parsnip
  3. เวิร์กโฟลว์: การรวมสูตรกับโมเดล
  4. การสุ่มตัวอย่างใหม่และการตรวจสอบไขว้ด้วย rsample
← กลับไปที่ R Academy