Feature Encoding untuk Machine Learning: Teknik One-Hot, Label Encoding, dan Target Encoding

Lhuqita Fazry
Data Science Machine Learning Feature Engineering
Feature Encoding untuk Machine Learning: Teknik One-Hot, Label Encoding, dan Target Encoding

Algoritma machine learning memerlukan input dalam bentuk numerik. Namun, dataset dunia nyata sering kali mengandung fitur kategorikal seperti nama kota, jenis kelamin, atau kode produk. Feature encoding adalah proses mengubah fitur-fitur tersebut menjadi representasi numerik agar model dapat memprosesnya secara efektif. Pemilihan teknik encoding yang salah dapat menurunkan performa model atau bahkan menghasilkan interpretasi yang bias.

Sebelum memilih metode encoding, kita harus memahami jenis data kategorikal yang dimiliki. Variabel kategorikal nominal tidak memiliki urutan inheren. Contohnya adalah warna mobil atau metode pembayaran. Variabel kategorikal ordinal memiliki tingkatan yang jelas, seperti tingkat kepuasan pelanggan atau level pendidikan. Kesalahan mengidentifikasi tipe data akan berakibat fatal pada hasil model. Domain knowledge sangat membantu dalam menentukan apakah suatu fitur bersifat nominal atau ordinal.

Mengapa Feature Encoding Diperlukan

Mayoritas algoritma machine learning tidak dapat bekerja langsung dengan data string atau kategori. Model seperti Linear Regression, Support Vector Machine, dan Neural Network membutuhkan input berupa angka. Bahkan algoritma berbasis tree seperti Random Forest dan XGBoost, meskipun lebih toleran terhadap data kategorikal, sering kali memperoleh performa lebih baik setelah encoding yang tepat.

Selain kompatibilitas algoritma, feature encoding juga memengaruhi bagaimana model memahami hubungan antar kategori. Beberapa teknik mengasumsikan ordinalitas, sementara yang lain memperlakukan setiap kategori sebagai entitas independen. Memahami karakteristik data adalah langkah pertama sebelum memilih metode encoding.

Tanpa encoding yang tepat, model dapat menangkap pola palsu atau mengabaikan informasi penting dari fitur kategorikal. Konsekuensinya, metrik evaluasi menjadi tidak reliabel dan model gagal generalisasi pada data produksi. Oleh karena itu, feature encoding bukan sekadar preprocessing step. Teknik ini merupakan bagian integral dari feature engineering yang berdampak langsung pada akurasi prediksi.

Label Encoding

Label Encoding mengubah setiap kategori unik menjadi nilai integer. Teknik ini cocok untuk variabel kategorikal yang memiliki urutan atau tingkatan, seperti rendah, sedang, tinggi, atau tingkat pendidikan.

Kita harus berhati-hati saat menerapkan Label Encoding pada data nominal. Model dapat menafsirkan nilai integer sebagai hubungan matematis. Angka 2 tidak selalu berarti dua kali lebih besar dari angka 1 dalam konteks kategori. Jika kita memberikan label 0, 1, dan 2 pada warna merah, hijau, dan biru, model dapat menyimpulkan bahwa biru lebih besar dari merah secara matematis.

pythonpython
!pip install scikit-learn

from sklearn.preprocessing import LabelEncoder
import pandas as pd

df = pd.DataFrame({'tingkat': ['rendah', 'sedang', 'tinggi', 'rendah']})
encoder = LabelEncoder()
df['tingkat_encoded'] = encoder.fit_transform(df['tingkat'])

print(df)

Output:

text
   tingkat  tingkat_encoded
0   rendah                0
1   sedang                1
2   tinggi                2
3   rendah                0

Output kode di atas menghasilkan mapping kategori ke integer. Kita dapat menggunakan classes_ untuk melihat urutan label yang dipelajari oleh encoder. Method inverse_transform memungkinkan kita mengembalikan nilai integer ke label asli saat interpretasi hasil prediksi. Untuk data ordinal yang memiliki urutan spesifik, pertimbangkan menggunakan OrdinalEncoder dengan categories parameter agar mapping sesuai dengan hierarki bisnis.

Data Science with Python
Data Science • Beginner

Data Science with Python

Master the art of data analysis, visualization, and predictive modeling.

Project: E-commerce Sales Dashboard

Daftar

One-Hot Encoding

One-Hot Encoding membuat kolom biner baru untuk setiap kategori unik. Setiap kolom hanya berisi nilai 0 atau 1. Teknik ini sangat cocok untuk variabel nominal tanpa urutan, seperti warna atau tipe pembayaran.

Keuntungan utama One-Hot Encoding adalah eliminasi asumsi ordinalitas. Model tidak akan menganggap satu kategori lebih tinggi dari yang lain. Namun, teknik ini meningkatkan dimensi dataset secara signifikan ketika jumlah kategori sangat besar. Fitur dengan ribuan kategori unik dapat menghasilkan sparse matrix yang membebani memori dan waktu training.

pythonpython
!pip install scikit-learn

import pandas as pd
from sklearn.preprocessing import OneHotEncoder

df = pd.DataFrame({'kota': ['Jakarta', 'Bandung', 'Surabaya', 'Jakarta']})
encoder = OneHotEncoder(sparse_output=False)
encoded = encoder.fit_transform(df[['kota']])

df_encoded = pd.DataFrame(
    encoded,
    columns=encoder.get_feature_names_out(['kota'])
)
print(df_encoded)

Output:

text
   kota_Bandung  kota_Jakarta  kota_Surabaya
0           0.0           1.0            0.0
1           1.0           0.0            0.0
2           0.0           0.0            1.0
3           0.0           1.0            0.0

Kita perlu memperhatikan masalah multicollinearity dalam konteks regresi linear. Menyertakan semua kolom dummy dapat menyebabkan perfect multicollinearity. Menggunakan parameter drop='first' pada OneHotEncoder adalah solusi umum untuk mengatasi hal ini. Alternatif lain, library pandas menyediakan get_dummies yang lebih ringkas untuk eksplorasi cepat.

Target Encoding

Target Encoding mengganti setiap kategori dengan nilai rata-rata target variable untuk kategori tersebut. Teknik ini sangat efektif untuk dataset dengan cardinality tinggi, seperti ID produk atau nama merek.

Proses encoding ini memanfaatkan informasi dari target variable. Oleh karena itu, Target Encoding harus selalu dilakukan dengan validasi silang yang ketat untuk mencegah data leakage. Tanpa perlindungan yang memadai, model akan overfit pada training set. Mean yang dihitung harus berasal exclusively dari fold training, bukan dari seluruh dataset.

pythonpython
!pip install category_encoders

import pandas as pd
from category_encoders import TargetEncoder

df = pd.DataFrame({
    'merek': ['A', 'B', 'A', 'C', 'B', 'C'],
    'terjual': [1, 0, 1, 1, 0, 0]
})
encoder = TargetEncoder(cols=['merek'])
df['merek_encoded'] = encoder.fit_transform(df['merek'], df['terjual'])

print(df[['merek', 'merek_encoded']].drop_duplicates())

Output:

text
  merek  merek_encoded
0     A       0.570926
1     B       0.429074
3     C       0.500000

Kita menggunakan smoothing parameter untuk menangani kategori dengan frekuensi rendah. Smoothing membantu menstabilkan estimasi mean dengan menggabungkan mean kategori lokal dan mean global dataset. Semakin tinggi nilai smoothing, semakin dominan pengaruh mean global terhadap encoding hasil.

Memilih Teknik yang Tepat

Pemilihan teknik encoding bergantung pada tiga faktor utama: tipe kategorikal data, jumlah kategori unik, dan algoritma yang digunakan. Label Encoding sesuai untuk data ordinal dengan sedikit kategori. One-Hot Encoding ideal untuk nominal dengan cardinality rendah sampai sedang. Target Encoding menjadi pilihan untuk high-cardinality features dalam model berbasis tree atau neural network.

Selalu evaluasi dampak setiap teknik terhadap performa model menggunakan cross-validation. Tidak ada satu metode yang selalu unggul dalam setiap situasi. Benchmarking beberapa teknik dalam pipeline yang sama adalah praktik terbaik untuk menemukan pendekatan optimal.

Catatan Praktis dan Rekomendasi

Feature encoding sering kali menjadi bottleneck dalam pipeline data preparation. Kita perlu menyimpan mapping encoder agar dapat menerapkan transformasi yang identik pada data inference. Library seperti scikit-learn menyediakan method save dan joblib untuk persistensi objek encoder.

Pastikan untuk menangani unseen categories pada data testing. OneHotEncoder pada scikit-learn versi terbaru sudah mendukung parameter handle_unknown='ignore'. Untuk Target Encoding, kita dapat mengganti kategori yang tidak dikenal dengan mean global dari training set. Tanpa mekanisme ini, pipeline inference akan gagal ketika menemui nilai baru.

Jika ingin mendalami pipeline data preparation hingga deployment model machine learning, kelas Data Science Bootcamp di Rumah Coding memberikan kurikulum lengkap dengan studi kasus industri. Daftar sekarang dan mulai bangun portfolio data science yang kompetitif.

Course Terkait

E-commerce Sales Dashboard
Premium Course
Premium Course Data Science

Data Science with Python

Master the art of data analysis, visualization, and predictive modeling.

Capstone Project

E-commerce Sales Dashboard

  • Data Cleaning Pipeline
  • Interactive Charts
  • Sales Forecasting Model
7 Weeks Beginner
Lihat Detail Course
GreenGuard: Intelligent Plant Disease Diagnosis Web App
Premium Course
Premium Course Machine Learning

Deep Learning Bootcamp

A beginner-friendly, highly interactive bootcamp designed to take you from foundational concepts to deploying real-world Artificial Intelligence applications. Through a completely project-based approach, you will master the core of Deep Learning, Artificial Neural Networks, and Computer Vision using Python and TensorFlow, ultimately building a professional-grade AI web application for your portfolio.

Capstone Project

GreenGuard: Intelligent Plant Disease Diagnosis Web App

  • Interactive Image Upload UI: A clean, user-friendly interface built with Streamlit that supports drag-and-drop image uploads directly from a computer or mobile phone.
  • Real-Time AI Inference: Utilizes a lightweight, optimized CNN model (like MobileNetV2) to process the image and return a diagnosis in seconds without heavy server load.
  • Confidence Scoring Dashboard: Visually displays the model's prediction probability (e.g., "95% confident this is Tomato Late Blight") using interactive progress bars or charts.
7 Weeks Intermediate
Lihat Detail Course
Domain-Specific AI Knowledge Assistant
Premium Course
Premium Course Machine Learning

LLM Bootcamp

This project-based bootcamp is designed for beginners to dive practically into the world of Large Language Models (LLMs). Through hands-on building, you will learn how to interact with top-tier AI APIs, master prompt engineering, orchestrate complex workflows using LangChain, and implement Retrieval-Augmented Generation (RAG) to query your own documents. By the end of this course, you will have the skills to build, test, and deploy a fully functional, custom AI web application.

Capstone Project

Domain-Specific AI Knowledge Assistant

  • Dynamic Document Processing: A sidebar interface allowing users to upload new PDF or TXT files, which the app automatically chunks, embeds, and stores in the vector database.
  • Context-Aware Chat UI: A modern chat interface built with Streamlit that maintains conversation history, allowing users to ask follow-up questions naturally.
  • Strict Guardrails (Anti-Hallucination): System instructions designed so the AI politely declines to answer questions that fall outside the context of the uploaded documents.
7 Weeks Beginner
Lihat Detail Course

Artikel Terkait