Makine Öğreniminde Gizemli Karmaşa Matrisi [Şaşırtıcı]
Yayınlanan: 2020-12-07Makine Öğrenimi, altında Veri işlemeyi biriktirdiği, Verilerden anlamlı içgörüler elde ettiği ve Veri modellemesini içeren bir şemsiye terimdir. Veri modelleme ile yapıldıktan sonra, modelin performans değerlendirmesi ve diğer sektör tabanlı parametreler için ölçülmesi gerekir ve en yaygın metriklerden biri Karmaşa Matrisidir.
İçindekiler
Karışıklık Matrisi nedir ve neden kullanılır?
Çıktı sınıflarının iki veya daha fazla olabileceği sınıflandırma problemlerinde kullanılan bir performans metriğidir ve bu matris, bir model tarafından tahmin edilen değerlerin tüm kombinasyonlarını, o girdiyle ilişkili gerçek değerlerle temsil eder. Tanımlara göre hareket etmek kolay göründüğü için buna 'karışıklık matrisi' denir, ancak daha değerli parametreler elde etmek için ilerledikçe, belirli bir yerde hangi parametrenin en uygun olduğu konusunda kafa karışıklığı ortaya çıkar.
Sınıflandırma probleminin oldukça dengesiz olduğu ve bir sınıfın diğer sınıflara hakim olduğu yerlerde kullanılır. Bu tür senaryolarda, modelin doğruluğunun %99'a ulaştığını görmek sizi şaşırtabilir, ancak gerçekte model, baskın sınıfa karşı oldukça önyargılıdır. Azınlık sınıfları için tahmin alma olasılığınız çok azdır. Bu nedenle, böyle dengesiz bir veri setini test etmek için karışıklık matrisini dikkate alıyoruz.
Karışıklık Matrisinin Yapısı
Matrisin boyutu, çıktı sınıflarının sayısıyla doğru orantılıdır. Sütun başlıklarını gerçek değerler ve satır başlıklarını model tahminleri olarak kabul ettiğimiz bir kare matristir. Model tarafından doğru ve doğru tahmin edilen değerler True Positives (TP) , doğru negatif değer tahminleri True Negatives (TN) , negatif olan ancak doğru olarak tahmin edilen değerler False Positives (FP) ve negatif olarak tahmin edilen pozitif değerler ise True Positives (TP) dir. Yanlış Negatifler (FN) . Bu resme bir göz atın:
Okuyun: Makine öğreniminde sınıflandırma algoritması türleri
Bundan ne öğrenebiliriz?
Bu matrisle ne yapabileceğimize dair geçerli bir soru ortaya çıkıyor. Buna dayanan bazı önemli terminolojiler vardır:

- Kesinlik: Model tarafından doğru olarak tanımlanan ve problem ifadesinin çözümüyle ilgili olan değerlerin kısmıdır. Bunu, model tarafından verilen toplam pozitif sonuçların bir kısmı olan ve pozitif olan değerler olarak da aktarabiliriz. Bu nedenle formülünü TP/ (TP + FP) olarak verebiliriz.
- Geri Çağırma: Model tarafından doğru olarak pozitif olarak tanımlanan değerlerin kısmıdır. Aynı zamanda Gerçek Pozitif Oran veya Duyarlılık olarak da adlandırılır. Formülü TP/ (TP+FN) olarak çıkıyor.
- F-1 Skoru: Kesinlik ve Geri Çağırmanın harmonik ortalamasıdır. Bu, iki modeli karşılaştıracak olursak, o zaman bu ölçümün uç değerleri bastıracağı ve aynı anda hem Yanlış Pozitifleri hem de Yanlış Negatifleri dikkate alacağı anlamına gelir. 2*Hassas*Geri Çağırma/ (Hassas+Geri Çağırma) şeklinde alıntı yapılabilir.
- Doğruluk: Değerlerin pozitif veya negatif olmasına bakılmaksızın doğru olarak tanımlanan kısmıdır. Bu, tüm True pozitiflerin ve True negatiflerin buna dahil olduğu anlamına gelir. Bunun formülü (TP+TN)/ (TP+TN+FP+FN) şeklindedir.
Tüm terimlerin dışında, kesinlik ve hatırlama en yaygın olarak kullanılır. Bunların değiş tokuşu, bir tahminin başarısının yararlı bir ölçüsüdür. İstenen modelin yüksek hassasiyete ve yüksek hatırlamaya sahip olması beklenir, ancak bu sadece mükemmel ayrılabilir verilerdedir. Pratik kullanım durumlarında, veriler oldukça düzensiz ve dengesizdir.

Python'da Karışıklık Matrisi için kod nasıl oluşturulur?
Sklearn kitaplığı, tüm makine öğrenimi görevlerini en yüksek doğrulukla gerçekleştirmek için çeşitli işlevler sağlar ve hemen hemen her şey burada uygulanmıştır. Tüm içe aktarma ifadelerinin zaten yapılmış olduğu ünlü Iris veri kümesini düşünün, karışıklık matrisinin kodu şöyle olacaktır:
iris = datasets.load_iris()
X = iris.veri
y = iris.hedef
class_names = iris.target_names
X_train, X_test, y_train, y_test = train_test_split (X, y, random_state = 0 )
sınıflandırıcı = svm.SVC (çekirdek = 'doğrusal' , C = 0.01 ) . sığdır(X_tren, y_tren)
plot_confusion_matrix(sınıflandırıcı, X_test, y_test,display_labels = class_names,cmap = plt . cm . Blues)
Not: Bunun döndürdüğü matrisin tarafları ters, burada solda gerçek değerler var ve üstte tahmin değerleri var. Karışıklığı önlemek istiyorsanız, manuel olarak hesaplamak yerine ayrıntılı bir özet (sınıflandırma raporu) almak için bu işlevi yürütün:

print(classification_report(y_true=y_test, y_pred=y_pred, target_names=class_names))
Ayrıca Okuyun: Derin Öğrenme Algoritması
Hangisini kullanmalı ve nerede?
Bu, Verileri modellerken ortaya çıkan en yaygın sorudur ve çözüm, sorunun ifade alanında yatmaktadır. Bu iki durumu göz önünde bulundurun:
- Kişinin kalp krizi geçirip geçirmeyeceğini tahmin ettiğinizi varsayalım. Bu senaryoda, herhangi bir yanlış sınıflandırmayı göze alamazsınız ve yapılan tüm tahminler doğru olmalıdır. Bununla birlikte, Yanlış Negatiflerin maliyeti yüksektir, bu nedenle kişi saldırıya eğilimliydi ancak güvenli olduğu tahmin edildi. Bu durumlardan kaçınılmalıdır. Bu durumlarda, hatırlama oranı yüksek bir modele ihtiyacımız var.
- Bir arama motorunun, tümü model tarafından olumlu olarak tahmin edilen rastgele sonuçlar sağladığını varsayalım, o zaman kullanıcının buna güvenme olasılığı çok düşüktür. Bu nedenle, bu senaryoda, kullanıcı deneyiminin gelişmesi ve web sitesinin doğru yönde büyümesi için yüksek hassasiyetli bir modele ihtiyacımız var.
Çözüm
Karışıklık matrisi, bir sınıflandırma modelini değerlendirmek için harika bir yöntemdir. Modelin sağlanan girdilere dayalı olarak sınıfları ne kadar doğru sınıflandırdığına ve bu sınıfın nasıl yanlış sınıflandırılabileceğine dair gerçek fikir verir.
Makine öğrenimi hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 450+ saat zorlu eğitim, 30'dan fazla vaka çalışması ve ödev, IIIT- sunan IIIT-B & upGrad'ın Makine Öğrenimi ve Yapay Zeka PG Diplomasına göz atın. B Mezun statüsü, 5+ pratik uygulamalı bitirme projesi ve en iyi firmalarla iş yardımı.