Effective Categorical Variable Encoding for Machine Learning – Towards AI

Effective Categorical Variable Encoding for Machine Learning – Towards AI

Author(s): Filipe Filardi

Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda membuat produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.

Gambar oleh DCStudio di Freepik

Variabel kategori adalah jenis data umum yang ditemukan di banyak kumpulan data pembelajaran mesin. Penanganan variabel kategori yang efektif dapat menjadi sangat penting untuk membangun model yang sukses karena berisi banyak informasi yang dapat digunakan untuk memprediksi hasil dalam Pembelajaran Mesin.

Namun, bekerja dengan variabel kategori dapat menjadi tantangan, karena banyak model dirancang untuk menangani data numerik. Akibatnya, beberapa orang mungkin memerlukan klarifikasi tentang pemrosesan data kategorikal dengan benar, yang menyebabkan kebingungan dan potensi kinerja model yang kurang optimal.

Artikel ini bertujuan untuk memberikan ikhtisar yang jelas dan komprehensif tentang pendekatan paling populer untuk menangani data kategorikal dalam Pembelajaran Mesin. Dengan memahami berbagai opsi yang tersedia dan implikasinya, saya berharap dapat memberi pembaca pengetahuan dan alat yang mereka butuhkan untuk menangani data kategorikal dalam proyek Pembelajaran Mesin mereka.

Data Kategorikal dalam Pembelajaran Mesin

Data kategorikal terdiri dari data yang dapat diklasifikasikan ke dalam kategori. Dalam pembelajaran mesin, adalah umum untuk menemukan data kategorikal dari variabel seperti jenis kelamin, ras, kebangsaan, genre, atau pekerjaan. Data kategorikal sering kali ada dalam kumpulan data dunia nyata, dan sangat penting untuk menanganinya dengan benar.

Salah satu tantangan utama dalam bekerja dengan data kategorikal adalah sebagian besar algoritme pembelajaran mesin dirancang untuk bekerja dengan data numerik. Ini berarti bahwa data kategorik harus diubah menjadi format numerik untuk digunakan sebagai input model.

Berurusan dengan data kategorikal

Bagian ini akan mengeksplorasi beberapa metode populer untuk menangani data kategorikal dalam pembelajaran mesin.

Apa itu “Mengganti Angka”?

Mengganti angka mengacu pada proses mengganti variabel kategori dengan nilai numerik.

Misalnya, melanjutkan contoh di atas, jika kita mengganti variabel kategorikal dengan nilai numerik, kita akan mendapatkan yang berikut:

Contoh Mengganti | Gambar oleh Penulis

Berikut kode python menggunakan replace dalam bingkai data Pandas sebagai referensi:

df.replace({‘rock’: 0, ‘jazz’: 1, ‘blues’: 2})

Apa itu “Encoder Label”?

Label Encoder adalah metode lain untuk mengkodekan variabel kategori. Ini memberikan nilai numerik unik untuk setiap kategori dalam variabel kategori.

Menggunakan Label Encoder pada contoh sebelumnya akan menghasilkan nilai yang sama dengan penggantian. Sementara penggantian mungkin merupakan pendekatan yang cocok untuk sejumlah kecil kategori, ini bisa menjadi tidak praktis ketika berhadapan dengan banyak kategori.

Contoh Label Encoder | Gambar oleh Penulis

Berikut kode Python menggunakan Label Encoder:

dari pemrosesan awal impor sklearn

le = preprocessing.LabelEncoder()
dan .fit ( df[‘genres’])

df[‘genres’] = dalam .transform ( df[‘genres’])

Apa yang mengubah menjadi “variabel dummy”?

Ini adalah proses pembuatan kolom biner baru untuk setiap kategori dalam variabel kategori, dengan 0 atau 1 yang menunjukkan ada tidaknya kategori tersebut, seperti:

Contoh Boneka | Gambar oleh Penulis

Ada dua cara untuk melakukannya. Yang pertama menggunakan get_dummies() dari pustaka Pandas:

impor panda sebagai pd

X_encoded = pd.get_dummies(df, kolom=[‘genres’])

Yang lainnya menggunakan OneHotEncoder() dari Scikit-learn (sklearn):

dari sklearn.preprocessing impor OneHotEncoder

enc = OneHotEncoder()
enc.fit(df)

X_encoded = enc.transform(df).toarray()

Dummifying dan One Hot Encoding pada dasarnya adalah hal yang sama. Perbedaan utamanya adalah bahwa “dummify” adalah istilah yang lebih umum, dan “One Hot encoding” adalah istilah teknis yang digunakan dalam literatur pembelajaran mesin.

Mengapa Dummies Lebih Disukai daripada solusi lain?

Ada beberapa alasan mengapa Dummies umumnya lebih disukai daripada metode pengkodean lainnya:

Menghindari hubungan ordinal tersirat dan mencegah bias

Dummies membuat kolom terpisah untuk setiap kategori, memungkinkan model mempelajari hubungan antara masing-masing kategori dan variabel target. Mengganti nomor dan label encoder, di sisi lain, menyiratkan hubungan ordinal antara kategori dan tidak membuat kolom terpisah untuk setiap kategori, yang dapat menyebabkan hasil yang menyesatkan jika kategori tidak memiliki urutan yang melekat.

Misalnya, Anda mengganti “rock” dengan 1, “jazz” dengan 2, dan “blues” dengan 3 di kumpulan data Anda. Dalam hal ini, model Anda mungkin berasumsi bahwa “jazz” dua kali lebih penting daripada “rock” dan “blues” tiga kali lebih penting daripada “rock”. Ini dapat menimbulkan bias ke dalam model, karena membuat asumsi tentang urutan di mana Anda menetapkan angka.

Dummies memungkinkan model mempelajari hubungan yang lebih kompleks

Karena membuat kolom terpisah untuk setiap kategori, model dapat mempelajari hubungan yang lebih kompleks antara kategori dan variabel target.

Di sisi lain, pembuat enkode lain yang disebutkan hanya mengizinkan model untuk mempelajari keseluruhan hubungan antara nilai numerik dan variabel target, yang mungkin tidak menangkap seluruh kompleksitas data.

Kapan Harus Menghindari Boneka

Ada situasi tertentu di mana Dummies mungkin bukan pendekatan terbaik. Inilah yang paling penting:

Kardinalitas tinggi: One Hot Encoding membuat kolom terpisah untuk setiap kategori dalam variabel kategori. Ini dapat menyebabkan tingginya jumlah kolom, terutama jika variabel kategori memiliki banyak nilai unik. Dalam kasus seperti itu, One Hot Encoding dapat menghasilkan kumpulan data yang jarang dan berat, yang dapat menjadi tantangan untuk dikerjakan. Kendala memori: One Hot Encoding juga bisa bermasalah jika kumpulan datanya besar dan membutuhkan banyak memori untuk disimpan. Kumpulan data yang dihasilkan dapat memakan banyak ruang, yang mungkin tidak dapat dilakukan jika memori terbatas. Multikolinearitas: Terjadi ketika terdapat korelasi yang tinggi antara variabel dummy, yang dapat menyebabkan koefisien dalam model menjadi tidak stabil dan sulit untuk diinterpretasikan. Variabel boneka secara alami berkorelasi karena dibuat dari variabel kategori yang sama.

Dalam situasi ini, metode pengkodean alternatif, seperti penyandi label atau pengkodean target, mungkin lebih tepat, yang dapat menangani kardinalitas tinggi dengan lebih efisien.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang multikolinearitas dan pengkodean target, ada banyak sumber lain yang tersedia. Anda mungkin ingin melihat artikel berikut:

Waspadalah terhadap jebakan variabel Dummy di panda

Artikel ini membahas masalah multikolinearitas secara mendetail dan memberikan tips tentang cara menanganinya lebih jauh ke dalam parameter fungsi OneHotEncoder() dan to_dummy() .

Variabel Kategori Pengkodean Target

Artikel ini secara komprehensif menganalisis pengkodean target untuk memecahkan masalah dimensi.

Saya harap artikel ini telah membantu Anda membangun kepercayaan diri saat memutuskan cara menangani variabel kategorikal dalam kumpulan data Anda dan saat mempertimbangkan untuk keluar dari zona nyaman enkode one-hot Anda.

Sangat penting untuk mempertimbangkan dengan hati-hati karakteristik data dan persyaratan model saat memutuskan metode pengkodean mana yang akan digunakan. Dua artikel yang dirujuk dalam posting ini adalah referensi yang sangat baik. Periksa mereka!

Jika Anda tertarik untuk membaca artikel lain yang ditulis oleh saya. Lihat repo saya dengan semua artikel yang telah saya tulis sejauh ini, dipisahkan berdasarkan kategori.

Terima kasih sudah membaca

Pengodean Variabel Kategorikal yang Efektif untuk Pembelajaran Mesin awalnya diterbitkan di Towards AI on Medium, di mana orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Jonathan Kelly