0Pricing
R Academy · Ders

recipes ile Özellik Mühendisliği

Normalleştirme, kodlama ve eksik değer tamamlama için ön işleme adımları tanımlayın.

recipes ile Özellik Mühendisliği, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

Tarif Nedir?

tidymodels'ta recipe, verilerinizi ön işlemek için kullanılan bir taslaktır. Ham verileri modellemeye hazır özelliklere dönüştürmek için gereken adımları kaydeder — ancak bunları hemen uygulamaz.

Temel işlev, formülü ve ön işleme sırasında gereken istatistikleri tahmin etmek için kullanılacak başvuru veri kümesini tanımlayan recipe(outcome ~ ., data = train) işlevidir.

library(recipes)
library(tidymodels)

# Create a recipe using the training data
rec <- recipe(price ~ ., data = train_data)
print(rec)

step_normalize()

step_normalize(all_numeric_predictors()), her sayısal tahmin ediciyi ortalaması 0 olacak şekilde merkezler ve standart sapması 1 olacak şekilde ölçeklendirir. Bu işlem, lojistik regresyon, SVM veya sinir ağları gibi özellik ölçeğine duyarlı algoritmalar için gereklidir.

Ortalama ve SD eğitim kümesinden hesaplanır ve bake() aracılığıyla test verilerine tutarlı biçimde uygulanır.

rec <- recipe(price ~ ., data = train_data) |>
  step_normalize(all_numeric_predictors())

# Check what steps are recorded
print(rec)

step_dummy()

step_dummy(all_nominal_predictors()), kategorik (factor/character) değişkenleri sayısal kukla (one-hot kodlanmış) sütunlara dönüştürür. Varsayılan olarak k düzeyli bir factor için k-1 sütun oluşturur ve tam çoklu doğrusal bağlantıyı önler.

Tam one-hot kodlamadan yararlanan ağaç tabanlı modeller için one_hot = TRUE kullanın.

rec <- recipe(price ~ ., data = train_data) |>
  step_dummy(all_nominal_predictors())

# After prep and bake, factor columns become 0/1 numeric columns
prepped <- prep(rec)
baked <- bake(prepped, new_data = NULL)
names(baked)

step_impute_median()

Eksik değerler, çoğu model motorunun başarısız olmasına neden olur. step_impute_median(all_numeric_predictors()), NA değerlerini eğitim kümesinden hesaplanan ortanca değerle değiştirir. Ortanca değer, ortalama ile eksik değer doldurmaya kıyasla aykırı değerlere daha dayanıklıdır.

Kategorik değişkenler için en sık görülen değerle doldurmak üzere step_impute_mode() kullanın.

rec <- recipe(price ~ ., data = train_data) |>
  step_impute_median(all_numeric_predictors()) |>
  step_impute_mode(all_nominal_predictors())

print(rec)

step_zv() — Sıfır Varyansı Kaldırma

step_zv(all_predictors()), yalnızca tek bir benzersiz değere sahip (sıfır varyanslı) tüm tahmin edicileri kaldırır. Bu tür sütunlar bilgi taşımaz ve bazı model motorlarında hatalara neden olabilir.

Sıfıra yakın varyans için, bir değerin büyük ölçüde baskın olduğu sütunları da kaldıran step_nzv(all_predictors()) işlevini kullanın.

rec <- recipe(price ~ ., data = train_data) |>
  step_impute_median(all_numeric_predictors()) |>
  step_dummy(all_nominal_predictors()) |>
  step_zv(all_predictors()) |>
  step_normalize(all_numeric_predictors())

print(rec)

prep() — Tarifi Eğitme

prep(recipe), adımların gerektirdiği tüm parametreleri — örneğin normalleştirme için ortalama/SD değerlerini ve eksik değer doldurma için ortanca değerleri — eğitim verilerini kullanarak tahmin eder. Sonuç, tüm dönüştürme parametrelerini bilen hazırlanmış bir tariftir.

Test kümesinden veri sızıntısını önlemek için prep işlemini her zaman yalnızca eğitim verileri üzerinde gerçekleştirin.

# Build the full recipe
rec <- recipe(price ~ ., data = train_data) |>
  step_impute_median(all_numeric_predictors()) |>
  step_dummy(all_nominal_predictors()) |>
  step_zv(all_predictors()) |>
  step_normalize(all_numeric_predictors())

# Estimate parameters from training data
prepped_rec <- prep(rec)
print(prepped_rec)

bake() — Yeni Verilere Uygulama

bake(prepped_recipe, new_data = test_data), önceden tahmin edilmiş parametreleri kullanarak tüm ön işleme adımlarını herhangi bir veri kümesine uygular. Bu, eğitim ve test arasındaki dönüşümlerin tutarlı olmasını sağlar.

prep() sırasında kullanılan eğitim verilerine uygulamak için new_data = NULL aktarın.

# Apply recipe to test data
baked_test <- bake(prepped_rec, new_data = test_data)
head(baked_test)

# Apply to training data (same as juice())
baked_train <- bake(prepped_rec, new_data = NULL)
dim(baked_train)

juice() — İşlenmiş Eğitim Verilerini Çıkarma

juice(prepped_recipe), bake(prepped_recipe, new_data = NULL) ile eşdeğer bir yardımcı işlevidir. prep() sırasında kullanılan eğitim verilerinin ön işlenmiş hâlini döndürür.

Not: juice(), bake(prep, new_data = NULL) yerine kullanılması önerilmeyen, kullanımdan kademeli olarak kaldırılan bir işlevdir; ancak eski tidymodels kodlarında bu işleve rastlayabilirsiniz.

# juice() extracts the processed training data
train_processed <- juice(prepped_rec)
glimpse(train_processed)

# Equivalent modern approach
train_modern <- bake(prepped_rec, new_data = NULL)
identical(train_processed, train_modern)  # TRUE

Birden Çok Adımı Birleştirme

Adımlar, eklendikleri sırayla uygulanır. Tipik bir üretim tarifi şu sırayı izler:

  1. Eksik değer doldurma (önce NA değerlerini düzeltin)
  2. Özellik oluşturma (etkileşimler, polinomlar)
  3. Kukla kodlama (factor türlerini dönüştürme)
  4. Sıfır varyanslı değerleri kaldırma
  5. Normalleştirme (en son ölçeklendirin)

Bu sıralama önemlidir — örneğin kukla kodlamadan önce normalleştirme yapmak hatalı sonuçlar üretir.

full_rec <- recipe(sale_price ~ ., data = housing_train) |>
  step_impute_median(all_numeric_predictors()) |>
  step_impute_mode(all_nominal_predictors()) |>
  step_log(sale_price, base = 10) |>
  step_other(all_nominal_predictors(), threshold = 0.05) |>
  step_dummy(all_nominal_predictors()) |>
  step_zv(all_predictors()) |>
  step_normalize(all_numeric_predictors())

print(full_rec)

prep Sonuçlarını İnceleme

prep() çağrısından sonra her adımın ne yaptığını tidy(prepped_rec) kullanarak inceleyebilirsiniz. Her adımın sayısal bir kimliği vardır; tahmin edilen parametreleri görmek için tidy(prepped_rec, number = 1) ile ilgili adımın ayrıntılarına inebilirsiniz.

prepped_rec <- prep(full_rec)

# View all steps and their status
tidy(prepped_rec)

# Inspect normalization parameters (mean, sd per column)
tidy(prepped_rec, number = 5)  # step_normalize is step 5

Uygulamada Tarifler

Tarifler, iş akışlarıyla birleştirildiğinde özellikle kullanışlıdır. prep() ve bake() işlevlerini manuel olarak çağırmak yerine tarifi bir iş akışına eklersiniz; tidymodels, fit() ve predict() sırasında prep/bake işlemlerini otomatik olarak yönetir.

Bu, ön işlemenin eğitim sırasında ve tahmin zamanında farklı uygulanmasından kaynaklanan yaygın bir hata kaynağını ortadan kaldırır.

library(workflows)

# Recipe + model spec combined in a workflow
wf <- workflow() |>
  add_recipe(full_rec) |>
  add_model(linear_reg() |> set_engine('lm'))

# fit() internally calls prep() + bake() on training data
fitted_wf <- fit(wf, data = housing_train)

# predict() applies bake() to new data automatically
predictions <- predict(fitted_wf, new_data = housing_test)
head(predictions)

Kısa Kontrol

tidymodels tarif çerçevesinde prep(recipe) çağrısı ne yapar?

Tariflerin Özeti

Tariflerle Özellik Mühendisliği konusundan temel çıkarımlar:

  • recipe(outcome ~ ., data = train) ön işleme taslağını tanımlar.
  • step_normalize(), step_dummy(), step_impute_median() ve step_zv() en sık kullanılan adımlardır.
  • prep(), parametreleri yalnızca eğitim verilerinden tahmin eder — hiçbir zaman test verilerinden değil.
  • bake(prepped, new_data), eğitilmiş tarifi herhangi bir veri kümesine uygular.
  • Adımların sırası önemlidir: doldur → oluştur → kodla → kaldır → ölçeklendir.
  • Üretimde, fit ve predict sırasında prep/bake işlemlerini otomatikleştirmek için tarifi bir workflow() içine alın.
# Full pipeline in 6 lines
rec <- recipe(target ~ ., data = train) |>
  step_impute_median(all_numeric_predictors()) |>
  step_dummy(all_nominal_predictors()) |>
  step_zv(all_predictors()) |>
  step_normalize(all_numeric_predictors())

prepped <- prep(rec)
train_baked <- bake(prepped, new_data = NULL)
test_baked  <- bake(prepped, new_data = test)

Sıkça Sorulan Sorular

“recipes ile Özellik Mühendisliği” dersi ücretsiz mi?

Evet — “recipes ile Özellik Mühendisliği” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“recipes ile Özellik Mühendisliği” dersinde ne öğreneceğim?

Normalleştirme, kodlama ve eksik değer tamamlama için ön işleme adımları tanımlayın. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“recipes ile Özellik Mühendisliği” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. recipes ile Özellik Mühendisliği
  2. parsnip ile Model Belirtimleri
  3. İş Akışları: Tarifleri ve Modelleri Birleştirme
  4. rsample ile Yeniden Örnekleme ve Çapraz Doğrulama
← R Academy Sayfasına Dön