0Pricing
Learn AI with Python · Ders

Hedef Kodlama ve Gelişmiş Kategorik Veri İşleme

Yüksek kardinaliteli sütunlar için hedef kodlama, sıklık kodlama, ikili kodlama ve gömme vektörleri.

Hedef Kodlama ve Gelişmiş Kategorik Veri İşleme, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 3. 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, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.

Kategorik Kodlama Sorunu

Modeller sayılara ihtiyaç duyar, kategoriler ise metindir. Tek-sıcak kodlama az sayıda kategori için işe yarar; ancak yüksek kardinaliteli özellikler (binlerce şehir, ürün) çok fazla sütun oluşturur.

Tek-Sıcak ve Etiket Kodlamanın Sınırları

Tek-sıcak kodlama boyutluluğu aşırı artırır. Sıradan etiket kodlama yanlış bir sıralama uydurur (5 numaralı şehir 2 numaralı şehirden büyük değildir). Yüksek kardinaliteli veriler için daha akıllı kodlamalara ihtiyacımız vardır.

Hedef Kodlama Nedir

Hedef kodlama, her kategoriyi o kategori için hedefin ortalamasıyla değiştirir. Bir şehir, o şehirdeki müşterilerin ortalama müşteri kaybı oranına, yani bilgilendirici tek bir sayıya dönüşür.

import pandas as pd

means = df.groupby("city")["target"].mean()
df["city_encoded"] = df["city"].map(means)

Aşırı Öğrenme Tehlikesi

Az satıra sahip nadir kategoriler, hedefi sızdıran ve aşırı öğrenmeye yol açan uç ortalamalar elde eder. Yalnızca bir kez görülen bir kategori, o tek etiketi aynen kopyalar. Bunu yumuşatmayla düzeltiriz.

Tahmini Yumuşatma

Yumuşatma, kategori ortalamasını, kategorideki örnek sayısına göre ağırlıklandırarak genel ortalamayla harmanlar. Nadir kategoriler genel ortalamaya yaklaşır ve varyansı azaltır.

import pandas as pd

global_mean = df["target"].mean()
agg = df.groupby("city")["target"].agg(["mean", "count"])
smoothing = 10
agg["enc"] = (agg["count"] * agg["mean"] + smoothing * global_mean) / (agg["count"] + smoothing)
df["city_enc"] = df["city"].map(agg["enc"])

category_encoders Kitaplığı

category_encoders paketi, bu kodlayıcıları scikit-learn API'siyle uygular; böylece işlem hatlarına kolayca eklenir ve eğitim ile sınama kümelerine tutarlı biçimde uygulanır.

import category_encoders as ce

encoder = ce.TargetEncoder(cols=["city", "product"], smoothing=10)
X_enc = encoder.fit_transform(X_train, y_train)
X_test_enc = encoder.transform(X_test)

Uygulamada Veri Sızıntısından Kaçınma

Kodlayıcıyı her zaman yalnızca eğitim verileri üzerinde eğitin, ardından doğrulama/sınama verilerini dönüştürün. Daha da iyisi, çapraz doğrulama veya kat dışı kodlama kullanarak her satırın, kendisini içermeyen verilerle kodlanmasını sağlayın.

import category_encoders as ce
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression

pipe = make_pipeline(
    ce.TargetEncoder(cols=["city"]),
    LogisticRegression(),
)
# fit inside CV to encode without leakage

İkili Kodlama

BinaryEncoder, kategorileri ikili basamaklara dönüştürür ve N sütun yerine yalnızca log2(N) sütun kullanır. Tek etkin kodlama ile hedef kodlama arasında, alan tasarrufu sağlayan bir orta yoldur.

import category_encoders as ce

encoder = ce.BinaryEncoder(cols=["product_id"])
X_enc = encoder.fit_transform(X_train)
# 256 categories -> 8 binary columns

Diğer Yararlı Kodlayıcılar

category_encoders ayrıca CountEncoder (her kategorinin sıklığı), LeaveOneOutEncoder (geçerli satır hariç hedef ortalaması) ve CatBoostEncoder (sıralı hedef istatistikleri) seçeneklerini sunar.

import category_encoders as ce

count_enc = ce.CountEncoder(cols=["city"])
loo_enc = ce.LeaveOneOutEncoder(cols=["city"])

Yüksek Kardinaliteyi Ele Alma

Çok yüksek kardinalite için hedef/sıklık kodlama verileri tek sütuna sıkıştırır, ikili kodlama küçük kalır ve nadir kategorileri bir "diğer" grubunda birleştirmek gürültüyü azaltır. Seçiminizi kardinaliteye ve sızıntı riskine göre yapın.

import pandas as pd

freq = df["product"].value_counts()
rare = freq[freq < 20].index
df["product"] = df["product"].replace(rare, "other")

Kodlayıcı Seçme

Az sayıda kategori: tek etkin kodlama. Çok kategorili ağaç modelleri: hedef veya CatBoost kodlama. Alan tasarrufu gerekiyorsa: ikili kodlama. Yalnızca eğitim verileri üzerinde fit ederek ve yumuşatma ya da kat dışı şemalar kullanarak sızıntıya karşı her zaman önlem alın.

Hızlı Kontrol

Kategorik kodlama bilginizi sınayın.

Özet

Özet: Hedef kodlama, bir kategoriyi hedef ortalamasıyla değiştirir ve nadir kategorilerin etkisini azaltmak için yumuşatma kullanır. Sızıntıyı önlemek için category_encoders (TargetEncoder, BinaryEncoder, CatBoost/LeaveOneOut) kullanın ve yalnızca eğitim verileri üzerinde ya da kat dışı biçimde fit edin. Alan tasarrufu sağlayan kodlayıcılar, tek etkin kodlamanın başa çıkamadığı yüksek kardinaliteli özellikleri işler.

Sıkça Sorulan Sorular

“Hedef Kodlama ve Gelişmiş Kategorik Veri İşleme” dersi ücretsiz mi?

Evet — “Hedef Kodlama ve Gelişmiş Kategorik Veri İşleme” 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 Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.

“Hedef Kodlama ve Gelişmiş Kategorik Veri İşleme” dersinde ne öğreneceğim?

Yüksek kardinaliteli sütunlar için hedef kodlama, sıklık kodlama, ikili kodlama ve gömme vektörleri. Learn AI with Python 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.

Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, 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 3. dersidir.

“Hedef Kodlama ve Gelişmiş Kategorik Veri İşleme” 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 Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn AI with Python 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. Özellik Seçme Yöntemleri
  2. Etkileşimli ve Polinom Özellikler Oluşturma
  3. Hedef Kodlama ve Gelişmiş Kategorik Veri İşleme
  4. Featuretools ile Otomatik Özellik Mühendisliği
← Learn AI with Python Sayfasına Dön