Mengapa Akurasi Bukan Metrik yang Baik untuk Ketidakseimbangan Data – Menuju AI

Mengapa Akurasi Bukan Metrik yang Baik untuk Ketidakseimbangan Data – Menuju AI

Pengarang: Rafay Qayyum

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

Klasifikasi, Dalam Pembelajaran Mesin, adalah konsep pembelajaran terawasi di mana titik data diklasifikasikan ke dalam kelas yang berbeda. Misalnya, menentukan apakah email adalah “spam” atau “bukan spam” dan menentukan golongan darah pasien.

Klasifikasi Machine Learning umumnya dibagi menjadi tiga kategori:

Klasifikasi Biner Klasifikasi Multi-kelas Klasifikasi Multi-label

Apa itu kelas atau data yang tidak seimbang?

Data yang tidak seimbang mengacu pada masalah di mana distribusi contoh di seluruh kelas yang diketahui bias (Satu kelas memiliki lebih banyak contoh daripada yang lain). Misalnya, Satu kelas mungkin memiliki 10.000 instance sementara kelas lainnya hanya memiliki 100 instance.

Kelas dengan instance mayoritas lebih berat daripada kelas dengan instance minoritas — Google

Ketidakseimbangan Data dapat berkisar dari perbedaan kecil hingga besar dalam jumlah instance kelas. Ketidakseimbangan data kecil seperti 4:1, 10:1, dll., tidak akan banyak merugikan model Anda, tetapi karena ketidakseimbangan data mulai meningkat menjadi 1000:1 dan 5000: hal itu dapat menimbulkan masalah bagi model pembelajaran mesin Anda.

Kelas (atau kelas) dalam masalah klasifikasi tidak seimbang yang memiliki banyak contoh dikenal sebagai Kelas Mayoritas.

Kelas (atau kelas) dalam masalah klasifikasi tidak seimbang yang memiliki beberapa contoh dikenal sebagai Kelas Minoritas.

Mengapa Kelas yang Tidak Seimbang dapat menyebabkan masalah?

Saat bekerja dengan data yang tidak seimbang, kelas minoritas adalah minat kami hampir sepanjang waktu. Seperti saat mendeteksi email “spam”, jumlahnya cukup banyak dibandingkan dengan email “bukan spam”. Jadi, algoritma pembelajaran mesin menyukai kelas yang lebih besar dan terkadang bahkan mengabaikan kelas yang lebih kecil jika datanya sangat tidak seimbang.

Algoritme pembelajaran mesin dirancang untuk belajar dari data pelatihan untuk meminimalkan kehilangan dan memaksimalkan akurasi. Mari kita lihat bagaimana algoritma pembelajaran mesin bekerja dengan data yang sangat tidak seimbang.

Sebuah contoh

Pertimbangkan contoh ini di mana ada 100 instance Kelas “A” dan 9900 instance Kelas “B”.

x, y = make_classification(n_samples=10000, weights=[0.99]flip_y=0)

Plot jumlah dataset dapat dibuat dengan perpustakaan seaborn

np.unique(y,return_counts=Benar)
y=np.di mana(y==0,’A’,’B’)
sns.countplot(x=y)
menghitung plot dari dataset. xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.20, random_state=42)
print(np.unique(ytrain,return_counts=True))
print(np.unique(ytest,return_counts=True))

Setelah membagi dataset menjadi data pelatihan dan pengujian menggunakan train_test_split dengan ukuran pengujian 20%, kita memiliki 7919 contoh pelatihan untuk Kelas “A” dan 81 contoh pelatihan untuk Kelas “B”. Contoh pengujian adalah 1981 untuk Kelas “A” dan 19 untuk Kelas “B”.

Mari kita latih dulu model Regresi Logistik dengan data pelatihan kita.

lr=Regresi Logistik()
lr.fit(xtrain,ytrain)
lr.score(xtest,ytest)

Sekarang, jika kita memeriksa keakuratan model menggunakan metode penilaian, itu adalah 0,992. Akurasi 99,2%? Performanya bagus, kan? Mari kita periksa matriks kebingungan.

pred_lr=lr.predict(xtest)
print(confusion_matrix(ytest,pred_lr))
Matriks kebingungan untuk Regresi Logistik

Meskipun Kelas “A” memiliki akurasi 100%, hanya 3 dari 19 contoh uji yang diklasifikasikan dengan benar. Itu pasti salah, kan?

Mari gunakan Random Forest Classifier pada dataset yang sama dan periksa apa yang terjadi.

rfc=RandomForestClassifier()
rfc.fit(xtrain,ytrain)
rfc.score(xtest,ytest)

Skor akurasinya adalah 0,991 kali ini, tapi apa yang kita pelajari terakhir kali? Hasil nyata bersembunyi di balik akurasi. Mari kita periksa matriks kebingungan untuk Prediksi Random Forest Classifier.

pred_rfc=rfc.predict(xtest)
print(confusion_matrix(ytest,pred_rfc))
Matriks kebingungan untuk Pengklasifikasi Hutan Acak

Hanya 1 dari contoh pengujian 1981 untuk Kelas “A” yang diklasifikasikan salah, tetapi hanya 2 dari 19 contoh pengujian untuk Kelas “B” yang diklasifikasikan dengan benar.

Apa yang dilakukan model pembelajaran mesin kami di sini?

Seperti yang telah kita bahas sebelumnya, model machine learning mencoba memaksimalkan akurasi, itulah yang terjadi di sini. Karena instance Kelas “A” membentuk 99% dari data, model pembelajaran mesin belajar mengklasifikasikannya dengan benar dan mengabaikan atau tidak belajar banyak tentang Kelas “B” karena mengklasifikasikan semua data ke kelas “A” akan mendapatkannya akurasi 99%.

Anda dapat mencocokkan keakuratan model ini hanya dengan menulis 1 pernyataan dengan python. Terkejut?

sebelum =[‘A’]*hanya(ytest)

Pernyataan ini membuat daftar dengan panjang 2000 (karena total data pengujian adalah 2000 atau 20% untuk 10000) dan mengisinya dengan “A”. Karena 99% sampelnya hanya kelas A, jadi kami mendapatkan akurasi 99% menggunakan skor akurasi.

akurasi_score(ytest,pred)
Matriks kebingungan untuk daftar “pred”

Bagaimana Anda bisa menangani dataset yang tidak seimbang?

Ada banyak cara untuk menangani kumpulan data yang tidak seimbang. Beberapa mengharuskan Anda untuk memiliki pengetahuan lapangan yang lain menggunakan algoritme yang berbeda untuk meningkatkan instance kelas minoritas (Over-sampling) dan untuk mengurangi instance kelas mayoritas (Under-sampling).

Melalui pengetahuan lapangan, Anda dapat membagi kelas mayoritas menjadi lebih dari satu kelas, atau Anda dapat menggabungkan kelas minoritas yang berbeda untuk membuat satu kelas dengan lebih banyak instance. Imbalanced-learn adalah library python yang memiliki metode berbeda untuk under-sampling dan over-sampling. Cara lain adalah dengan menetapkan bobot untuk kelas yang berbeda saat membuat objek model pembelajaran mesin. Periksa cara kerja class_weights di StackOverflow. Beberapa metode over-sampling dalam Imbalanced-learn adalah SMOTE, RandomOverSampler, BorderlineSMOTE, KMeansSMOTE, dan ADASYN. Beberapa metode under-sampling dalam Imbalanced-learn adalah ClusterCentroids, CondensedNearestNeighbour, EditedNearestNeighbours, NearMiss, OneSidedSelection, RandomUnderSampler, TomekLinks, dan NeighbourhoodCleaningRule

Mengapa Akurasi Bukan Metrik yang Baik Untuk Ketidakseimbangan Data awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Jeffrey Hayes