Sınıflandırma - Giriş
Sınıflandırmaya Giriş
Sınıflandırma, gözlenen değerlerden veya verilen veri noktalarından sınıf veya kategori tahmin etme süreci olarak tanımlanabilir. Kategorize edilmiş çıktı "Siyah" veya "Beyaz" veya "istenmeyen posta" veya "istenmeyen posta yok" şeklinde olabilir.
Matematiksel olarak sınıflandırma, bir eşleme fonksiyonunu (f) giriş değişkenlerinden (X) çıktı değişkenlerine (Y) yaklaştırma görevidir. Temel olarak, hedeflerin giriş veri setiyle birlikte sağlandığı denetimli makine öğrenimine aittir.
Sınıflandırma problemine bir örnek, e-postalarda spam tespiti olabilir. Yalnızca iki çıktı kategorisi olabilir, "istenmeyen posta" ve "istenmeyen posta yok"; dolayısıyla bu bir ikili tip sınıflandırmadır.
Bu sınıflandırmayı uygulamak için önce sınıflandırıcıyı eğitmemiz gerekir. Bu örnek için, eğitim verileri olarak "spam" ve "spam yok" e-postaları kullanılacaktır. Sınıflandırıcıyı başarıyla eğittikten sonra, bilinmeyen bir e-postayı tespit etmek için kullanılabilir.
Sınıflandırmadaki Öğrenci Türleri
Sınıflandırma problemleriyle ilgili olarak iki tür öğrencimiz var -
Tembel Öğrenciler
Adından da anlaşılacağı gibi, bu tür öğrenciler, eğitim verilerini depoladıktan sonra test verilerinin görünmesini bekler. Sınıflandırma ancak test verileri alındıktan sonra yapılır. Eğitime daha az, tahmin etmeye daha çok zaman harcıyorlar. Tembel öğrenenlere örnek olarak K-en yakın komşu ve vaka temelli muhakeme verilebilir.
Hevesli Öğrenciler
Tembel öğrencilerin aksine, istekli öğrenciler, eğitim verilerini sakladıktan sonra test verilerinin görünmesini beklemeden sınıflandırma modeli oluşturur. Eğitime daha fazla, tahmin etmeye daha az zaman harcarlar. Hevesli öğrenenlerin örnekleri Karar Ağaçları, Naif Bayes ve Yapay Sinir Ağlarıdır (YSA).
Python'da Sınıflandırıcı Oluşturma
Makine öğrenimi için bir Python kitaplığı olan Scikit-learn, Python'da bir sınıflandırıcı oluşturmak için kullanılabilir. Python'da bir sınıflandırıcı oluşturmanın adımları aşağıdaki gibidir -
Adım 1: Gerekli python paketini içe aktarma
Scikit-learn kullanarak bir sınıflandırıcı oluşturmak için onu içe aktarmamız gerekir. Aşağıdaki komut dosyasını kullanarak içe aktarabiliriz -
import sklearn
Adım 2: Veri kümesini içe aktarma
Gerekli paketi içe aktardıktan sonra, sınıflandırma tahmin modeli oluşturmak için bir veri kümesine ihtiyacımız var. Sklearn veri setinden içe aktarabilir veya ihtiyacımıza göre diğerini kullanabiliriz. Sklearn'ın Meme Kanseri Wisconsin Teşhis Veritabanını kullanacağız. Aşağıdaki komut dosyası yardımıyla içe aktarabiliriz -
from sklearn.datasets import load_breast_cancer
Aşağıdaki komut dosyası veri kümesini yükleyecektir;
data = load_breast_cancer()
Ayrıca verileri düzenlememiz gerekiyor ve aşağıdaki komut dosyaları yardımıyla yapılabilir -
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']
Aşağıdaki komut etiketlerin adını yazdıracaktır, 'malignant' ve 'benignVeritabanımız durumunda.
print(label_names)
Yukarıdaki komutun çıktısı etiketlerin isimleridir -
['malignant' 'benign']
Bu etiketler, 0 ve 1 ikili değerleriyle eşleştirilir. Malignant kanser 0 ile temsil edilir ve Benign kanser 1 ile temsil edilir.
Bu etiketlerin özellik adları ve özellik değerleri aşağıdaki komutlar yardımı ile görülebilir -
print(feature_names[0])
Yukarıdaki komutun çıktısı, etiket 0 için özelliklerin isimleridir. Malignant kanser -
mean radius
Benzer şekilde, etiket özelliklerinin isimleri aşağıdaki gibi üretilebilir -
print(feature_names[1])
Yukarıdaki komutun çıktısı, etiket 1 için özelliklerin isimleridir. Benign kanser -
mean texture
Bu etiketlerin özelliklerini aşağıdaki komutun yardımıyla yazdırabiliriz -
print(features[0])
Bu, aşağıdaki çıktıyı verecektir -
[
1.799e+01 1.038e+01 1.228e+02 1.001e+03 1.184e-01 2.776e-01 3.001e-01
1.471e-01 2.419e-01 7.871e-02 1.095e+00 9.053e-01 8.589e+00 1.534e+02
6.399e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e+01
1.733e+01 1.846e+02 2.019e+03 1.622e-01 6.656e-01 7.119e-01 2.654e-01
4.601e-01 1.189e-01
]
Bu etiketlerin özelliklerini aşağıdaki komutun yardımıyla yazdırabiliriz -
print(features[1])
Bu, aşağıdaki çıktıyı verecektir -
[
2.057e+01 1.777e+01 1.329e+02 1.326e+03 8.474e-02 7.864e-02 8.690e-02
7.017e-02 1.812e-01 5.667e-02 5.435e-01 7.339e-01 3.398e+00 7.408e+01
5.225e-03 1.308e-02 1.860e-02 1.340e-02 1.389e-02 3.532e-03 2.499e+01
2.341e+01 1.588e+02 1.956e+03 1.238e-01 1.866e-01 2.416e-01 1.860e-01
2.750e-01 8.902e-02
]
3. Adım: Verileri eğitim ve test setleri halinde düzenleme
Modelimizi görünmeyen veriler üzerinde test etmemiz gerektiğinden, veri setimizi iki bölüme ayıracağız: bir eğitim seti ve bir test seti. Verileri kümelere ayırmak için sklearn python paketinin train_test_split () işlevini kullanabiliriz. Aşağıdaki komut işlevi içe aktaracaktır -
from sklearn.model_selection import train_test_split
Şimdi, bir sonraki komut verileri eğitim ve test verilerine böler. Bu örnekte, verilerin yüzde 40'ını test amacıyla ve yüzde 60'ını eğitim amacıyla alıyoruz -
train, test, train_labels, test_labels = train_test_split(
features,labels,test_size = 0.40, random_state = 42
)
Adım 4: Model değerlendirmesi
Verileri eğitim ve teste böldükten sonra modeli oluşturmamız gerekir. Bu amaçla Naïve Bayes algoritmasını kullanacağız. Aşağıdaki komutlar GaussianNB modülünü içe aktaracaktır -
from sklearn.naive_bayes import GaussianNB
Şimdi modeli aşağıdaki gibi başlatın -
gnb = GaussianNB()
Ardından, aşağıdaki komutun yardımıyla modeli eğitebiliriz -
model = gnb.fit(train, train_labels)
Şimdi, değerlendirme amacıyla öngörülerde bulunmamız gerekiyor. Predict () işlevi aşağıdaki gibi kullanılarak yapılabilir -
preds = gnb.predict(test)
print(preds)
Bu, aşağıdaki çıktıyı verecektir -
[
1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1
1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0
0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1
1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0
1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0
1
]
Çıktıdaki yukarıdaki 0'lar ve 1'ler serisi, Malignant ve Benign tümör sınıfları.
Adım 5: Doğruluğu bulma
Test_labels ve preds olmak üzere iki diziyi karşılaştırarak önceki adımda model derlemesinin doğruluğunu bulabiliriz. Doğruluğu belirlemek için doğruluk_score () işlevini kullanacağız.
from sklearn.metrics import accuracy_score
print(accuracy_score(test_labels,preds))
0.951754385965
Yukarıdaki çıktı, NaïveBayes sınıflandırıcısının% 95,17 doğru olduğunu göstermektedir.
Sınıflandırma Değerlendirme Metrikleri
Makine Öğrenimi uygulamanızın veya modelinizin uygulamasını tamamlamış olsanız bile iş bitmez. Modelimizin ne kadar etkili olduğunu bulmalı mıyız? Farklı değerlendirme ölçütleri olabilir, ancak bunu dikkatlice seçmeliyiz çünkü ölçü seçimi, bir makine öğrenimi algoritmasının performansının nasıl ölçüldüğünü ve karşılaştırıldığını etkiler.
Aşağıdakiler, veri kümenize ve sorun türüne göre seçebileceğiniz önemli sınıflandırma değerlendirme ölçütlerinden bazılarıdır -
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çıklamaları 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.
Karışıklık matrisini sklearn'ın confusion_matrix () fonksiyonu yardımıyla bulabiliriz. Aşağıdaki betik yardımıyla, yukarıdaki yerleşik ikili sınıflandırıcının karışıklık matrisini bulabiliriz -
from sklearn.metrics import confusion_matrix
Çıktı
[
[ 73 7]
[ 4 144]
]
Doğruluk
Makine öğrenimi modelimiz tarafından yapılan doğru tahmin sayısı olarak tanımlanabilir. Aşağıdaki formül yardımıyla karışıklık matrisi ile kolayca hesaplayabiliriz -
$$ = \ frac {+} {+++} $$Yukarıda yerleşik ikili sınıflandırıcı için, TP + TN = 73 + 144 = 217 ve TP + FP + FN + TN = 73 + 7 + 4 + 144 = 228.
Dolayısıyla, Doğruluk = 217/228 = 0.951754385965, ikili sınıflandırıcımızı oluşturduktan sonra hesapladığımızla aynıdı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 -
$$ = \ frac {} {+ FP} $$Yukarıdaki yerleşik ikili sınıflandırıcı için, TP = 73 ve TP + FP = 73 + 7 = 80.
Dolayısıyla, Kesinlik = 73/80 = 0.915
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 -
$$ = \ frac {} {+ FN} $$Yukarıda yerleşik ikili sınıflandırıcı için, TP = 73 ve TP + FN = 73 + 4 = 77.
Dolayısıyla, Kesinlik = 73/77 = 0,94805
Ö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 -
$$ = \ frac {N} {N + FP} $$Yukarıda yerleşik ikili sınıflandırıcı için TN = 144 ve TN + FP = 144 + 7 = 151.
Dolayısıyla, Kesinlik = 144/151 = 0.95364
Çeşitli ML Sınıflandırma Algoritmaları
Aşağıdakiler, bazı önemli makine öğrenimi sınıflandırma algoritmalarıdır -
Lojistik regresyon
Destek Vektör Makinesi (SVM)
Karar ağacı
Naif bayanlar
Rastgele Orman
Tüm bu sınıflandırma algoritmalarını ileriki bölümlerde ayrıntılı olarak tartışacağız.
Başvurular
Sınıflandırma algoritmalarının en önemli uygulamalarından bazıları aşağıdaki gibidir -
Konuşma tanıma
Elyazısı tanıma
Biyometrik Tanımlama
Belge Sınıflandırması