Makine Öğrenimi - Performans Ölçütleri
ML algoritmalarının, sınıflandırmanın ve regresyon algoritmalarının performansını değerlendirmek için kullanabileceğimiz çeşitli ölçütler vardır. Makine öğrenimi performansını değerlendirmek için metrikleri dikkatlice seçmeliyiz çünkü -
Makine öğrenimi algoritmalarının performansının nasıl ölçüldüğü ve karşılaştırıldığı tamamen seçtiğiniz metriğe bağlı olacaktır.
Sonuçtaki çeşitli özelliklerin önemini nasıl ağırlıklandırdığınız, tamamen seçtiğiniz metrikten etkilenecektir.
Sınıflandırma Sorunları için Performans Ölçütleri
Sınıflandırma ve algoritmalarını önceki bölümlerde tartıştık. Burada, sınıflandırma problemlerine yönelik tahminleri değerlendirmek için kullanılabilecek çeşitli performans ölçütlerini tartışacağız.
Karışıklık Matrisi
Çıktının iki veya daha fazla sınıf türünden olabileceği bir sınıflandırma probleminin performansını ölçmenin en kolay yoludur. Karışıklık matrisi, iki boyutlu bir tablodan başka bir şey değildir. "Gerçek" ve "Öngörülen" ve ayrıca, her iki boyutun da aşağıda gösterildiği gibi "Gerçek Pozitifler (TP)", "Gerçek Negatifler (TN)", "Yanlış Pozitifler (FP)", "Yanlış Negatifler (FN)" vardır -
Karışıklık matrisi ile ilgili terimlerin açıklaması aşağıdaki gibidir -
True Positives (TP) - Hem gerçek sınıf hem de tahmin edilen veri noktası sınıfının 1 olduğu durumdur.
True Negatives (TN) - Hem gerçek sınıf hem de tahmin edilen veri noktası sınıfının 0 olduğu durumdur.
False Positives (FP) - Gerçek veri noktası sınıfının 0 ve tahmin edilen veri noktası sınıfının 1 olduğu durumdur.
False Negatives (FN) - Gerçek veri noktası sınıfının 1 ve tahmin edilen veri noktası sınıfının 0 olduğu durumdur.
Sınıflandırma modelimizin Karışıklık Matrisini hesaplamak için sklearn.metrics'in confusion_matrix işlevini kullanabiliriz.
Sınıflandırma Doğruluğu
Sınıflandırma algoritmaları için en yaygın performans ölçüsüdür. Yapılan tüm tahminlerin oranı olarak yapılan doğru tahminlerin sayısı olarak tanımlanabilir. Aşağıdaki formül yardımıyla karışıklık matrisi ile kolayca hesaplayabiliriz -
$$ Doğruluk = \ frac {TP + TN} {+++} $$Sınıflandırma modelimizin doğruluğunu hesaplamak için sklearn.metrics'in doğruluk_soru fonksiyonunu kullanabiliriz.
Sınıflandırma Raporu
Bu rapor, Kesinlik, Geri Çağırma, F1 ve Destek puanlarından oluşur. Aşağıdaki şekilde açıklanmıştır -
Hassas
Belge alımlarında kullanılan kesinlik, ML modelimiz tarafından iade edilen doğru belge sayısı olarak tanımlanabilir. Aşağıdaki formül yardımıyla karışıklık matrisi ile kolayca hesaplayabiliriz -
$$ Precision = \ frac {TP} {TP + FP} $$Hatırlama veya Hassasiyet
Geri çağırma, ML modelimiz tarafından döndürülen pozitiflerin sayısı olarak tanımlanabilir. Aşağıdaki formül yardımıyla karışıklık matrisi ile kolayca hesaplayabiliriz -
$$ Recall = \ frac {TP} {TP + FN} $$Özgüllük
Özgünlük, hatırlamanın aksine, ML modelimiz tarafından döndürülen negatiflerin sayısı olarak tanımlanabilir. Aşağıdaki formül yardımıyla karışıklık matrisi ile kolayca hesaplayabiliriz -
$$ Özgüllük = \ frac {TN} {TN + FP} $$Destek
Destek, her bir hedef değer sınıfında yer alan gerçek yanıtın örnek sayısı olarak tanımlanabilir.
F1 Puanı
Bu puan bize hassasiyet ve geri çağırmanın harmonik ortalamasını verecektir. Matematiksel olarak F1 skoru, hassasiyet ve geri çağırmanın ağırlıklı ortalamasıdır. F1'in en iyi değeri 1 ve en kötüsü 0 olur. Aşağıdaki formül yardımıyla F1 puanını hesaplayabiliriz -
= ∗ (∗) / (+)
F1 skoru, hassasiyet ve geri çağırmanın eşit nispi katkısına sahiptir.
Sınıflandırma modelimizin sınıflandırma raporunu almak için sklearn.metrics'in sınıflandırma_report işlevini kullanabiliriz.
AUC (ROC eğrisi Altındaki Alan)
AUC (Eğri Altındaki Alan) -ROC (Alıcı Çalışma Karakteristiği), sınıflandırma problemleri için değişen eşik değerlerine dayanan bir performans ölçüsüdür. Adından da anlaşılacağı gibi, ROC bir olasılık eğrisidir ve AUC ayrılabilirliği ölçer. Basit bir deyişle, AUC-ROC metriği bize modelin sınıfları ayırt etme kabiliyetini anlatacaktır. AUC ne kadar yüksekse, model daha iyi.
Matematiksel olarak, TPR (Gerçek Pozitif Oran), yani Hassasiyet veya geri çağırma - FPR (Yanlış Pozitif Oran), yani 1-Özgüllük, çeşitli eşik değerlerinde çizilerek oluşturulabilir. Y ekseninde TPR'ye ve x ekseninde FPR'ye sahip olan ROC, AUC'yi gösteren grafik aşağıdadır -
AUC-ROC'yi hesaplamak için sklearn.metrics'in roc_auc_score fonksiyonunu kullanabiliriz.
LOGLOSS (Logaritmik Kayıp)
Lojistik regresyon kaybı veya çapraz entropi kaybı olarak da adlandırılır. Temelde olasılık tahminleri üzerinde tanımlanır ve girdinin 0 ile 1 arasında bir olasılık değeri olduğu bir sınıflandırma modelinin performansını ölçer. Doğrulukla farklılaştırılarak daha net anlaşılabilir. Doğruluğun, modelimizdeki tahminlerin sayısı (tahmin edilen değer = gerçek değer) olduğunu bildiğimiz gibi, Log Loss ise gerçek etiketten ne kadar değiştiğine bağlı olarak tahminimizin belirsizlik miktarıdır. Log Loss değeri yardımıyla modelimizin performansını daha doğru bir şekilde görebiliriz. Log Loss'u hesaplamak için sklearn.metrics'in log_loss fonksiyonunu kullanabiliriz.
Misal
Aşağıda, ikili sınıflandırma modelinde yukarıda açıklanan performans ölçütlerini nasıl kullanabileceğimize dair bir fikir verecek olan Python'da basit bir tarif verilmiştir -
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))
Çıktı
Confusion Matrix :
[
[3 3]
[1 3]
]
Accuracy Score is 0.6
Classification Report :
precision recall f1-score support
0 0.75 0.50 0.60 6
1 0.50 0.75 0.60 4
micro avg 0.60 0.60 0.60 10
macro avg 0.62 0.62 0.60 10
weighted avg 0.65 0.60 0.60 10
AUC-ROC: 0.625
LOGLOSS Value is 13.815750437193334
Regresyon Sorunları için Performans Ölçütleri
Regresyon ve algoritmalarını önceki bölümlerde tartıştık. Burada, regresyon problemlerine yönelik tahminleri değerlendirmek için kullanılabilecek çeşitli performans ölçütlerini tartışacağız.
Ortalama Mutlak Hata (MAE)
Regresyon problemlerinde kullanılan en basit hata ölçüsüdür. Temel olarak tahmin edilen ve gerçek değerler arasındaki mutlak farkın ortalamasının toplamıdır. Basit bir deyişle, MAE ile tahminlerin ne kadar yanlış olduğuna dair bir fikir edinebiliriz. MAE, modelin yönünü göstermez, yani modelin düşük performansı veya aşırı performansı hakkında hiçbir gösterge yoktur. Aşağıdaki MAE'yi hesaplamak için formüldür -
$$ MAE = \ frac {1} {n} \ toplamı | Y - \ hat {Y} | $$Burada, = Gerçek Çıkış Değerleri
Ve $ \ hat {Y} $ = Öngörülen Çıktı Değerleri.
MAE'yi hesaplamak için sklearn.metrics'in mean_absolute_error fonksiyonunu kullanabiliriz.
Ortalama Kare Hatası (MSE)
MSE, MAE gibidir, ancak tek fark, mutlak değeri kullanmak yerine hepsini toplamadan önce gerçek ve tahmin edilen çıktı değerlerinin farkını kareler. Fark, aşağıdaki denklemde fark edilebilir -
$$ MSE = \ frac {1} {n} \ toplam (Y - \ hat {Y}) $$Burada, = Gerçek Çıkış Değerleri
Ve $ \ hat {Y} $ = Öngörülen Çıktı Değerleri.
MSE'yi hesaplamak için sklearn.metrics'in mean_squared_error fonksiyonunu kullanabiliriz.
R Kare (R 2 )
R Kare metrik genellikle açıklama amacıyla kullanılır ve bir dizi tahmini çıktı değerinin gerçek çıktı değerlerine uygunluğunun veya iyiliğinin bir göstergesini sağlar. Aşağıdaki formül onu anlamamıza yardımcı olacaktır -
$$ R ^ {2} = 1 - \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ bar {Y_i) ^ 2}} $$Yukarıdaki denklemde pay MSE'dir ve payda değerlerdeki varyanstır.
R kare değerini hesaplamak için sklearn.metrics'in r2_score fonksiyonunu kullanabiliriz.
Misal
Aşağıdakiler, regresyon modelinde yukarıda açıklanan performans ölçümlerini nasıl kullanabileceğimiz konusunda bize fikir verecek Python'da basit bir tariftir -
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))
Çıktı
R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999