0Pricing
Learn AI with Python · Pelajaran

Pengodean Target dan Penanganan Kategorikal Lanjutan

Pengodean target, pengodean frekuensi, pengodean biner, dan embedding untuk kolom berkardinalitas tinggi.

Pengodean Target dan Penanganan Kategorikal Lanjutan adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.

Masalah Pengodean Kategorikal

Model memerlukan angka, sedangkan kategori berupa teks. Pengodean satu-hot berfungsi untuk sedikit kategori, tetapi fitur dengan kardinalitas tinggi (ribuan kota atau produk) menghasilkan terlalu banyak kolom.

Keterbatasan Pengodean Satu-Hot dan Label

Pengodean satu-hot menyebabkan dimensionalitas meledak. Pengodean label biasa menciptakan urutan yang keliru (kota 5 tidak lebih besar daripada kota 2). Untuk data dengan kardinalitas tinggi, kita memerlukan pengodean yang lebih cerdas.

Apa Itu Pengodean Target

Pengodean target mengganti setiap kategori dengan rata-rata target untuk kategori tersebut. Sebuah kota menjadi tingkat rata-rata pelanggan yang berhenti berlangganan di kota itu, yaitu satu angka yang informatif.

import pandas as pd

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

Bahaya Pemodelan Berlebihan

Kategori yang jarang muncul dan hanya memiliki sedikit baris mendapatkan nilai rata-rata ekstrem yang membocorkan target dan menyebabkan pemodelan berlebihan. Kategori yang hanya muncul sekali akan menyalin label tunggal tersebut secara persis. Kita memperbaikinya dengan penghalusan.

Menghaluskan Estimasi

Penghalusan memadukan rata-rata kategori dengan rata-rata global, dengan bobot berdasarkan jumlah sampel dalam kategori tersebut. Kategori yang jarang muncul lebih condong ke rata-rata global sehingga varians berkurang.

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"])

Pustaka category_encoders

Paket category_encoders mengimplementasikan pengode ini dengan API scikit-learn, sehingga dapat dimasukkan ke dalam alur pemrosesan dan diterapkan secara konsisten pada data pelatihan serta data pengujian.

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)

Menghindari Kebocoran dalam Praktik

Selalu latih pengode hanya pada data pelatihan, lalu lakukan transformasi pada data validasi/pengujian. Lebih baik lagi, gunakan validasi silang atau pengodean di luar lipatan agar setiap baris dikodekan menggunakan data yang tidak menyertakan baris tersebut.

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

Pengodean Biner

BinaryEncoder mengubah kategori menjadi digit biner dengan hanya menggunakan kolom log2(N), bukan N kolom. Ini merupakan pilihan ringkas di antara pengodean satu-hot dan pengodean target.

import category_encoders as ce

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

Pengode Lain yang Berguna

category_encoders juga menyediakan CountEncoder (frekuensi setiap kategori), LeaveOneOutEncoder (rata-rata target tanpa menyertakan baris saat ini), dan CatBoostEncoder (statistik target berurutan).

import category_encoders as ce

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

Menangani Kardinalitas Tinggi

Untuk kardinalitas yang sangat tinggi: pengodean target/count memadatkan data menjadi satu kolom, pengodean biner tetap ringkas, dan pengelompokan kategori yang jarang muncul ke dalam kelompok "lainnya" mengurangi derau. Pilih berdasarkan kardinalitas dan risiko kebocoran.

import pandas as pd

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

Memilih Pengode

Beberapa kategori: pengodean satu-hot. Model pohon dengan banyak kategori: pengodean target atau CatBoost. Membutuhkan keringkasan: pengodean biner. Selalu cegah kebocoran dengan melatih hanya pada data pelatihan dan menggunakan penghalusan atau skema di luar lipatan.

Pemeriksaan Singkat

Uji pengetahuan Anda tentang pengodean kategorikal.

Rangkuman

Rangkuman: Pengodean target mengganti kategori dengan rata-rata targetnya, menggunakan penghalusan untuk mengendalikan kategori yang jarang muncul. Gunakan category_encoders (TargetEncoder, BinaryEncoder, CatBoost/LeaveOneOut) dan latih hanya pada data pelatihan atau gunakan metode di luar lipatan untuk menghindari kebocoran. Pengode ringkas menangani fitur berkardinalitas tinggi yang tidak dapat ditangani oleh pengodean satu-hot.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengodean Target dan Penanganan Kategorikal Lanjutan” gratis?

Ya — teks lengkap “Pengodean Target dan Penanganan Kategorikal Lanjutan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pengodean Target dan Penanganan Kategorikal Lanjutan”?

Pengodean target, pengodean frekuensi, pengodean biner, dan embedding untuk kolom berkardinalitas tinggi. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn AI with Python?

Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pengodean Target dan Penanganan Kategorikal Lanjutan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?

Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Metode Seleksi Fitur
  2. Membuat Fitur Interaksi dan Polinomial
  3. Pengodean Target dan Penanganan Kategorikal Lanjutan
  4. Rekayasa Fitur Otomatis dengan Featuretools
← Kembali ke Learn AI with Python