Topluluk Öğrenme Algoritmalarından Torbalama Algoritması İle Gögüs Kanserinin Tahmini Üzerine Bir Vaka Çalışması: A Case Study on the Prediction of Breast Cancer Using Bagging Algorithm from Ensemble Learning Algorithms

Giriş

Topluluk (ensemble) öğrenme algoritmaları tahmine dayalı analitik çalışmalarda en başarılı yaklaşımlardan biridir. Bu algoritmalar somut bir problemi çözmek için bir araya gelen modeller setinden oluşmaktadır. Amaç modeller setinin ürettiği tahminleri birleştirerek doğruluğu (accuracy) artırmaktır. Topluluk algoritmaları kendi içerisinde üç grupta ele alınır.

  1. Torbalama (Bagging: Bootsrap Aggregating)
  2. Artırma (Boosting)
  3. İstif (Stacking)

Topluluk (ensemble) öğrenme algoritmalarından biri olan torpalama, ingilizce ifadeyle Bagging, Breiman tarafından 1994 yılında geliştirilen hem sınıflandırma hem de regresyon problemlerinin çözümünde kullanılan makine öğrenmesine dayanan topluluk algoritmasıdır. Torbalama algoritmasının işleyiş süreci Şekil 1’de verilmiştir.

Şekil 1: Torbalama (Bagging) Algoritmasının İşleyiş Süreci

Şekil 1’de belirtilen torbalama algoritmasının işleyiç sürecini adım adım şöyle özetleyebiliriz.

  1. Popülasyon (N) birimlerini eğitilecek (training) veri setine ve test edilecek (testing) veri setine basit tekrarsız tesadüfi örnekleme (simple random sampling without replacement) yöntemiyle ayrılır. Burada literatürde genellikle eğitilecek veri seti seti için popülasyonun % 70’i alınsa da bu oran veri setinin ya da popülasyonun büyüklüğüne göre değişkenlik gösterebilmektedir. Bu oran 70:30 olabileceği gibi, 60:40 veya 80:20 oranı şeklinde de olabilir.
  2. Eğitilecek veri setini belirledikten sonra basit tekrarlı tesadüfi örnekleme yoluyla torbalara (1’den n’e kadar) örneklem birimleri (sample units) atanır.
  3. Örneklem birimleri kurulan modellerde eğitilir.
  4. Regresyon problemini çözüyorsak kurulan modellerden elde edilen sonuçların ortalaması alınarak bağımlı değişken (y) belirlenir. Sınıflandırma problemi çözüyorsak kurulan modellerden elde edilen çoğunluk oylama sonuçlarına göre karar verip y’yi, diğer bir ifadeyle bağımlı değişkeni (dependent variable) tahmin etmiş oluruz.

Modeller oluşturulurken temel amaç, bias ve varyans dengesinin kurulmasıdır. Bu uyumu sağlarsak iyi model uyumu (good-fit) elde etmiş oluruz. Makine öğrenme ve derin öğrenme problemlerinin çözümünde modelleme hatalarına bağlı olarak varyans ve bias değişiklik göstermektedir. Bu iki durum şöyle ele alınabilir:

  1. Eksik model uyumu (under-fitting): Kurulan modelde elde edilen tahmin değerleri gözlem verisine yeterince uyum göstermediğinde ortaya çıkar. Bu durumda varyans düşükken bias yüksektir. Buradan şunu anlamak gerekir: gözlem verisi ile tahmin edilen veri arasındaki fark büyükse, diğer bir deyişle kurulan modelle bağımlı değişken iyi tahmin edilemiyorsa bu durumda under-fitting oluşur. Under-fitting sonraki kısımlarında anlatılan sınıflandırma ve regresyon hata metrikleri ile kolaylıkla ortaya konulabilir.
  2. Aşrı model uyumu (over-fitting): Kurulan modelde eğitilen veri seti (training data set)’yle gözlem verisine aşırı uyum gösterdiğinde ortaya çıkar. Bu durumda varyans yüksekken bias düşüktür.

Bahsedilen bu iki durumu kafamızda daha da canlı tutmak için bias ve varyans ilişkisi Şekil 2’de verilmiştir. Şekil’de biz modeli kurgularken olması gereken durumu gösteren Düşük Varyans-Düşük Bias uyumunu hedefliyoruz. Diğer bir ifadeyle, kurguladığımız model (Şekil 2 1 nolu model) ile gözlem değerlerini olabildiğince en yüksek doğruluk oranı ile tahmin ederken aynı zamanda varyansı düşük tutmayı hedefliyoruz. Buna başardığımızda aslında iyi model uyumunu (good-fit) sağlamış ve iyi bir model kurmuş oluyoruz. Eksik model uyumu (under-fitting)’nda ise Şekil 2’de 3 nolu modelde görüleceği üzere elde edilen tahmin değerleri gözlem değerleri (kırmızı alan)’nden uzaklaşmakla birlikte hala tahmin değerleri ile gözlem değerleri arasında farklar, diğer bir deyişle varyans düşüktür. Aşırı model uyumu (over-fitting)’da ise Şekil 2’de 2 nolu modelde görüleceği üzere varyan yüksek iken bias düşüktür. 2 nolu modelde doğru değerler (gözlem değerleri)’i kurulan modelde yüksek doğrulukla (düşük bias) tahmin edilse de gözlem değerleri ile tahmin değerleri arasındaki varyans yüksektir.

Şekil 2: Bias-Varyans İlişkisi

Veri Tipleri

Torbalama yöntemi ile sınıflandırma problemi çözüyorsak bağımlı değişkenin ya da cevap değişkeninin veri tipi nitel ve kategoriktir. Ancak, bu yöntem ile regresyon problemini çözüyorsak bağımlı değişkenin ya da cevap değişkeninin veri tipi niceldir. Veri tipleri kendi içerisinde 4 farklı alt sınıfta ele alınabilir. Bu veri tipleri alt sınıflarıyla birlikte Şekil 3’te verilmiştir.

Şekil 3: Veri Tipleri

Nicel Veri (Quantitative Data)

Şekil 3’te sunulan nicel veri tipi ölçülebilen veri tipi olup, kendi içerisinde temel olarak ikiye ayrılmaktadır. Bu veri tipine alt sınıflandırmalar dikkate alınarak sırasıyla örnek verelim.

  1. Sürekli veri (Continous data): Tam sayı ile ifade edilmeyen veri tipi olup, zaman, sıcaklık, beden kitle endeksi, boy ve ağırlık ölçümleri bu veri tipine örnek verilebilir.
  2. Kesikli veri (Discrete Data): Tam sayı ile ifade edilebilen veri tipi olup, bu veri tipine proje sayısı, popülasyon sayısı, öğrenci sayısı örnek verilebilir.

Nitel Veri (Qualitative Data)

Şekil 3’te verilen nitel veri tipi ölçülemeyen ve kategori belirten veri tipi olup, kendi içerisinde temel olarak ikiye ayrılmaktadır. Bu veri tipine alt sınıflandırmalar şöyledir:

  1. Nominal veri: İki veya daha fazla cevap kategorisi olan ve sıra düzen içermeyen veri tipi olup, bu veri tipine medeni durum (evli, bekar) ve sosyal güvenlik türü (Bağkur, SSK, Yeşil Kart, Özel Sigorta) örnek gösterilebilir.
  2. Ordinal veri: İki veya daha fazla kategorisi olan ancak sıra düzen belirten veri türüdür. Bu veri tipine örnek olarak eğitim düzeyleri (İlkokul, ortaokul, lise, üniversite ve yüksek lisans), yarışma dereceleri (1. , 2. ve 3.) ve illerin gelişmişlik düzeyleri (1. Bölge, 2. Bölge, 3. Bölge, 4. Bölge, 5. Bölge ve 6. Bölge) verilebilir.

Veri tiplerinden bahsedildikten sonra bu veri tiplerinin cevap değişkeni (bağımlı değişken) olduğu durumlarda seçilecek analiz yöntemini ele alalım. Temel olarak cevap değişkeni ölçülebilir numerik değişken ise regresyon, değilse sınıflandırma analizi yapıyoruz. Cevap değişkeni, diğer bir deyişle bağımlı değişken numerik ise bağımsız değişken veya değişkenlerin çıktı (output) / bağımlı değişken (dependent variable) / hedef değişken (target variable) veya değişkenlerin üzerindeki etkisini tahmin etmeye çalışıyoruz. Buradaki temel felsefeyi anlamak son derece önemlidir. Çünkü bu durum sizin belirleyeceğiniz analiz yöntemini de değiştirecektir.

Kullanılan analiz yöntemi ile kurulan modelde ya sınıflandırma problemini ya da regresyon problemini çözdüğümüzü ifade etmiştik. Ancak kurulan modellerde çözülen problemin sınıflandırma ya da regresyon oluşuna göre performans değerlendirmesi farklılaşmaktadır. Sınıflandırma problemlerinde kullanılan hata metrikleri ile regresyon hata metrikleri aynı değildir. Bu bağlamda ilk olarak sınıflandırma problemlerinin çözümünde kullanılan hata metriklerini ele alalım.

Sınıflandırma Problemlerinde Hata Metrikleri

Karışıklık matrisi (confusion matrix) olarak olarak adlandırılan bu matris sınıflandırma problemlerinin çözümünde hata metriklerini ortaya koyarak kurulan modelin veya modellerin hata oranını değerlendirmektedir. Hata matrisinin makine ve derin öğrenme metotlarının değerlendirilmesinde sıklıkla kullanıldığı görülmektedir. Tablo 1’de hata metriklerinin hesaplanmasına esas teşkil eden karışıklık matrisi (confisioun matrix) verilmiştir. Bu tabloyla sınıflandırma hataları hesaplanabilmektedir. Tabloda yer verilen Tip 1 hata (Type 1 error) istatistikte alfa hatasını göstermektedir. Tip 1 hata H0 hipotezi (null hpypothesis) doğru olduğu halde reddedilmesidir. Tabloda Tip 2 hata (Type II error) olarak adlandırılan hata ise istatistikte Beta hatası olarak da bilinmektedir. Tip 2 hata ise H0 hipotezi (null hpypothesis) yanlış olduğu halde kabul edilmesidir.

Tablo 1: Karışıklık Matrisi (Confusion Matrix)

Kaynak: Stanford Üniversitesi

Tablo 1’de TP: Doğru Pozitifleri, FN: Yanlış Negatifleri, FP: Yanlış Pozitifleri ve TN: Doğru Negatifleri göstermektedir.

Şekil 3’te de yer verildiği üzere literatürde sınıflandırma modellerinin performansını değerlendirmede aşağıdaki hata metriklerinden yaygın bir şekilde yararlanıldığı görülmektedir. Sınıflandırma problemlerinin çözümüne yönelik Rastgele Orman Algoritması (RF) kullanarak R’da yapmış olduğum çalışmanın linkini ilgilenenler için aşağıda veriyorum.

R Programlama Diliyle Sınıflandırma Problemlerinin Çözümünde Rastgele Orman Algoritması Üzerine Bir Vaka Çalışması: A Case Study on Random Forest (RF) Algorithm in Solving Classification Problems with R Programming Language

  • Doğruluk (Accuracy): TP+TN / TP+TN+FP+FN eşitliği ile hesaplanır. Modelin genel performansını ortaya koyar. Bu sınıflandırma metriği ile aslında biz informal bir şekilde dile getirirsek doğru tahminlerin toplam tahminler içindeki oranını hesaplamış oluyoruz.
  • Kesinlik (Precision): TP / TP+FP eşitliği ile hesaplanır. Doğru tahminlerin ne kadar kesin olduğunu gösterir.
  • Geri çağırma (Recall)TP / TP+FN eşitliği ile hesaplanır. Gerçek pozitif örneklerin oranını verir.
  • Özgünlük (Specificity): TN / TN+FP eşitliği ile hesaplanır. Gerçek negatif örneklerin oranını gösterir.
  • F1 skoru : 2TP / 2TP+FP+FN eşitliği ile hesaplanır. Dengesiz sınıflar için yararlı hibrit bir metrik olup, kesinlik (precision) ve geri çağırma (recall) skorlarının ağırlıklı ortalamasını ifade etmektedir.
  • ROC (Receiver operating characteristic): Yukarıda karışıklık matrisinde belirtilen parametrelerden yararlanılarak hesaplanır. ROC eğrisi olarak da adlandırılmaktadır. ROC eğrileri, herhangi bir tahmin modelinin doğru pozitifler (TP) ve negatifler (TN) arasında nasıl ayrım yapabileceğini görmenin güzel bir yoludur. Sınıflandırma modellerin perfomansını eşik değerler üzerinden hesaplar. ROC iki parametre üzerinden hesaplanır. Doğru Pozitiflerin Oranı (TPR) ve Yanlış Pozitiflerin Oranı (FPR) bu iki parametreyi ifade eder. Burada aslında biz TPR ile Geri Çağırma (Recall), FPR ile ise 1-Özgünlük (Specificity)‘ü belirtiyoruz.
  • Cohen Kappa: Kategorik cevap seçenekleri arasındaki tutarlılığı ve uyumu gösterir. Cohen, Kappa sonucunun şu şekilde yorumlanmasını önermiştir: ≤ 0 değeri uyumun olmadığını, 0,01–0,20 çok az uyumu, 0,21-0,40 az uyumu, 0,41-0,60 orta, 0,61-0,80 iyi uyumu ve 0,81–1,00 çok iyi uyumu göstermektedir. 1 değeri ise mükemmel uyum anlamına gelmektedir.

Regresyon Problemlerinde Hata Metrikleri

Regresyon modellerinin performansını değerlendirmede literatürde aşağıdaki hata metriklerinden yaygın bir şekilde yararlanılmaktadır. Regresyon metrikleri eştiliklerinin verilmesi yerine sade bir anlatımla neyi ifade ettiği anlatılacaktır. Böylece formüllere boğulmamış olacaksınız.

  • SSE (Sum of Square Error): Tahmin edilen değerler ile gözlem değerleri arasındaki farkların kareleri toplamını ifade eder.
  • MSE (Mean Square Error): Ortalama kare hatası olarak adlandırılan bu hata tahmin edilen değerler ile gözlem değerleri arasındaki farkların karelerinin ortalamasını ifade eder.
  • RMSE (Root Mean Square Error): Kök ortalama kare hatası olarak adlandırılan bu hata ortalama kare hatasının karekökünü ifade etmektedir.
  • MAE (Mean Absolute Error): Ortalama mutlak hata olarak adlandırılan bu hata türü ise tahmin edilen değerler ile gözlem değerleri arasındaki farkların mutlak değerlerinin ortalamasını ifade etmektedir.
  • MAPE (Mean Absolute Percentage Error): Ortalama mutlak yüzdesel hata olarak adlandırılan bu hata türünde ilk olarak tahmin edilen değerler ile gözlem değerleri arasındaki farkların mutlak değerleri hesaplanır. Daha sonra hesaplanan farkları mutlak değerleri mutlak değerleri alınan gözlem değerlerine bölünür. En son durumda ise elde edilen bu değerlerin ortalaması alınır.
  • Bias: Tahmin edilen değerler ile gözlem değerleri arasındaki farkların ortalamasıdır. Bu yönüyle ortalama mutlak hata (MAE)’ya benzemektedir.

Regresyon hata metriklerini anlattıktan sonra daha kalıcı olması ve öğrenilmesi adına hazırladığım excel üzerinde bahsedilen bu metriklerin nasıl hesaplandığı gösterilmiştir. Excel dosyasını aşağıdaki linkten indirebilirsiniz.

Regresyon Metrikleri İndir

Çalışma kapsamında torpalama algoritmasıyla sınıflandırma problemi çözülecektir. Bu amaçla Wisconsin Üniversitesi Hastanesinden alınan Meme Kanseri veri seti kullanılarak bağımlı değişken olan meme kanserinin tipi tahmin edilecektir.

Metodoloji ve Uygulama Sonuçları

Bu bölümde torpalama algoritması kullanılarak meme kanserinin türü (iyi huylu: benign, kötü huylu: malign) tahmin edilmiştir. Diğer bir ifadeyle, bu çalışmada sınıflandırma problemi çözmüş olacağız. Analizde kullanılan veri seti Wisconsin Üniversitesi Hastanelerinde 15 Temmuz 1992 tarihine kadar tedavi görmüş hastalardan alınan meme biyopsi verilerini içermektedir. Biyopsi’den bahsetmişken ne anlama geldiğini de açıklayalım. Biyopsi, vücudun farklı bölgelerinden mikroskop yardımıyla inceleme ve farklı tetkikler yaparak hastalık şüphesi bulunan bölgeden tanı amaçlı hücre ya da doku alma işlemidir. Veri setinde 15 Temmuz 1992’ye kadar 699 hastaya ait meme tümör biyopsi gözlemleri bulunmaktadır. Veri setindeki toplam gözlem sayısı 699, değişken sayısı ise 10 (ID numarası hariç)’dur. Bu veri setine R programlama yazılımında “MASS” paketi içerisinde “biopsy” olarak yer verilmiştir. Ancak veri setinde değişkenlerin adları tam olarak yazılmadığı için R programlama dilinde revize edilmiş ve R programlama dili kullanılarak torpalama (bagging) algoritmasıyla analiz edilmiştir.

  1. Cl.thickness: Kitlenin kalınlığını (clump thickness) göstermektedir. Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  2. Cell.size: Hücre büyüklüğünün homojenliğini (uniformity of cell size) göstermektedir.Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  3. Cell.shape: Hücre şeklinin bütünlüğünü (uniformity of cell shape) göstermektedir. Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  4. Marg.adhesion: Marjinal yapışmayı göstermektedir. Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  5. Epith.c.size Epitel hücre büyüklüğünü (single epithelial cell size) göstermektedir.Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  6. Bare.nuclei: Sitoplazma (hücrenin geri kalanı) ile çevrili olmayan çekirdekler için kullanılan bir terimdir. Bunlar tipik olarak iyi huylu tümörlerde görülür.Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  7. Bl.cromatin: Benign (iyi huylu) hücrelerde görülen çekirdeğin muntazam bir “dokusunu” açıklar (bland chromatin). Kanser hücrelerinde kromatin daha kaba olma eğilimindedir.Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  8. Normal.nucleoli: Nükleoller, çekirdekte görülen küçük yapılardır. Kanser hücrelerinde nükleoller daha belirgin hale gelir.Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  9. Mitoses: Mitotik aktivite, hücrelerin ne kadar hızlı bölündüğünün bir ölçüsüdür. Yüksek mitotik aktivite tipik olarak malign tümörlerde görülür.Cevap değişkenleri 1’den 10’a kadar bir ölçekte puanlanmıştır. Veri tipi nicel ve kesiklidir.
  10. Class: Meme kanserinin tipini (iyi huylu mu yoksa kötü huylu mu) göstermektedir. Değişken kategorileri “benign” ve “malignant“, diğer bir deyişle iyi ve kötü huyludur.Veri tipi nitel ve nominal kategoriktir.

Bu kapsamda cevap değişkeni (bağımlı değişken) olan “Class” yani meme kanserinin türü geri kalan 9 bağımsız değişken kullanılarak torpalama algoritmasıyla tahmin edilecektir.Analizde kullanılan veri setini aşağıdaki linkten indirebilirsiniz.

Şimdi veri setini tanıdıktan sonra adım adım (step by step) analize başlayabiliriz. Analizde R programlama dili kullanarak analiz adımları R kod bloklarında verilmiştir.

Yüklenecek R kütüphaneleri

rm(list=ls())

kütüphaneler = c("dplyr","tibble","tidyr","ggplot2","formattable","readr","readxl","xlsx", "pastecs","fpc", "DescTools","e1071", "DMwR","caret", "viridis","GGally","ggpurr","psych","writexl","ggfortify","explore","MASS", "adabag", "rpart")
 
sapply(kütüphaneler, require, character.only = TRUE)

Ver setinin okunması ve değişkenlerin adlandırılması

veri<-biopsy %>% rename(Cl.thickness=V1, Cell.size=V2, Cell.shape=V3, Marg.adhesion=V4,  Epith.c.size=V5, Bare.nuclei=V6, Bl.cromatin=V7, Normal.nucleoli=V8, Mitoses=V9, Class=class)
veri<-veri[,-1]

Ver setinin xlsx ve csv uzantılı dosyalara yazdırılması

write.csv(veri, "gögüskanseriveriseti.csv")#csv dosyası için
write_xlsx(veri, "gögüskanseriveriseti.xlsx")#xlsx dosyası için

Yukarıdaki R kod bloğunun çalıştırılmasından sonra veri seti xlsx ve csv uzantılı dosyalara yazdırılmıştır. Elde edilen veri seti dosyası sadece xlsx uzantılı olarak aşağıdan indirilebilir. Sitem csv dosya yüklemesini desteklemediği için csv uzantılı dosya aşağıda verilememiştir. Ancak yukarıdaki R kod bloğu çalıştırabilir ve csv uzatılı dosya rmd dosyasının bulunduğu klasör içine otomatik olarak kaydedilebilir.

Veri setinin görselleştirilmesi ve tanımlayıcı istatistikler

#veri setindeki ilk 3 değişkenin görselleştirilmesi
veri[,1:3] %>% explore_all()
#veri setindeki 4,5,6 ve 7. değişkenlerin görselleştirilmesi
veri[,4:7] %>% explore_all()
#veri setindeki 8,9 ve 10. değişkenlerin görselleştirilmesi
veri[,8:10] %>% explore_all()

#veri setindeki ilk 10 gözlem
formattable(head(veri,10))

#Eksik gözlemler çıkarıldıktan sonra Pearson korelasyon matrisi 
tamveri<-na.omit(veri)
cor.plot(tamveri[,-10], main="Korelasyon Matrisi")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra veri setindeki ilk 3 değişkenin grafiği aşağıda verilmiştir. Grafikte görüleceği üzere eksik gözlem (missing data: NA) bulunmamaktadır.

Yukarıdaki R kod bloğunun çalıştırılmasından sonra veri setindeki 4,5,6 ve 7. değişkenlerin grafiği aşağıda verilmiştir. Grafikte görüleceği üzere sadece Bare.nuclei değişkende 16 eksik gözlem (missing data: NA) bulunmaktadır.

Yukarıdaki R kod bloğunun çalıştırılmasından sonra veri setindeki 8,9 ve 10. değişkenlerin grafiği aşağıda verilmiştir. Grafikte görüleceği üzere eksik gözlem (missing data: NA) bulunmamaktadır.

Yukarıdaki R kod bloğunun çalıştırılmasından sonra meme kanseri veri setindeki ilk 10 gözlem aşağıdaki tabloda verilmiştir.

Yukarıdaki R kod bloğunun çalıştırılmasından sonra meme kanseri veri setindeki eksik gözlemlerin olduğu 16 satır çıkarılmış, ardından nicel ve kesikli değişkenlere ait Pearson korelasyon matrisi aşağıdaki şekilde verilmiştir. Bağımlı değişken dışındaki değişken çiftleri nicel (sürekli ve kesikli) olduğu için Pearson korelasyon katsayısını hesapladık.

Bağımlı değişken olan tümörün tipi (Class)’ne görer değişkenler arasındaki ilişki

tamveri %>% ggplot(aes(x = Cl.thickness, y = Cell.size, color = Class))+
        geom_point(position = position_dodge(0.9)) +
        facet_grid( ~Class)

tamveri %>% ggplot(aes(x = Cell.shape, y = Marg.adhesion, color = Class))+
        geom_point(position = position_dodge(0.9)) +
        facet_grid( ~Class)

tamveri %>% ggplot(aes(x = Epith.c.size, y = Bare.nuclei, color = Class))+
        geom_point(position = position_dodge(0.9)) +
        facet_grid( ~Class)

tamveri %>% ggplot(aes(x = Bl.cromatin, y = Normal.nucleoli, color = Class))+
        geom_point(position = position_dodge(0.9)) +
        facet_wrap(Mitoses~Class )

Yukarıdaki R kod bloğunun çalıştırılmasından sonra ilk iki değişkenin tümörün tipine göre kendi aralarındaki ilişki aşağıdaki grafikte verilmiştir.

Yukarıdaki R kod bloğunun çalıştırılmasından sonra 3. ve 4. değişkenin tümörün tipine göre kendi aralarındaki ilişki aşağıdaki grafikte verilmiştir.

Yukarıdaki R kod bloğunun çalıştırılmasından sonra 5. ve 6. değişkenin tümörün tipine göre kendi aralarındaki ilişki aşağıdaki grafikte verilmiştir.

Yukarıdaki R kod bloğunun çalıştırılmasından sonra 7, 8 ve 9. değişkenlerin tümörün tipine göre kendi aralarındaki ilişki aşağıdaki grafikte verilmiştir.

Veri setinin eğitilecek veri setine ve test veri setine ayrılması

Bu kısımda aşağıdaki R kod bloğunda basit tekrarsız tesadüfi örnekleme (SRS without replacement) yöntemi kullanılarak veri setindeki gözlemlerin % 70’i eğitilecek veri setine, % 30 ise test edilecek veri setine atanmıştır. Veri setinin eğitilecek veri seti ve test veri setine ayrılmasında genel olarak 70:30 kuralı uygulansa da bu kuralın mutlak olmadığı unutulmamalıdır. Veri setindeki gözlem sayısına göre 70:30 kuralı değişiklik gösterebilmektedir. Veri setindeki gözlem sayısı çok azsa 60:40, veri setindeki gözlem sayısı çok fazla ise 80:20 ve hatta 90:10 olabilmektedir. Şimdi soru burada şu olabilir; neden biz 80:20 veya 90:10 olarak belirliyoruz? Genel olarak buna verilebileceğim cevap şu: Eğer çok yüksek gözlem sayıları ile çalışıyorsanız bilgisayar işlemcisine bağlı olarak bu işlemin çok uzun sürmesi kuvvetle muhtemeldir ki bu durumda test veri setinin oranını düşürmek analizinizi hızlandırır ve daha çabuk sonuç alırsınız.

set.seed(1461)
orneklem<- sample(1:NROW(tamveri), NROW(tamveri)*0.7)
train <- tamveri[orneklem, ]  
test <- tamveri[-orneklem, ]

Torpalama (Bagging) modelinin kurulması

model <- bagging(Class ~., data=tamveri, mfinal=500)

Değişkenlerin önem düzeyleri

#önem düzeyi grafiği
importanceplot(model)
önem düzeyi değerleri tablosu
onem<-model$importance
degisken<-names(onem)
agirlik<-as_tibble(as.numeric(onem))
onemduzey<-tibble("Değişken"=degisken, "Önem Düzeyi"=round(agirlik$value,2))

formattable(onemduzey, 
            list(formatter(
              "span", style = ~ style(color = "grey",font.weight = "bold")),
`Önem Düzeyi` = color_bar("#FF6347")
))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen modeldeki değişkenlerin önem düzeyleri büyükten küçüğe doğru aşağıdaki grafikte verilmiştir.

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen modeldeki değişkenlerin önem düzeyleri değerleriyle birlikte aşağıdaki tabloda verilmiştir. Aşağıdaki tablo yukarıdaki grafiğe göre daha anlamlı olduğu söylenebilir.

Tahmin edilen değerler ile test veri setindeki gözlem değerlerinin karşılaştırılması

model <- bagging(Class ~., data=train, mfinal=500)
tahmin<-predict(model, test)
karsilastirma<-tibble(Gozlem=test$Class, Tahmin=tahmin$class)
#ilk ve son 10 tahmin değerini gerçek değerle karşılaştırma 
ilk10<-head(karsilastirma, 10) %>% rename(Gozlemİlk_10=Gozlem, Tahminİlk_10=Tahmin)
son10<-tail(karsilastirma, 10) %>% rename(GozlemSon_10=Gozlem, TahminSon_10=Tahmin)
formattable(cbind("Sıra"=seq(1,10),ilk10, son10))

Yukarıdaki R kod bloğunun çalıştırılmasından sonra torbalama (bagging) modelinden elde edilen ilk ve son 10 tahmin sınıflandırma değerleri gözlem sınıflandırma değerleri ile birlikte aşağıdaki tabloda karşılaştırmalı olarak verilmiştir.

Karışıklık matrisi (confusion matrix)’nin oluşturulması

cm<tahmin$confusion
plot(cm, type = "heatmap", main="Karışıklık Matrisi")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen karışıklık matrisi aşağıda verilmiştir.

             Observed Class
Predicted Class benign malignant
      benign       127         3
      malignant      4        71

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen karışıklık matrisinin grafiği ise aşağıda verilmiştir.

Sınıflandırma Hata parametreleri

Kurulan modele ait hata parametrelerinin elde edilmesine yönelik yazılan R kod bloğu aşağıda verilmiştir.

cm<-confusionMatrix(karsilastirma$Tahmin, karsilastirma$Gozlem)
cm

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen hata metrikleri bir bütün olarak aşağıda verilmiştir. Torbalama (bagging) algoritmasıyla kurulan model meme kanseri türlerini yaklaşık % 97 doğruluk (accuracy) oranı ile tahmin etmektedir. Hata oranı ise 100-97 eşitliğinden yola çıkarak % 3 buluruz. Uyumu gösteren Kappa katsayısı ise bu modelde yaklaşık % 93 (0,93) olup, tahmin edilen tümör türleri ile gözlemlenen tümör türleri arasında mükemmele yakın bir uyum olduğu görülmektedir. Bu bulgu aynı zamanda doğruluk oranını da destekler niteliktedir.

Confusion Matrix and Statistics

           Reference
Prediction  benign malignant
  benign       127         3
  malignant      4        71
                                          
               Accuracy : 0.9659          
                 95% CI : (0.9309, 0.9862)
    No Information Rate : 0.639           
    P-Value [Acc > NIR] : <2e-16          
                                          
                  Kappa : 0.9262          
                                          
 Mcnemar's Test P-Value : 1               
                                          
            Sensitivity : 0.9695          
            Specificity : 0.9595          
         Pos Pred Value : 0.9769          
         Neg Pred Value : 0.9467          
             Prevalence : 0.6390          
         Detection Rate : 0.6195          
   Detection Prevalence : 0.6341          
      Balanced Accuracy : 0.9645          
                                          
       'Positive' Class : benign    

Çapraz performans testi (Cross validation test)

Burada modelin performansı çapraz performans testi yapılarak tüm veri seti üzerinde test edilir ve doğruluk oranı verilir. Bu işleme ilişkin yazılan R kod bloğu aşağıda verilmiştir. Bu kısım Bilgisayar işlemcisine bağlı olarak biraz uzun sürebilmektedir. Bu yüzden sabırlı olmakta fayda var 🙂 . Yukarıda karışıklık matrisine göre verilen metrikler test verisine göre elde edilen hata metrikleridir. Yani yukarıda eğitim verisine göre kurulan model test verisi ile karşılaştırılmıştır. Buradaki ayrımı iyi yapmak gerekir.

tamvericv<-bagging.cv(Class ~., data=tamveri, v = 2, mfinal = 500, control=rpart.control(cp=0.01))
tamvericv[-1]
#doğruluk ve hata oranı
dogrulukvehataorani<-paste("Doğruluk Oranı: %",round((1-tamvericv[-1]$error)*100,1),"ve","Hata Oranı: %",round(tamvericv[-1]$error*100,1))
dogrulukvehataorani

Yukarıdaki R kod bloğunun çalıştırılmasından sonra model tüm veri seti üzerinde test edilmiş ve performans parametre değerleri karışıklık matrisi ile birlikte aşağıda verilmiştir. Bulgular, torbalama algoritmasının tüm veri seti üzerinde test edildiğinde meme kanseri türlerini % 96,5 doğruluk oranı ve % 3,5 hata oranı ile tahmin ettiğini göstermektedir.

$confusion
               Observed Class
Predicted Class benign malignant
      benign       429         9
      malignant     15       230

$error
[1] 0.03513909

[1] "Doğruluk Oranı: % 96.5 ve Hata Oranı: % 3.5"

Sonuç

Bu çalışmada sınıflandırma (classification) probleminin çözümüne yönelik topluluk öğrenme algoritmalarından biri olan torbalama (bagging) algoritması kullanılarak ayrıntılı deneysel bir çalışma yapılmıştır. Ortaya konulan bulgular, sınıflandırma probleminin torbalama (bagging) algoritması tarafından çok başarılı bir şekilde, diğer bir ifadeyle çok yüksek bir doğruluk (accuracy) oranıyla çözüme kavuşturulduğu görülmektedir.

Torbalama algoritması test verisi üzerinde test edildiğinde meme kanseri türlerini % 96,5 doğruluk (accuracy) oranı ile tahmin etmektedir. Diğer taraftan tüm veri seti üzerinde test edildiğinde ise meme kanseri türlerini benzer şekilde yaklaşık % 96,5 doğruluk (accuracy) oranı ile tahmin etmektedir. Hata oranı (error rate) 1-Doğruluk Oranı eşitliğinden hem test verisinde hemde tüm verisi setinde % 3,5’tir . Bu hata sınıflandırma hatası (classification error) olarak da nitelendirilebilir.

Yapılan bu çalışmanın özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına önemli bir katkı sunacağı düşünülmektedir.

Faydalı olması ve farkındalık oluşturması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla.

Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.

Note: It can not be cited or copied without referencing.

Yararlanılan Kaynaklar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s