=Paper=
{{Paper
|id=Vol-1483/11_Bildiri
|storemode=property
|title=Yazılım Hata Kestiriminde Kolektif Sınıflandırma Modellerinin Etkisi
|pdfUrl=https://ceur-ws.org/Vol-1483/11_Bildiri.pdf
|volume=Vol-1483
|dblpUrl=https://dblp.org/rec/conf/uyms/KilincBYOB15
}}
==Yazılım Hata Kestiriminde Kolektif Sınıflandırma Modellerinin Etkisi==
Yazılım Hata Kestiriminde Kolektif Sınıflandırma
Modellerinin Etkisi
Deniz Kılınç1, Emin Borandağ1 , Fatih Yücalar1,
Akın Özçift1, Fatma Bozyiğit1
1 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği Bölümü, Manisa, Türkiye
deniz.kilinc@cbu.edu.tr, emin.borandag@cbu.edu.tr,
fatih.yucalar@cbu.edu.tr, akin.ozcift@cbu.edu.tr,
fatma.bozyigit@cbu.edu.tr
Özet. Yazılım hatalarının tespiti karmaşık ve maliyetli bir süreçtir. Yazılım
projelerinde ortaya çıkan hataların önceden tespit edilip düzeltilmesi, öngörülen
maliyeti ve proje süresini aşma risklerini azaltır. Hataların tespiti için “yazılım
ölçütleri” etkili kullanılarak, erken yazılım geliştirme aşamalarında kod analiz
edilip, hata yatkınlığıyla ilgili fikir sahibi olunabilir. Yazılımların ölçümünde
kullanılmak üzere çeşitli yazılım ölçütleri üretilmiştir. Bu çalışmada,
"Chidamber and Kemerer (CK)" ve "Object Oriented (OO)" yazılım ölçütlerine
sahip 4 veri seti üzerinde, 4 tane temel sınıflandırıcı ile bunların AdaBoost ve
Rotation Forest kolektif sınıflandırma modelleri kullanılarak, yazılım hata
kestirimi yapılmıştır. Temel sınıflandırıcılar seçilirken farklı kategorilerden
olmasına dikkat edilmiştir. Genel olarak değerlendirildiğinde, kolektif
sınıflandırma yöntemlerini kullanmak, temel sınıflandırıcıların başarımına göre
yaklaşık %70 oranla daha iyi sonuç vermektedir.
Anahtar Kelimeler. Yazılım hata kestirimi, makine öğrenmesi, sınıflandırma,
kolektif sınıflandırma, veri madenciliği.
1 Giriş
Yazılım testi temel olarak geliştirilen ürünün beklenen kalitede olduğunu belirlemek,
değilse istenilen kaliteye ulaştırılmasını sağlamak için kullanılan bir süreçtir.
Günümüz yazılım dünyasında, yazılım test yaklaşımları ve yazılım kalitesi en çok
çalışılan konular haline gelmiştir. Bunun başlıca nedeni, yazılımların büyümesiyle
birlikte karmaşıklıklarının ve beraberinde yazılımlarda ortaya çıkan hatalar ile bu
hataları düzeltme maliyetlerinin artmasıdır [1][2].
Yazılım projelerinde ortaya çıkan hataların önceden tespit edilip düzeltilmesi
öngörülen maliyeti ve proje süresini aşma risklerini azaltır. Ortaya çıkması muhtemel
hataları mümkün olduğu kadar erken tespit edebilmek için, verimli ve etkili bir test
planının uygulanması gerekir. Yazılım ölçütlerinin etkili kullanılmasıyla daha erken
aşamalarda kod analiz edilip, hata yatkınlığıyla ilgili fikir sahibi olunabilir, gerekirse
önlem alınabilir.
113
Yazılım hata ölçütleri, bir önceki yazılımın hatalarını kullanarak bir sonraki
yazılımın hatalarını tahmin etmek için kullanılır. Yazılım hata tahmin yöntemleri
sayesinde yazılımdaki hataların, kaynak kodun bazı özellikleri incelenerek tespit
edilmesi mümkündür. Günümüzde yazılım hata tahmini için çeşitli sınıflandırma
algoritmaları geliştirilmiştir [3][4].
Sınıflandırma, nesneleri önceden tanımlanmış bilgilere ve bulunduğu duruma göre
ilgili kategoriye atama anlamına gelir. Başka bir ifade ile sınıflandırma, geçmişte
toplanan verilerin hangi sınıfa ait olduğu bilindiğinde, yeni gelen verinin hangi sınıfa
ait olduğunu bulma işlemidir [5]. Sınıfı bilinen nesneler ile (öğrenme veri seti) bir
model kurulur. Kurulan model öğrenme kümesinde yer almayan nesnele ile (test veri
seti) test edilerek performansı ölçülür. Literatürde karar ağaçları, bayes
sınıflandırıcıları, kural-tabanlı sınıflandırıcılar, yapay sinir ağları, k-en yakın komşu
sınıflandırıcıları, destek vektör makinası ve kolektif öğrenme yöntemleri gibi
sınıflandırma algoritmaları kullanılmaktadır.
Bu çalışmada, "Chidamber and Kemerer (CK)" ve "Object Oriented (OO)" yazılım
ölçütlerine sahip dört veri seti üzerinde, dört temel sınıflandırıcı ile bunların
AdaBoost ve Rotation Forest kolektif sınıflandırma modelleri kullanılarak yazılım
hata kestirimi yapılmıştır.
Bildirinin ikinci bölümünde temel sınıflandırma algoritmaları ile ilgili bilgilere yer
verilmiştir. Üçüncü bölümde, kolektif sınıflandırma içerisinde en çok kullanılan
algoritmalar ele alınmıştır. Dördüncü bölümde ise deneysel çalışma, kullanılan veri
seti, deneysel ölçütler ve değerlendirme sonuçları yer almaktadır. Son olarak, beşinci
bölümde ise elde edilen sonuçlar değerlendirilmiştir.
2 Sınıflandırma Algoritmaları
Bütün sınıflandırma algoritmalarında hedeflenen temel nokta, minimum veri ile
maksimum sayıda verinin sınıflanmasıdır. Sınıflandırma algoritmalarının
kullanılmasındaki temel amaç, minimum zamanda ve minimum eğitim verisi ile
tahmin yapabilmektir [6]. Çok farklı sınıflandırma türleri olsa da genel olarak yedi
farklı sınıflandırma türü vardır. Bunlar; Karar Ağaçları (Decision Trees), Kural-
Tabanlı (Rule-Base), En Yakın Komşu (Nearest-Neighbor), Bayes, Yapay Sinir
Ağları (Artificial Neural Network), Destek Vektör Makinesi (Support Vector
Machine), Kolektif Sınıflandırma (Ensemble Classifier) olarak adlandırılmaktadır.
Karar ağaçları (decision trees), veri setlerinin sınıflandırılması için kullanılan temel
bir yöntemdir. Oluşturulması ve sonuçlarının yorumlanması kolay olduğu için pek
çok farklı veri setinde kullanılmıştır. Dört temel adımdan oluşmaktadır. Eğitim veri
setinin oluşturulması ile kurallar bütünü oluşturulur. Seçilen özellikler ile kök düğüm,
iç düğüm ve yapraklar belirlenir. Seçilen her bir nitelik için beklenmeyen durumun ve
belirsizliğin ortaya çıkma olasılığı kullanılarak bilgi kazancı hesaplanır. En yüksek
bilgi kazancı oranı kök olarak belirlenir [7]. Karar ağaçlarındaki en önemli sorun
oluşturulacak karar ağacının kök, düğüm, iç düğüm ve yapraklarının belirlemesindeki
zorluktur. Bu sorunun aşılması için çeşitli algoritmalar geliştirilmiştir. Bunların
başında belirsizlik olasılığının ölçümü için kullanılan entropi algoritmaları
114
gelmektedir. Diğerleri ise CART denilen regresyon ve sınıflandırma ağaçları
içerisinde yer alan Twoing ve Gini algoritmaları ile bellek tabanlı sınıflama
algoritmalarıdır [8].
Kural-tabanlı sınıflandırmada (rule-based classifier), bilgi veya bilgi bitlerini
temsil etmek için kurallar kullanılmaktadır. Bir kural-tabanlı sınıflandırıcı,
sınıflandırma için IF-THEN kuralları kümesini kullanır. Bir IF-THEN kuralında, IF
koşulu THEN sonucu ifade etmektedir [9].
Sınıfların belirlenmesinde kullanılan diğer bir temel bir sınıflandırma türü ise En
Yakın Komşu (Nearest Neighbor) yöntemidir. Hangi sınıfa ait olduğu bilinmeyen
veriyi tanımlamak için kendisine en yakın olan sınıf üyesi öklit yöntemi kullanılarak
belirlenir. Bu işin gerçekleştirilebilmesi için bütün veriler n boyutlu bir uzay
içerisinde olacak şekilde yerleştirilir ve hangi sınıfa ait olduğu belli olmayan veri,
kendisine en yakın sınıfın üyesi olarak belirlenir [10].
Bayes Sınıflandırma (Bayes Classifier), istatistiksel bir yaklaşımla hangi verinin
hangi sınıfın üyesi olduğunu bulmaya çalışan bir sınıflandırma türüdür. Kendi
içerisinde kural-tabanlı bir sistemi vardır. Temel kural göre verinin hangi sınıftan
olması gerektiğinin olasılığı hesaplanır [11].
Yapay Sinir Ağları (Artificial Neural Networks), verilerin karmaşık yapıya sahip
olduğu ve gürültü içerdiği durumlarda ve veriler arasındaki doğrusal olmayan
ilişkilerin öğrenilmesinde başarılı ve güçlü bir sınıflandırma yöntemidir [12]. Yapay
Sinir Ağlarının temelinde, insan beynine ait üstün karakteristikleri taklit ederek,
yazılımları tanıma-öğrenme süreçlerinin performanslarını arttırmak vardır.
Destek Vektör Makinesi (Support Vector Machine), istatistiksel öğrenme teorisi
alanında ortaya atılan, Cortes ve Vapnik tarafından geliştirilmiş bir öğrenme
metodudur [13]. Destek Vektör Makinesi temel olarak, lineer olmayan örnek
uzayının, örneklerin lineer olarak ayrılabileceği bir yüksek boyuta aktararak farklı
örnekler arasındaki maksimum sınırın bulunması esasına dayanır.
Kolektif Sınıflandırmada (Ensemble Classifier) temel amaç, daha önceden farklı
sınıflandırıcılar tarafından elde edilen değerlerin bir araya getirilmesi ile bir sonuç
üretilmesidir. Bu işlem yapılırken diğer sınıflandırıcılara belli ağırlık puanları
verilerek hesaplama yapılmaya çalışılır. Burada asıl problem farklı sınıflama
algoritmalarını birleştirilmek ve hangi oranların kullanılacağına karar vermektir. En
büyük avantajı diğer yöntemlerin verilerini bir arada kullandığı için daha iyi değerler
elde edilebilmesidir [14]. Kolektif Sınıflandırma içerisinde yerine koyarak örnekleme
(bagging), hızlandırma (boosting), rotasyon ormanı (rotation forest) ve rastgele orman
(random forest) gibi çeşitli algoritmalar bulunmaktadır.
3 Kollektif Sınıflandırma Algoritmaları
Kolektif sınıflandırma içerisinde çeşitli algoritmalar bulunmaktadır. Bunlardan en çok
bilinen ve kullanılanları yerine koyarak örnekleme (bagging), hızlandırma (boosting),
rastgele orman (random forest) ve rotasyon ormanı (rotation forest) dır.
115
3.1 Yerine Koyarak Örnekleme
Breiman tarafından önerilen yerine koyarak örnekleme (bagging) algoritması, var
olan bir eğitim setinden yeni eğitim setleri türeterek temel öğreniciyi yeniden
eğitmeyi amaçlayan bir yöntemdir [15]. Bagging'de n adet örnekten oluşan eğitim
setinden yine n örnekli bir eğitim seti yerine koymalı rastgele seçimle üretilir. Bu
durumda bazı eğitim örnekleri yeni eğitim kümesinde yer almazken bazıları birden
fazla kez yer alırlar. Topluluktaki her bir temel öğrenici bu şekilde üretilmiş
birbirinden farklı örnekler içeren eğitim kümeleriyle eğitilirler ve sonuçları çoğunluk
oylaması ile birleştirilir.
3.2 Hızlandırma (Boosting)
Sınıflandırma açısından diğer önemli olan bir konuda hızlandırma (boosting)
yöntemidir. Bu yöntem sayesinde sınıflandırıcının bulmuş olduğu doğruluk değeri
arttırılabilir. Boosting yönteminde veriye ait bir önceki sınıflandırıcının doğru olarak
belirleyemediği veriler kullanılır. Hatalı veriler sonradan kullanılacak eğitim seti
içerisine tekrardan eklenerek daha doğru tahmin yapılmaya çalışılır. Bu yöntemde her
bir veri işlemi için bir ayarlama oranının hesaplanması vardır [16, 17]. Boosting için
en fazla kullanılan Adaboost algoritmasıdır.
3.3 Rastgele Orman (Random Forest)
Rastgele Orman (Random Forest - RF) bir kolektif sınıflandırma algoritmasıdır.
Breiman ve Cutler [18, 19] tarafından geliştirilmiştir. Sürekli olarak yeni
versiyonlarla güncellenmektedir. Temel olarak sınıflandırma ve regresyon için
kullanılmaktadır. Naif karar ağacına benzer bir sisteme sahiptir. Temel farkı eğitim
sürecinde birçok ağacın üretilmesine izin vermesidir. RF metodunda, ormanı
oluşturan karar ağaçları Bootstrap yöntemi kullanılarak seçilen farklı örneklerden bir
araya gelir. Bu yöntem için orijinal veri seti kullanılır. Veri setinin eğitimi kısmında
çoklu karar ağaç yapısı kullanılır.
3.4 Rotasyon Ormanı (Rotation Forest)
Rotasyon orman algoritması son yıllarda sınıflandırıcıların performansının arttırılması
amacıyla önerilen yeni nesil bir kolektif öğrenme algoritmasıdır [20]. Birden fazla
ağaç kullanılmakta olan bu algoritmasının çalışma prensibi rastgele orman
algoritmasına benzerdir. Rastgele orman algoritmasında olduğu gibi Bootstrap
algoritması bu algoritmada temel öğretici olarak kullanılmaktadır [21]. Rastgele
orman algoritmasından farklı olarak ormandaki her bir karar ağacının eğitiminde
kullanılacak veri seti, ana bileşen analizi yardımıyla belirlenir. Rotasyon orman
algoritması ile ormandaki karar ağaçlarının eğitimi aşamasında eğitim veri seti
rastgele alt kümelere bölünür ve her bir alt kümeye ana bileşenler analizi uygulanarak
özellik çıkarımı gerçekleştirilir.
116
4 Deneysel Çalışma
Bu bölüm içerisinde gerçekleştirilen deneysel çalışmalardan bahsedilmiştir.
4.1 Değerlendirme Kriterleri
Sınıflandırma modellerinin değerlendirilmesi için "Hata Matrisi (Confusion Matrix)"
kullanılmaktadır. Tablo 1’de Hata Matrisi görülmektedir.
Tablo 1. Hata Matrisi
Tahmin Edilen Sınıf
C1 (+) C2 (-)
C1(+) ∑ Pozitif TP FN
Gerçek Sınıf
C2(-) ∑ Negatif FP TN
Tablo 1’de görülen; TP: True Pozitif, FP: False Pozitif, FN: False Negatif, TN:
True Negatif değerlerini ifade etmektedir.
Başarım oranı (Accuracy – ACC), sınıflandırıcının sınıf ayırım yeteneğini
belirlemek için geniş çapta kullanılan bir ölçüttür. Algoritma tarafından doğru olarak
sınıflandırılan test örneklerinin yüzdesi olarak tanımlanır. ACC, sınıflandırıcı
performanslarının değerlendirilmesinde kullanılan temel ölçütlerden biridir [22].
Denklem 1’de verilen formül ile ACC oranı hesaplanır.
(𝑇𝑃+𝑇𝑁)
𝐴𝐶𝐶 = (1)
𝑃𝑜𝑧𝑖𝑡𝑖𝑓+𝑁𝑒𝑔𝑎𝑡𝑖𝑓
Alıcı İşletim Karakteristiği (Receiver Operating Characteric - ROC) ya da sade
biçimde ROC eğrisi; testin ayırt etme gücünün belirlenmesine, çeşitli testlerin
etkinliklerinin kıyaslanmasına ve uygun pozitiflik eşiğinin belirlenmesine olanak
sağlar [23]. Bir sınıflandırıcının yeterliliğini belirlemek için kullanılabilen pratik bir
yöntem, performansın tek bir değer ile ifadesidir. En yaygın kullanılan ölçüm ise,
ROC eğrisinin altında kalan alandır (Area Under Curve - AUC). AUC oranı ne kadar
büyük ise sınıflandırıcının başarım oranı da o kadar iyidir. AUC’nin olası değerleri
0.5’ten 1.0’a kadar değişim gösterir. Denklem 2’de verilen formül ile AUC oranı
hesaplanır.
1 (𝑇𝑃) (𝑇𝑁)
𝐴𝑈𝐶 = ( + ) (2)
2 𝑇𝑃+𝐹𝑁 𝑇𝑁+𝐹𝑃
4.2 Veri Setleri
Bu çalışmada Ambros ve arkadaşları [24] tarafından hata kestirimi amaçlı hazırlanmış
veri seti kullanılmıştır. Bu veri seti içerisinden toplam 3689 sınıfa sahip açık kaynak
kodlu 4 proje seçilmiştir. Sınıfların "Chidamber and Kemerer (CK)", "Object
117
Oriented (OO)" ve entropi gibi farklı ölçütlerine ek olarak sınıflardaki hata sayıları da
veri seti içerisinde yer almaktadır. Veri seti hakkındaki bilgiler Tablo 2’de verilmiştir.
Tablo 2. Veri setine ilişkin bilgiler
Yazılım Sınıf Sayısı Versiyon Sonraki Sürüm Hataları
Eclipse JDT Core
997 91 463
www.eclipse.org/jdt/core/
Eclipse PDE UI
1562 97 401
www.eclipse.org/pde/pde-ui/
Equinox framework
439 91 279
www.eclipse.org/equinox/
Apache Lucene
691 99 103
lucene.apache.org
4.3 Kaynak kod ölçütleri
Yazılımları doğru ölçümlemek, yazılımlardaki kaliteyi arttıracaktır. Yazılımların
ölçümünde kullanılmak üzere çeşitli yazılım ölçütleri üretilmiştir. "Chidamber and
Kemerer (CK)" ve "Object Oriented (OO)" ölçütler bunlardan bazılarıdır.
Sınıflandırma algoritmalarının dikkate aldığı her bir veri setine ait CK ve OO ölçütleri
Tablo 3’de verilmiştir.
Tablo 3. CK ve OO ölçütleri
No Tip Ölçüt Açıklama
1 CK DIT Kalıtım ağacı derinliği
2 CK WMC Ağırlıklı metot sayısı
3 CK CBO Nesneler arasındaki bağımlılık
4 CK NOC Sınıfları sayısı
5 CK RFC Sınıf yanıt sayısı
6 CK LCOM Metotların uyumsuzluğu
7 OO Fan-in Sınıfı referans eden diğer sınıfların sayısı
8 OO Fan-out Sınıf tarafından referans edilen diğer sınıfların sayısı
9 OO NOA Niteliklerin sayısı
10 OO NOPA Genel niteliklerin sayısı
11 OO NOPRA Özel niteliklerin sayısı
12 OO NOAI Kalıtım niteliklerinin sayısı
13 OO LOC Kod satır sayısı
14 OO NOM Metotların sayısı
15 OO NOPM Genel metotların sayısı
16 OO NOPRM Özel metotların sayısı
17 OO NOMI Kalıtım metotlarının sayısı
118
4.4 Değerlendirme Sonuçları
Tablo 4’de görüldüğü üzere literatürden dört temel sınıflandırıcı seçilmiştir.
Sınıflandırma yapılırken her bir sınıflandırıcı için tekli ve kolektif sınıflandırıcılar
kullanılmıştır. 4 ayrı veri seti üzerinde, seçilen bu dört temel sınıflandırıcı ile bunların
AdaBoost ve Rotation Forest kolektif sınıflandırma modelleri kullanılarak, yazılım
hata kestirimi yapılmıştır. Yapılan hata kestirimi sonucunda her bir proje için ayrı ayrı
elde edilen ACC ve AUC oranları Tablo 4’te sunulmuştur.
Tablo 4. Yapılan sınıflandırma sonucu elde edilen ACC ve AUC sonuçları
Eclipse Eclipse Equinox Apache
Sınıf Algoritma JDT Core PDE UI Framework Lucene
ACC AUC ACC AUC ACC AUC ACC AUC
Bayesian Logistic Reg. 0,72 0,57 0,86 0,50 0,66 0,70 0,90 0,50
Bayesian Logistic Reg.-
Bayes 0,72 0,55 0,85 0,73 0,66 0,69 0,90 0,50
AdaBoost
Bayesian Logistic Reg.-
0,83 0,67 0,86 0,56 0,74 0,72 0,91 0,53
Rotation Forest
Decision Table 0,84 0,75 0,85 0,61 0,69 0,77 0,90 0,62
Decision Table-
Rules 0,84 0,75 0,85 0,70 0,70 0,77 0,90 0,65
AdaBoost
Decision Table-
0,84 0,75 0,86 0,74 0,69 0,78 0,90 0,70
Rotation Forest
IBk 0,80 0,69 0,79 0,60 0,69 0,75 0,86 0,56
Lazy IBk - AdaBoost 0,80 0,69 0,79 0,58 0,69 0,75 0,86 0,54
IBk – Rotation Forest 0,81 0,77 0,83 0,70 0,70 0,79 0,86 0,64
J48 0,82 0,70 0,85 0,65 0,67 0,75 0,90 0,53
Tree J48 - AdaBoost 0,81 0,77 0,84 0,69 0,70 0,76 0,88 0,63
J48 - Rotation Forest 0,84 0,77 0,86 0,72 0,69 0,76 0,90 0,67
Dört farklı veri seti içinde ACC ve AUC oranlarına bakılmıştır. Toplam olarak 4
ayrı projenin 4 farklı kategorine baktığımızda 16 veriden 11 tanesinin kolektif
sınıflandırıcıların ACC metriğinde daha iyi olduğu görülmüştür. Öte yandan AUC
metriği temel alındığında kolektif öğrenme algoritmalarının diğer dört temel
algoritma ile kıyaslamalarında 16 veriden 15 tanesinde daha iyi olduğu görülmüştür.
Kolektif sınıflandırıcıların kendi içinde ACC oranlarına göre karşılaştırıldığında 16
veriden 11 tanesine Rotation Forest algoritmasın Adaboost algoritmasına göre daha
iyi olduğu görülmüştür.
119
5 Sonuç
Çalışmada dört temel sınıflandırıcı ile bunların AdaBoost ve Rotation Forest kolektif
sınıflandırma modelleri kullanılmıştır. 4 veri seti üzerinde toplam 12 adet
sınıflandırma modeli denenmiştir. Temel sınıflandırıcılar seçilirken farklı
kategorilerden olmasına dikkat edilmiştir. Çalışmada "bayes" kategorisinden
"Bayesian Logistic Regression" , "rules" kategorisinden "Decision Table", "lazy"
kategorisinden "IBk" ve "tree" kategorisinden "J48" sınıflandırıcıları seçilmiştir. Dört
farklı veri setinden özellikle "Bayesian Logistic Regression yönteminde Ensemble
Classifier yöntemleri daha başarılı olduğu görülmüştür. Genel olarak bakıldığında
ACC oranlarına göre yaklaşık %70 oranla kolektif sınıflandırma yöntemlerini
kullanmak daha iyi bir sonuç verdiği gözlemlenmiştir.
Kaynaklar
1. Song, Q., Sheppard, M., Cartwright, M., and Mair, C.: Software Defect Association Min-
ing and Defect Correction Effort Prediction. In: IEEE Transactions on Software Engineer-
ing, Vol.32, No.2, pp. 69-82 (2006).
2. Fenton, N., and Ohlsson, N.: Quantitative Analysis of Faults and Failures in a Complex
Software System. In IEEE Transactions on Software Engineering, Vol.26, No.8, pp. 797-
814 (2000).
3. Catal, C., Sevim, U., and Diri, B.: Software Fault Prediction of Unlabeled Program Mod-
ules. Proceedings of the World Congress on Engineering, Vol.1, London, UK (2009).
4. Catal, C., Diri, B.: Investigating the effect of dataset size, metrics sets, and feature selec-
tion techniques on software fault prediction problem. Elsevier: Information Sciences,
Vol.179, No.8, pp. 1040–1058 (2009).
5. Akman, M., Genç, Y., Ankaralı, H.: Random Forest Yöntemi ve Sağlık Alanında Bir
Uygulama. Türkiye Klinikleri J Biostat, 3(1), ss.36-48 (2011).
6. Akman, M.: Veri Madenciliğine Genel Bakış ve Random Forests Yönteminin İncelenmesi:
Sağlık Alanında Bir Uygulama. Yüksek Lisans Tezi, Ankara Üniversitesi, Ankara (2010).
7. Cha, S.H., Tappert, C.C.: A Genetic Algorithm for Constructing Compact Binary Decision
Trees. Computer Science Department, Pace University 861 Bedford Road, Pleasantville,
Journal of Pattern Recognition Research, New York, Vol.4, No.1, pp.1-13 (2009).
8. Özkan, Y.: Veri Madenciliği Yöntemleri. Papatya Yayıncılık Eğitim, 2. Basım (2013)
9. Han, J., Kamber, M., Pei, J.: Data Mining: Concepts and Techniques. Third Edition, Mor-
gan Kaufmann (2011).
10. Kırmızıgül Çalışkan, S., Soğukpınar, İ.: K-means ve K en yakın komşu yöntemleri ile
ağlarda nüfuz tespiti. 2. Ağ ve Bilgi Güvenliği Ulusal Sempozyumu, Girne (2008)
11. Nigam, K., McCallum, A., Thrun, S., Mitchell, T.: Learning to Classify Text from Labeled
and Unlabeled Documents. In: Proceedings of the Fifteenth National/Tenth Conference on
Artificial Intelligence/Innovative Applications of Artificial Intelligence, pp. 792-799
(1998).
12. Cortés, E., Martinez, M.G., Rubio, N.G.: Multiclass Corporate Failure Prediction by Ada-
boost.M1. International Advances in Economic Research, 13, Issue 3, pp. 301-312 (2007).
13. Cortes, C. and Vapnik, V.: Support-vector network. Machine Learning. 20, 273–297.,
(1995).
120
14. Augusty, S. M., Izudheen, S.: Ensemble Classifiers A Survey: Evaluation of Ensemble
Classifiers and Data Level Methods to Deal with Imbalanced Data Problem in Protein‐
Protein Interactions. Review of Bioinformatics and Biometrics, Volume 2 Issue 1 (March
2013).
15. Breiman, L.: Bagging predictors. Machine Learning, 24(2) (1996).
16. Schapire, R. E.: Theoretical Views of Boosting and Applications. In: Proceedings of the
10th International Conference on Algorithmic Learning Theory (1999).
17. Schapire, R. E.: A Brief Introduction to Boosting. In: Proceedings of the 16th International
Joint Conference on Artificial Intelligence (1999).
18. Breiman, L.: Random Forests. Machine Learning. 45 (1). pp.5–32 (2001).
19. Liaw, A.: Documentation for R package Random Forest. (2012).
20. Çölkesen, İ., Yomralıoğlu, T., Kavzoğlu, T.: Rotasyon Orman Algoritması ile Yüksek
Çözünürlüklü Multispektral Uydu Görüntülerinin Sınıflandırılması. V. Uzaktan Algılama
ve Coğrafi Bilgi Sistemleri Sempozyumu (UZALCBS 2014). İstanbul (2014).
21. Cingiz, M. Ö., Albayrak, A., Amasyalı, M. F.: Sınıflandırıcı Topluluklarının Gürültülü
Verilere Karşı Gürbüzlüğünün Değerlendirilmesi. Signal Processing and Communications
Applications Conference (SIU). (2013).
22. Ozcift, A., Gulten, A.: Classifier ensemble construction with rotation forest to improve
medical diagnosis performance of machine learning algorithms. Computer Methods and
Programs in Biomedicine. Vol. 104. Issue 3. pp. 443–451 (2011).
23. Faraggi, D., Reiser, B.: Estimation of the area under the ROC curve. Stat Med. 21. pp.
3093-3106 (2002).
24. D'Ambros, M., Lanza, M., Robbes, R.: An extensive comparison of bug prediction ap-
proaches. In MSR '10: Proceedings of the 7th International Working Conference on Min-
ing Software Repositories. pp. 31-41 (2010).
121