SlideShare a Scribd company logo
1 of 47
Download to read offline
i
T.C.
GEBZE TEKNİK ÜNİVERSİTESİ
Bilgisayar Mühendisliği Bölümü
SKYTREE İLE VERİ
ANALİZİ
Ali Ozan TAÇALAN
Danışman
Yrd. Doç. Dr. Yakup GENÇ
Mart, 2016
Gebze, KOCAELİ
ii
iii
T.C.
GEBZE TEKNİK ÜNİVERSİTESİ
Bilgisayar Mühendisliği Bölümü
SKYTREE İLE VERİ
ANALİZİ
Ali Ozan TAÇALAN
Danışman
Yrd. Doç. Dr. Yakup GENÇ
Mart, 2016
Gebze, KOCAELİ
iv
Bu çalışma ..../..../2016 tarihinde aşağıdaki jüri tarafından Bilgisayar Mühendisliği
Bölümünde Lisans Bitirme Projesi olarak kabul edilmiştir.
Bitirme Projesi Jürisi
Danışman Adı Yrd. Doç. Dr. Yakup Genç
Üniversite Gebze Teknik Üniversitesi
Fakülte Mühendislik Fakültesi
Jüri Adı Doç. Dr. Yusuf Sinan Akgül
Üniversite Gebze Teknik Üniversitesi
Fakülte Mühendislik Fakültesi
Jüri Adı Doç. Dr. Fatih Erdoğan Sevilgen
Üniversite Gebze Teknik Üniversitesi
Fakülte Mühendislik Fakültesi
v
ÖNSÖZ
Bu projenin gerçekleştirilmesinde öncelikle beni destekleyip yol gösteren Yrd. Doç.
Dr. Yakup GENÇ danışman hocama, jüri hocalarım olan Doç. Dr. Yusuf Sinan
Akgül ve Doç. Dr. Fatih Erdoğan Sevilgen’e ve ayrıca Inosens’teki çalışanlara, bana
desteklerinden dolayı teşekkür ederim.
Mayıs, 2016 Ali Ozan TAÇALAN
vi
İÇİNDEKİLER
ÖNSÖZ................................................................................................... V
ŞEKİL LİSTESİ............................................................................... VIII
TABLO LİSTESİ .................................................................................IX
KISALTMA LİSTESİ .......................................................................... X
SEMBOL LİSTESİ..............................................................................Xİ
ÖZET...................................................................................................XII
SUMMARY ...................................................................................... XIII
1. GİRİŞ ................................................................................................14
2. EYLEM RAPORU.....................................................................17
2.1. PROJE GEREKSİNİMLERİ...................................................17
2.2. SİSTEM MİMARİSİ.................................................................19
2.3. RASTGELE AĞACIN YAPISI................................................20
2.3.1 KARAR AĞAÇLARI ............................................................20
2.3.2 RASTGELE AĞAÇ ...............................................................20
2.4. İŞ PLANLARI............................................................................22
2.5. SMÖS - HS KARŞILAŞTIRMASI ..........................................23
2.6. APACHE SPARK PERFORMANS TESTİ...............................26
2.6.1. ÖZELLİK VEKTÖRÜ OLUŞTURMA...............................26
2.6.2 SINIFLANDIRMA MODELLERİNİ UYGULAMA .........28
2.7. R PERFORMANS TESTİ ........................................................30
2.8. KİŞİSEL RDF SINIFLANDIRCIMIN PERFORMANS
TESTİ....................................................................................................33
2.8.1 TASARIM...............................................................................33
2.8.1.1 GİRDİ FORMATI ..............................................................33
2.8.1.2 ÇALIŞMA ŞEKLİ ..............................................................34
vii
2.8.2 UYGULAMA..........................................................................35
2.8.3 ANALİZ ..................................................................................36
2.9. BAŞARI KRİTERLERİ............................................................38
3. SONUÇ VE TARTIŞMA ................................................................39
KAYNAKLAR......................................................................................43
EKLER..................................................................................................45
EK-1.......................................................................................................46
viii
ŞEKİL LİSTESİ
Şekil 1 İki Sistemin Nasıl Çalıştırılacağı Üstüne Genel Yapı………………..……15
Şekil 2 Modelin Oluşturulması ve Test Edilmesi………………………………….19
Şekil 3 Karar Ağacı Kuralları Örneği……………………………………………...20
Şekil 4 Rastgele Karar Ormanının Yapısı….………….…………………………...22
Şekil 5 Veri Düzenlemesi….………….…………………………….……………...23
Şekil 6 Model ve Test Uygulama Örneği….….………………….………………...23
Şekil 7 Özellik Vektörü Yapısı….………….……………………………………...27
Şekil 8 Libsvm Formatı…………………………………..….………….………….27
Şekil 9 Spark RDF Parametreleri………………………………………………….28
Şekil 10 Özellik Vektör Elemanlarından Modeller Oluşturma….………….……...29
Şekil 11 Veri Yığınındaki Bölümler….…………………………….……………...29
Şekil 12 Oluşturulmuş Örnek Ağaç Yapısı……………………….…………...…...29
Şekil 13 R Platformuna RDF Kurulumu…….….….…………….………………...31
Şekil 14 R RDF Model Oluşturma Zamanları İlişkisi……………………………...31
Şekil 15 R RDF Model Oluşturma Zaman Analizi……………………………..….32
Şekil 16 RDF Girdi Formatı…….….….…………….………………………...…...34
Şekil 17 Düzenlenmiş JVM Parametreleri………………………………….……...35
Şekil 18 Java ile Yazılmış RDF İsabetlilik Sonuçları……...………….………..….37
Şekil 19 Modellerin Oluşturulma Süreleri….……….………………………...…...40
Şekil 20 Düzenlenmiş JVM Parametreleri………………………………….……...41
Şekil 21 Java ile Yazılmış RDF İsabetlilik Sonuçları……...………….………..….41
ix
TABLO LİSTESİ
Tablo 1 Genel İş Planı……………………………………………………………...22
Tablo 2 SMÖS – HS Sonuçlarının Karşılaştırılması……………………………….25
Tablo 3 Spark Test Sonuçları……………………...……………………………….30
x
KISALTMA LİSTESİ
UML : Unified Modeling Language (Birleşik Modelleme Dili)
GTÜ : Gebze Teknik Üniversitesi
ABD : Amerika Birleşik Devletleri
SMÖS : Skytree Makine Öğrenme Sistemi
RDF : Random Decision Forest (Rastgele Karar Ormanı)
HS : Hidden Slate Veri Analiz Sistemi
CLI : Komut Satırı Arayüzü (Command Line Interface)
MÖ : Makine Öğrenmesi
DP : Doğru Pozitif
DN : Doğru Negatif
YP : Yanlış Pozitif
YN : Yanlış Negatif
JVM : Java Virtual Machine (Java Sanal Makinesi)
RDD : Resilient Distributed Dataset (Esnek Dağıtılmış Veri Kümesi)
xi
SEMBOL LİSTESİ
P : Precision (Kesinlik*)
R : Recall (Yeniden Çağırma*)
CF : Confusion Matrix (Karışıklık Matrisi*)
M : Veri kümesi üzerindeki özellik sayısı
Ms : Rastgele ağaç için seçilecek M içinden rastgele özellik sayısı
* Bu İngilizce ifadelerin anlamları Türkçe’ye dönüştürüldüklerinde aynı anlam bütünlüklerini
sağlamamalarına rağmen fikir vermesi açısından Türkçe karşılıklarına da yer verilmiştir.
xii
ÖZET
Günümüzde makine öğrenme metodları verileri analiz edip yorumlamada çok
önemli bir konuma sahiptir. Bundan ötürü bu alana yoğun bir ilgi bulunmaktadır. Bu
yoğun ilgi aynı zamanda büyük şirketlerin bu alanda yatırım yapmasına ve
danışmanlıklar aramasına sebep olmaktadır.
Gebze Teknik Üniversitesi 2016 lisans bitirme projesi olarak bir makine öğrenme
metodu olan rastgele karar ağaçlarını kullanılmıştır. Bunun için günümüzdeki
mevcut birkaç veri analiz platformları kullanılmıştır. Bu platformlar arasında
Hidden Slate, Skytree Express, Apache Spark, R dili metodları, kendi yazdığım
sınıflandırıcı bulunmaktadır.
Projede karmaşık veri yığınları düzenlenerek en uygun modeller oluşturulmuştur.
Her platform için yapılan testler belirlenen ölçütlere göre karşılaştırılmıştır.
xiii
SUMMARY
Nowadays, machine learning algorithms have an important position to analyze and
to interepret the data. Hence, there is an intense interest in this field. This intense
interest also leads large companies to invest in this area and seek for consultancy.
A type of machine learning algorithm, random decision forest, is used to achieve the
project as my Gebze Technical University 2016 undergraduate project. Some data
analysis platforms are used to do this. These platforms include Hidden Slate, Skytree
Express, Apache Spark, R language methods, classifier that I wrote.
The most appropriate models for organizing complex data in chunks of the project
have been created. The tests were compared according to the criteria specified for
each platform.
14
1. GİRİŞ
Bu projede ‘Skytree Makine Öğrenme Sistemi’nin (SMÖS) [1] ölçeklenebilirliği
üzerine bir çalışma yapılmıştır. Elde edilen sonuçlar doğrultusunda Skytree
şirketinin sunduğu hizmete alternatif hizmetler ve bunların karşılaştırılması
sunulmuştur.
‘Skytree’, ABD’nin California eyaleti merkezli bir bir bilişim şirketidir. SMÖS, 5
seneden fazla bir sürede varlığını sürdürüp diğer mevcut makine öğrenme
sistemleri(Apache Spark vs.) arasında popülerliğini artırmaya başlamış olup PayPal,
Samsung, MasterCard gibi büyük şirketlere bu konuda hizmet vermektedir [2].
Projede SMÖS’nin ölçeklenebilirliği üzerine bir çalışma yapılmıştır. Bunun dışında
seçilecek birkaç platform üzerinden de benzer ölçeklenebilirlik testleri yaparak
alternatifler sunulmuştur. Ölçeklenebilirlik, artan talepler karşısında kapasite
artırıldığı zaman buna bağlı performansın sabit kalması veya daha da iyileşmesi
olarak tanımlanır. Bir sistemin gerçekten ölçeklenebilir olduğunu göstermek o
sistemin çok büyük verilere uygulandığı zaman hem maliyet hem de zaman
açısından avantajlı olduğunu göstermiş olur. Bu da gerek kullanıcı açısından gerek
de yatırımcı açısından bu ifadenin ne kadar önemli olduğunu ifade etmiş olur.
1.1. PROJE TANIMI
SMÖS üzerinde çeşitli ‘çevirim dışı’ veri topluluklarıyla yapılan denemeler sonucu
sistemin performansını ifade etmek projenin ana amacı içerisinde yer almaktadır.
Aynı veri toplulukları ile Inosens[3] isimli İstanbul Türkiye merkezli şirketin
Apache Spark[4] tabanlı ‘HiddenSlate Veri Analiz Sistemi’(HS) üzerinde denemeler
yaparak elde edilen performans ile SMÖS performansını karşılaştırarak
ölçeklenebilirlik üzerine bir yargıya ulaşmak projenin birincil amacıdır. Bu veriler
Inosens’ten alınacak olup imzalanan gizlilik anlaşması gereği içeriğinden
bahsedilmeyecek olup çevirim dışı olarak isimlendirilmiştir.
15
Projenin ikincil bir hedefi olarak SMÖS ve HS’in performans karşılaştırmalarına ek
olarak diğer mevcut sistemlerin kendi aralarında karşılaştırmalarını sunup bir
yargıya ulaşmak yer almaktadır. Bu karşılaştırmalar bütünü Inosens’e sunulup en
verimli sistem için analiz sunulmuştur.
Karşılaştırmalarda esas olarak platformların kendi random decision forest (RDF)
uygulamaları kullanılacak olup RDF’nin ayrıntılı tanımlamalarından 2.3. bölümde
bahsedilmiştir.
Şekil 1. İki Sistemin Nasıl Çalıştırılacağı Üstüne Genel Yapı
İlk olarak Inosens’ten temin edilecek ham veri yığını, RDF modellemeleri
kullanılarak bölümlendirilmiştir. Ham veri yığını platformların anlacağı bir düzene
sahip olmayan veri yığınlarına denir. Bu verilerle iş yapılabilmesi için öncelikle
düzenlenmeleri gerekmektedir. Bu ham veri yığınları bölümlendirilerek eğitilmek
üzere (çalışılmış veri) ve tahmin edilmek üzere (büyük boyuttaki veri) iki kısma
ayrılmıştır (Şekil 1). Farklı veri yığınları ve farklı platformlar üzerinde benzer
işlemler uygulanmıştır.
16
1.2. PROJENİN NEDEN ve AMAÇLARI
Projenin başlatılma nedenleri arasında sektörde yeni sayılabilecek ve HS platformu
ile aynı hizmeti sunan SMÖS’nin performansını belirleme ihtiyacı yatmaktadır.
Böylelikle HS’in, varsa eksikliklerinin geliştirilmesi için gereken adımlar
atılabilecektir.
Ayrıca Inosens şirketine, SMÖS dışında alternatifler sunarak bunlar arasında hem
HS’nin hem de SMÖS platformlarına alternatif ölçeklenebilir sistemler sunmak
projenin ikincil amaçları arasında yer almaktadır.
Bu proje sayesinde aşağıdaki başarımlar elde edilecektir:
- SMÖS’nin performansını HS ile karşılaştırmak.
- SMÖS’nin HS içine entegre edilebilirliğini incelemek, yapılabilir ise
gerçekleştirmek.
- Alternatif platformlarda yapılacak testlerle HS ve SMÖS sistemlerinden
başka bakış açıları sunularak ölçeklenebilir platform önerileri sunmak.
Alternatif platformlar için:
o Apache Spark’ın RDF modellemesi,
o R Dilinin RDF modellemesi,
o Java kullanarak yazdığım RDF sınıflandırıcısı, sistemlerinin
uygun adaylar olacakları belirlenmiştir.
- Karşılaştırmalar sonucu elde edilen verileri değerlendirerek projedeki ana
iki platformun (SMÖS ve HS) ve ayrıca diğer platformların kendi
aralarında performans karşılaştırmaları incelenmiş olacaktır.
Genel not:
SMÖS ve HS, kapalı sistemler oldukları, yani düzenleme (kod değiştirme) gibi
imkânlar sunmadıkları için HS ile bütünleştirme hedefi gerçekleştirilememekle
beraber bulut üzerinden dağıtık çağırılma işlemi gerçekleştirilememiştir. Çünkü
dağıtık çağırma işlevleri sadece kendi aracılıkları ile bir hizmet olarak
sunulmaktadır. Bu yüzden diğer platformlarda uygulanan testler ve sonuçları
Inosens’e alternatif sunabilmek adına yapılmıştır. Dolayısıyla bu iki platform kendi
aralarında, diğer üç platform kendi aralarında değerlendirilmiştir.
17
2. EYLEM RAPORU
Bu başlık altında proje boyunca yapılan işlerin ayrıntılı açıklamaları bulunmaktadır.
İşlerin zaman olarak dağılımları 2.4. bölümdeki Tablo 1’de incelenebilir.
2.1. PROJE GEREKSİNİMLERİ
Bu projede başarılması gerekenler:
- Veri yığınlarının veri analiz platformların işleyebileceği uygun
formatlara dönüştürülmesi.
- Eğitilecek ve çalışılacak veri toplulukları için (‘dataset’) hazırlanıp
etiketlerinin (‘label’) oluşturulması.
- Veri topluluklarının ve onlara ait etiketlerinin yardımıyla RDF tabanlı [5]
bir model oluşturmak.
- Test verisini modele uygulayıp etiketler elde etmek.
- Elde edilen etiketlerin doğru tahmin edilme oranını ifade etmek
(doğruluk, accuracy).
- Java dili üzerinde RDF tabanlı sınıflandırıcı yazmak.
- Aynı işlemlerin her diğer platform için de gerçekleştirilmesi.
- İşlenmiş veri setlerinin bulut üzerinden RDF kullanılarak dağıtık
çağırılması.
18
Bunların sağlanması için gerekli ihtiyaçlar:
- Skytree Express; Skytree şirketinin ücretsiz olarak sunduğu makine
öğrenme platformu
- Hidden Slate Veri Analiz Sistemi; Inosens şirketinin üzerinde çalıştığı
Spark tabanlı makine öğrenme platformu
- Apache Spark, açık kaynak küme halindeki verileri hesaplama platformu
- R Programlama Dili, içindeki RDF modellemesi
- RStudio
- Sunucularla ssh bağlantısı üzerinden iletişim kurabilmek için putty ve
puttygen
- Veri yığınlarının dağıtık hesaplanabilmesi için Amazon AWS
- Inosens şirketinden temin edilecek çeşitli çevirim dışı veri toplulukları
- Veri düzenlemelerini otomatikleştirmek ve kendi yazacağım RDF
sınıflandırıcısını derleyebilmek adına Java platformu
19
2.2. SİSTEM MİMARİSİ
Sistem mimarisi Şekil 2 ve aşağıdaki maddeler üzerinden açıklanmıştır:
- Projeyi gerçekleştirebilmek için eldeki ham veri, sistemlerin
anlayabileceği formatlara Java’da yazılan kodlarla dönüştürülecektir.
- Dönüştürülen veri toplululukları ‘çalışılacak’ ve ‘test edilecek’ veri
topluluğu olarak ayrılacaktır.
- Çalışılacak veri topluluğu girdisiyle RDF modeli oluşturulacaktır.
- Deneme verisine model aracılığı ile etiketler üretilecektir.
- Bu etiketlerin doğruluğu önceden var olan deneme etiketleriyle
karşılaştırarak CF veya doğruluk oranı hesaplanıp, performans
değerlendirmesi yapılacaktır.
Şekil 2. Modelin Oluşturulması ve Test Edilmesi
20
2.3. RASTGELE AĞACIN YAPISI
Bu bölümde platformların karşılaştırılma esası olarak seçilen RDF’nin, okuyucuya
daha anlaşılır gelebilmesi adına tanımı, neden seçildiği ve yapısı üzerine bilgilerden
bahsedilecektir. Bunun için öncelikle karar ağaçları denilen modelleme çeşidi
hakkında ön bilgiye sahip olmanın RDF’nin anlaşılırlığı konusunda daha faydalı
olacağını düşünmekteyim. Çünkü temelde RDF denilen sınıflandırma algoritması
rastgele oluşturulmuş karar ağaçlarından oluşmaktadır.
2.3.1 KARAR AĞAÇLARI
Karar ağacı denilen veri yapısı, düğümlerden oluşan ve her bir düğümün bir kararı,
yani sınıflandırmayı temsil ederek karmaşık bir veri yığınının en iyi şekilde
parçalara ayrıştırılmaya çalışılarak ifade edildiği, graf temelli bir modelleme
çeşididir. Ağaçların sahip olduğu kök, ara düğümler ve yaprak yapısına sahiptir. Bu
düğümler oluşurken bir çeşit karar verme kuralları uygulanır [6]. Bu kurallar bir
bağlaç görevi görerek belirli koşullarda elde edilecek sonucu ifade eder (Şekil 3).
Şekil 3. Karar Ağacı Kuralları Örneği
2.3.2 RASTGELE AĞAÇ
Rastgele ağaç, rastgele karar ormanları (RDF) denilen veri modelleme çeşidinin
temelinde yatan bir kavramdır. Toplu öğrenme (ensemble learning) olarak
adlandırılan bir temel algoritmaya sahip olmakla beraber sınıflandırma, regresyon
vb. işlerde kullanılmaktadır. Toplu öğrenme, aynı veri topluluğu için birden fazla
öğrenme algoritması kullanarak elde edilen sonuçların ortalamasının daha iyi bir
tahmin etme performansına sahip olduğunu ifade eden öğrenme algoritmalarıdır
[7][8]. Proje için birden fazla değişik algoritma kullanmak yerine RDF’in özelliği
eğer durum1 ve durum2 ve durum3 ve … o halde sonuç1
21
olan birden fazla rastgele ağaçtan yararlanılarak ortalama değerlendirmesi
yapılmıştır.
Her ağaç için bootstrap birleştirmesi [9] denilen bir metodla; girdi verisi üzerinden,
girdi verisi büyüklüğünde, M özellik içinden Ms kadar özellik rastgele seçilip,
seçilen bu vektörler en uygun bölme algoritması [10] uygulanarak rastgelelik işlemi
sağlanmış olur.
Oluşturulacak ağaç sayısı kullanıcı tarafından önceden belirtilmelidir. Çünkü RDF
en iyi ağaç sayısı bilgisine sahip değildir, bunun için önceden testlerin yapılmış
olması ve ince ayarlamaların uygulanmış olması beklenir. Belirtilen ağaçların
oluşturduğu topluluğa rastgele orman denilmektedir. Her ağaç kararları (Ms)
rastgele seçilerek ve bu özellikler için rastgele vektörler seçildiği için oluşturulan
ağaçların birbirine benzeme olasılığının çok düşük olması (rastgelelik özelliği)
RDF’in toplu öğrenme algoritmasını uygulayabilme açısından uygun bir aday
olduğunu göstermektedir.
X verisinden oluşturulan ağaçlardaki aynı özelliklerden oluşan düğümlerin (her
katmandaki turuncu renkler) sınıflandırılmaları birleştirilerek (genelleme yapılarak,
çoğunluğa bakılarak) elde edilen son sınıflandırma negatif(aykırı, outlier) verilerden
oluşmuş başarısız sınıflandırmaların elenerek pozitif Y sınıflandırmaların ortaya
çıkmasını amaçlamaktadır (Şekil 4).
Özetlenecek olursa RDF modellemesinin seçilmesinin nedenleri aşağıda
sıralanmıştır [11]:
 Karmaşık ve büyük verileri kolay yorumlayabilmesi
 Aykırı verilere karşı güçlü bir duruş sergilemesi
 Karar verme kuralları oluşturulduktan sonra(model oluşturma), tahmin etme
işlemlerini hızlı yapması
 Veri yığınının iç yüzü hakkında değerli bilgiler verebilmesi
Sıralanan bu sebeplerden ötürü sahip olunan karmaşık, seyrek dağılmış bilgileri
içeren ve büyük veri yığınını etkili bir şekilde analiz edip sonuçların rahatça
22
karşılaştırabileceği bir modelleme türü olmasından dolayı projemdeki kıyaslamalar
için RDF seçilmiştir.
Şekil 4. Rastgele Karar Ormanının Yapısı
2.4. İŞ PLANLARI
Proje için belirlenen yolun uygulanacağı zaman aralıkları Tablo 1’de belirtilmiştir.
Bu zaman aralıkları tahmini olup yol gösterme amaçlı oluşturulmuştur.
Mart Nisan Mayıs
Verinin Düzenlenmesi
RDF Modelleri Oluşturma
Test Verisinin Denenmesi
Diğer Platformlarda Uygulama
Tablo 1. Genel İş Planı
23
2.5. SMÖS - HS KARŞILAŞTIRMASI
Inosens’ten kullanılacak çevrim dışı veri
elde edilmiştir. Çevirim dışı veri bir
internet sitesindeki kullanıcılarla alakalı
çerez temelli bilgileri içermektedir. Genel
amaç bu veri topluluğuna makine öğrenme
algoritmalarını uygulayarak hangi
kullanıcıların mevcut bilgilerine ‘çalışarak’
gelecek zamanlarda hedef kullanıcı
kitlelerini belirlemektir. Bunu
gerçekleştirmek hem mevcut hizmetlerle
ilgilenmeyen kullanıcıların hedeften
çıkarılmasını sağlayacak hem de daha
sağlıklı bir kullanıcı odaklı hizmet
sunulacaktır. Inosens ile yaptığım anlaşma
gereği verinin ismini ya da alakalı
olduğu şirketleri paylaşmamam
gerekmektedir.
Çevrim dışı veri SMÖS’nin
anlayacağı şekilde düzenlenmiştir.
Bunun için öncelikle ‘header’ olarak
adlandırılan, veri topluluğu hakkında
özet sayılabilecek bilgileri içeren
dosya oluşturulmuştur. Daha sonra
oluşturulan bu başlık dosyası ile ham
generate-header.sh 
-file Data _Train 
-header_out Data _Train.header 
-delimiter COMMA 
-label_index 6 
-use_column_names 
-ignore_inconsistent_rows 
-missing_value ? 
-id_index 1
convert-data.sh 
-file Data_Train 
-header_in Data_Train.header 
-ignore_lines 1 
-label_index 6 
-id_index 1 
-ignore_missing 
-rare_words_pct 10.0 
-stop_words_pct 15.0 
-ignore_new_words 
-ignore_out_of_range 
-data_out Data_Train.st 
-labels_out Data_Train.labels
Şekil 5. Veri düzenlenmesi
skytree-server rdf 
--training_in Data_Train.st 
--training_labels_in Data_Train.labels 
--holdout_ratio 0.2 
--num_trees 5:5:100 
--imbalance
skytree-server rdf 
--training_in Data_Train.st 
--training_labels_in Data_Train.labels 
--testing_in Data_Test.st 
--num_trees 35 
--num_dimensions 3 
--testing_objective accuracy 
--imbalance 
--probability_threshold 0.01 
--model_out Data_Model 
--probabilities_out probabilities.simple 
--labels_out Data_Test.labels
Şekil 6. Model ve test uygulama örneği
24
veri topluluğu SMÖS’nin anlayacağı formata otomatik olarak dönüştürülmüştür. Bu
işlemleri içeren örnek CLI komutları Şekil 5’te ifade edilmiştir.
Veri seti ve hangi sınıfa ait olduğunu belirten etiketler oluşturulduktan sonra bu
bilgiler aracılığı ile bir MÖ modeli oluşturulması gerekmektedir. MÖ modeli olarak
RDF kullanılacağı daha önce de belirtilmişti. Modeli oluşturmadan önce
verebileceği en iyi performans ayarları bilinirse doğal olarak model en iyi
performansı verecektir. Bu ince ayarlamaları içeren örnek CLI komutu Şekil 6’da
mevcuttur. Bu komut ile SMÖS’nin kendi sunmuş olduğu bir uygulama olup bu
komutun çıktısında pek çok olasılığı değerlendiren, bu olasılıkların sonuçlarını
kullanıcıya ifade eden bilgilerle modelin daha iyi bir şekilde oluşturulmasını
hedeflenir.
Elde edilen ‘tavsiye’ parametreler aracılığı ile en başarılı sonucu verecek RDF
modeli oluşturulmaya çalışıldı. Bu hedefe, ayarlara çeşitli parametreler uygulanarak
(el ile) ve en başarılı sonuçlar denenerek hassas ayarlamaların yapılmasıyla ulaşıldı.
Bu komut sonucunda,
 Çevirim dışı veri esas alınarak RDF modeli,
 Test verisini sınıflandıran etiketler,
 Bu etiketlerin yüzde cinsiden doğruluğunu ifade eden olasılık bilgileri, elde
edilmiş olur.
Analiz:
Inosens şirketinin HS hakkında bana sağladığı performans verilerine ek olarak, az
önce anlatılan esaslar temel alınarak elde edilen SMÖS değerleri Tablo 2’de ifade
edilmiştir [12]. Buna dayanarak öncelikle tablodaki birkaç kavramı, Türkçe
karşılıklarının asıl anlamlarını yitirdikleri düşünüldüğünden ötürü açıklanma ihtiyacı
duyulmuştur:
- P: DP/(DP+YP) değerine eşittir, doğru olan ve doğru olarak tahmin edilen
değerlerin, doğru olarak seçilen değerlere oranını ifade eder.
25
- R: DP/(DP+YN) değerine eşittir, doğru olan ve doğru olarak tahmin edilen
değerlerin, doğru olarak sınıflandırılan etiketlere oranını ifade eder.
- CF: Sırasıyla DP, YP, YN, DN değerlerini içeren karışıklık matrisidir.
HS SMÖS
P 0.91 0.58
R 0.91 0.24
CF 0.43 0.04 0.14 0.09
0.04 0.47 0.42 0.32
Tablo 2. SMÖS – HS Sonuçlarının Karşılaştırması
P ve R değerlerinin yüksek olması (en düşük 0, en yüksek 1 olmak üzere) o sistemin
başarısının da fazla olduğunu ifade eder. Karışıklık matrisinde ifade edilen DP (0,0
konumu) ve DN (1,1 konumu) değerlerinin bire daha yakın olması ve diğer
değerlerin sıfıra daha yakın olması, bir sistemin başarısının yüksekliğini ifade eder.
SMÖS ile oluşturduğum modele uyguladığım testlerde YN olağan dışı bir şekilde
fazladır, yani sistem test topluluğunun %42’si için doğru etiketine sahip olduğu
halde yanlıştır yargısına ulaşmıştır. Tablo 2’de görüldüğü üzere HS’in her iki değer
bağlamında SMÖS’ten daha başarılı olduğu aşikârdır.
Skytree şirketinin ‘Skytree Express’ programı dâhilinde pek çok sayıda sunucu
üzerinden dağıtık çalıştırmayı desteklemediğini öğrenildi. Bu eylemi bir program
olarak sunmaktan ziyade, bir hizmet olarak sunarak müşterilerle ilişki
kurmaktadırlar. Dolayısıyla bu yaptığım testler dağıtık ortamda olmamakla birlikte
tek makine üzerinde çalıştırılarak elde edilmiştir. Önceden bahsedildiği gibi
SMÖS’yi de bu yüzden HS’nin içine bütünleştirmek de bu yüzden yapılamaz
durumdadır. Proje kapsamında böyle bir plan mevcutken bu durumdan ötürü,
danışman hocamla beraber Inosens’e alternatif platformlar üzerinden performans
değerlendirmeleri sonuçları oluşturmaya karar verdik. Testlerimin sonunda
SMÖS’nin daha başarılı olduğu bir sonuç beklerken böyle bir sonuçla
karşılaşmadım. Beklentilerimin sebebi 2012’de kurulan Skytree şirketinin hizmet
verdiği müşterilerin büyüklüğüydü. SMÖS’den daha başarısız sonuç almamın olası
nedenleri arasında;
26
- Skytree’nin ücretsiz olarak sunduğu Skytree Express programında doğrudan
veya dolaylı yollardan sınırlandırmalar getirilmiş olma olasılığı,
- Çevirim dışı verinin yeterince sağlıklı olamaması [13], nedenlerini
gösterilebilirim.
Her iki olasılık da benim doğruluğunu test edebileceğim değerlendirmeler olmadığı
için elde ettiğim sonuçları iyileştirme olasılığım bulunmamaktadır. Ama HS’den
elde ettiğim sonuçlar incelendiğinde durumun ya Skytree kaynaklı ya da kendi test
metotlarımda yapılmış olabilecek hatalı işlemlerden kaynaklanmış olabileceği
yargısına ulaşmaktayım.
2.6. APACHE SPARK PERFORMANS TESTİ
Bu aşamadan sonra SMÖS – HS karşılaşmasında kullanılana benzer fakat farklı bir
veri kümesi ile çalışmalara devam edilmiştir. Bu veri kümesi önceki veri kümesiyle
benzer içeriğe sahip olmakla beraber, bu veri kümesinden oluşturmam gereken veri
yığını çok daha büyük ve veri kümesi içindeki anlamlı verilerin çok daha seyrek bir
şekilde küme içinde dağıldığı bir özelliğe sahiptir. Oluşturulan dosyayla ilgili
ayrıntılar bir sonraki başlıkta ayrıntılı açıklanmaktadır. Spark üzerinde testlerimi
uygulayabilmek için Inosens’in paylaştığı 1GB’lık çevirim dışı veri kullanılarak
özellik vektörü çıkarma ihtiyacı ortaya çıkmıştır.
2.6.1. ÖZELLİK VEKTÖRÜ OLUŞTURMA
Özellik vektörü, verideki her anlamlı noktanın başka anlamlı nokta ya da noktalar
topluluğuyla ilişkilerinin ifade edildiği iki ya da daha çok boyutlu veri gösterim
biçimidir. Oluşturduğum bu özellik vektörü ile yaklaşık olarak 1.170.000 (birinci
grup) ve 50.000 (ikinci grup) birbirleriyle ilişkilendirildiği iki boyutlu bir özgün
noktalar topluluğu ortaya çıkarılmıştır. Bu ilişkilerin şekilsel gösterimi aşağıda ifade
edilmiştir (Şekil 7). Şekilde gösterilen sayılardan ‘0’ bize bu iki noktanın hiçbir
ilişkisinin olmadığını söylerken, pozitif daha büyük bir sayı bu ilişkinin şiddetini
ifade etmektedir.
27
Grup1/Grup2 Nokta1 Nokta2 Nokta3 … … …
Nokta
50.000
Nokta1 4 0 0 … … … 0
Nokta2 0 0 8 … … … 2
Nokta3 0 1 0 … … … 0
… … … … … … … …
… … … … … … … …
… … … … … … … …
Nokta
1.170.000
1 0 1 … … … 2
Şekil 7. Özellik Vektörü Yapısı
Özellik vektörünü oluştururken JVM kullandım ve kendi kişisel bilgisayarımda
vektör 13 saatte oluşturularak 107GB’lık bir dosya elde edilmiştir. Bu dosya bulut
servisi üzerinden kümeler halinde çalıştırılacağı için hem bulut servislerinin ücretsiz
kullanım limitini aşmamak hem de karşı tarafa kolay yükleyebilmek adına bu
dosyanın boyutunu küçültmenin bir yolları üzerinde durulmuştur.
Öncelikle Spark’ın sıfırlara gerek duymadığını ve boş bırakılan yerlerin sıfır olarak
algılandığını öğrenildi. Dosyadan sıfırların çıkarılarak virgüllerle ayrılmış verinin
(csv) boyutu 50GB kadar azaltıldı. Daha sonra Spark’ın sahip olunan verideki gibi
çok dağınık ve seyrek dağılan verilerin boyutunu çok az boyutlarda tutabilen libsvm
formatına sahip dosyalarla işlem yapabildiğini öğrenilmiştir. Buna ek olarak seyrek
dağılmış büyük veri incelendiği zaman özelliklerin 27.500. Noktasından sonrasının
sadece sıfırlardan ve yer yer sıfırdan farklı sayılardan oluştuğu görülmüştür. Bundan
dolayı o bölgenin anlamsızlığından ötürü büyük veriden o kısmın atılmasına karar
verilerek özellik sayısı 27.500 ile sınırlandırılmıştır.
Şekil 8. Libsvm Formatı
Veriler iki farklı sınıfa bölünerek ‘düzenli’ (0) ve ‘düzenli olmayan’ (1) olarak
isimlendirildi. Böylece libsvm ile sadece hangi sınıfa ait oldukları, sıfırdan farklı
değerler ve indeksleri tutulduğu için (Şekil 8) 57GB’lık özellik vektörü sadece
30MB ile ifade edilebilmiş oldu.
<etiket> <indeks1>:<değer1> <indeks2>:<değer2> … <indeksN>:<değerN>
…
28
Ölçeklenebilirlik testinin uygulanabilmesi adına son oluşturulmuş 30MB
boyutundaki dosyadan 20MB boyutunda içerik alındı. Daha küçük boyutlu
dosyadan hem model oluşturup hem de doğruluk performansı, test edilerek
ölçülecektir. Daha sonra daha büyük olan özellik vektörü uygulanıp sonuçlar
karşılaştırılarak Apache Spark’ın ölçeklenebilirliği üzerine yorum yapılacaktır.
2.6.2 SINIFLANDIRMA MODELLERİNİ UYGULAMA
Modelin oluşturulabilmesi için öncelikle Spark üzerinde gerekli ayarlamalar
yapılarak sistem kullanıma uygun hale getirilmiştir. Daha sonra aşağıdaki
parametreler ile Spark’ın RandomForest.trainClassifier[14] metodu kullanılarak
modelleme işlemine başlanmıştır.
Şekil 9. Spark RDF Parametreleri
Eylemlerimi Amazon AWS üzerinden ücretsiz olarak idrak edebilme ve doğru
olarak uygulayabilme adına bazı parametrelerde Spark’ın tavsiye ettiği değerler
dışına çıkılmıştır (ağaç sayısının 3 ile sınırlandırılması gibi). Metot, libsvm formatlı
dosyayı alıp (Şekil 11, yeşil bölüm) ‘öğrenme’ işlemi için ilgili parametreleri
uygulayıp rastgele ağaçlar oluşturmaya başlamaktadır. Oluşturulan bu ağaçlardaki
özellik faktörü ve ağaçların büyüklüğü verilen ‘kaynaktan’ ötürü rastgelelelik
özelliği taşımaktadır[15]. Rastgele ağaçlar oluşturulduktan sonra geri toplama
(aggregate) denilen yöntemle modele uygulanan girdilerin genel ortalaması alınıp
birleştirilerek (ensemble) çoğunlukların oluşturduğu düğümlerden oluşmuş ağaçtan
hesaplanan sınıfı tahmin etme sonucu kullanıcıya sunulmuş olur (Şekil 10).
Sınıf sayısı: 2, (düzenli ve düzenli olmayan)
Ağaç sayısı: 3
Özellik sınıflama yöntemi: auto
Kirlilik: gini
En fazla derinlik: 5
Özellikleri ayırmadaki en fazla ölçüt sayısı (bin): 16
Kaynak: 12345
29
Şekil 10. Özellik Vektör Elemanlarından Modeller Oluşturma
Oluşturulan ağaç modelleri bundan sonraki aşamalar için test kaynağımız olacaktır.
Büyük veriden rastgele seçilmiş verilerden RDF kullanılarak oluşturulmuş bu
modele uygulanacak verilerin arasında eğitim için seçilen veri topluluğu (yeşil),
çalışma verisinden ayrılmış küçük test verisi (turuncu), bütün verilerin büyük test
için uygulanacağı veri topluluğu (siyah) vardır (Şekil 11).
Şekil 11. Veri Yığınındaki Bölümler
Analiz:
Oluşturulmuş model için 4 küme
(sunucu, cluster) üzerinde ‘öğrenme’
için ayrılmış verinin dışında kalan
‘çalışma’ verisi (Şekil 11, yeşil olmayan
turuncu alan) kullanılarak modellere ilk
girdi sokulmuştur. Elde edilen
sonuçların ortalamasıyla elde edilen
sonuçlar ile elimizde karşılaştırmak için
bulundurduğumuz gerçek sonuçlara
göre doğruluk oranı hesaplanmıştır.
Daha sonra tüm veriyi kapsayan kısım (Şekil 11, siyah kısmın tamamı) test için
modellemeye sokulmuştur. İki test işlemi için de elde edilen ağaçların ilk kısımları
Şekil 12’de ifade edilmiştir. Görüldüğü üzere bazı özellikleri içeren düğümlere
(Çalışmadan ayırılmış test verisi için)
Tree 0:
If (feature 16807 <= 0.0)
If (feature 21731 <= 0.0)
If (feature 5927 <= 0.0)
If (feature 17790 <= 0.0)
If (feature 17277 <= 0.0)
Predict: 1.0
Else (feature 17277 > 0.0)
Predict: 1.0
…
Tree 3:
…
Şekil 12. Oluşturulmuş Örnek Ağaç
Yapısı
30
‘çoğunluğunu’ kaybedip başka düğümler onların yerlerini alırken bazılarının da
tahmin edildikleri sınıflarda değişimler gerçekleşmiştir.
Oluşturulmuş ağalardaki değişimler ve tahmin edildikleri sınıflardaki değişim olma
ihtimalleri gözlendikten sonra her iki test verisi için de doğruluk oranı
karşılaştırması yapılmıştır. Bu işlem modelleme oluşturulmadan önce belirlenmiş
sınıf verileriyle karşılaştırma yapılarak elde edilmiş oranı ifade etmektedir.
Sonuçlarda doğruluk ve hata değerleri için 1’e yakınsaması o değerin oranını
artırmaktadır (Tablo 3).
Sonuç/Veri Tipi Küçük Veri Test Verilerin Tamamı
İsabetlilik 0.823381 0.949783
Hata 0.178261 0.050216
Tablo 3. Spark Test Sonuçları
Oluşturulmuş modele daha büyük bir veri topluluğu uygulandığı zaman %15,35
oranında doğrulukta artış gözlemlenmiştir. Bu durum Spark’ın ölçeklenebilirlik
tanımını sağladığına bir örnektir. Artan talepler karşısında performansından
(doğruluk) bir şey kaybetmediği halde sonuçlarını daha da iyileştiren bir yapıya
sahiptir. Aynı zamanda modellemenin çalıştırıldığı küme sayısı artırıldığı zaman da
MapReduce [16] ve küme yönetimindeki uygulamaları sayesinde performans
kaybına uğramayacağı savunulmaktadır [17]. Bu yüzden Spark alternatifler arasında
uygun bir aday olarak yer almaktadır.
2.7. R PERFORMANS TESTİ
Spark’ın dışında ücretsiz alternatif sunabilmek adına R programlama dilinin, sahip
olunan veri yığınındaki kabiliyeti bu başlık altında incelenmiştir. Kolay kullanım ve
arayüz avantajı sağladığı için testlerde RStudio programı kullanılmıştır. RDF
algoritmasını uygulayabilmek adına mevcut algoritmalar arasından en uygununun
randomForest kütüphanesi olduğuna karar verilmiştir. Kurulumu ve kullanımı
aşağıdaki şekilde ifade edilmiştir.
31
Şekil 13. R Platformuna RDF Kurulumu
Veri yığınının yapısını hatırlayacak olursak çok fazla vektöre sahip olmasından
ziyade çok fazla özelliğe sahip olması R üzerinde yapılmaya çalışılan testleri
aksatacak derecede etkilemiştir (Şekil 7). Dolayısıyla Spark için uygulanan test
verisinde yapılan özellik sayısını azaltma düzenlemesi R platformu için de
uygulanmıştır.
Şekil 14. R RDF Model Oluşturma Zamanları İlişkisi
R üzerindeki RDF sınıflandırıcısı, sınıf sütununun özellik sütunları arasında
belirtildiği, metodun çalışacağı veri setinin seçildiği ve bunun dışında gerekli
görülürse test verisinin de eklenebildiği bir metoda sahiptir. Bu metot, ek olarak
ilgili parametreler ile çalıştığı ortam ya da çalıştırılan veri ile ilgili en elverişli
performansı sunmaya yönelik şekilde tasarlanmıştır.
Analiz:
Verinin büyüklüğünden ötürü yaşanan problemleri gidermek adına donanımı en az
kullanacak parametreler seçilmiştir. Buna rağmen elde edilen performans çok yavaş
install.packages(randomForest) && library(randomForest)
32
olmakla beraber belli bir süre sonra R’ın kendi içinde tanımladığı limitlere ulaşınca
(ö: max integer limit) metot kendiliğinde sonlanmaktadır. Özellik sayısını azaltmaya
yönelik bir girişim olmamıştır çünkü azaltılan özellik sayısı üzerinde yapılacak test
sonuçlarını, diğer platformlardan elde edilen sonuçlarla karşılaştırmak anlamsız
olacaktır. Model oluşturulurken karşılaşılan bu sınırlama için alternatif olarak
oluşturulan ağaç sayısı bire indirilmekle beraber danışman hocamın tavsiyesi olan
bilgileri parça parça uygulama (mini batch) yöntemi üzerine yoğunlaşıldı. Bu
yöntem ile verideki vektör sayısını parça parça uygulamaya sokularak olası
sınırlamalar ile karşılaşmamak gibi bir beklentimiz mevcuttu. Uygulanan bu
yöntemle elde edilen sonuçlar yine tatmin edici değildi. Çünkü oluşturulan sadece
‘bir vektörden oluşturulmuş bir ağaçlık modelin’ elde edilme süresi yaklaşık on
saatlik bir zamanı buluyordu. İfade edilecek olursa var olan verinin en az %10’u
üzerinden model oluşturma gibi bir plan mevcuttu. Yani bu sayıdaki veri için
oluşturulacak modelin elde edilme süresi beklemeyi anlamsızlaştıracak kadar
uzundu (Tahmini olarak 10 x 105.000 saat, Şekil 15 hedef olarak işaretlenen kesim).
Dolayısıyla bu yöntem ile daha fazla ilerleme kaydedilemedi.
1 ağaç
grup/nokta
22.700 (orijinal
büyüklük) 10.000 5.000 1000
1 10 saatten fazla 10 saatten fazla * *
170 * * 2 saatten fazla 17sn
9.000 * * * 70sn
1.150.000 * (hedef) * * *
3 ağaç
grup/nokta 1000
9.000 2400 sn
100.000 7.5 saat
Şekil 15. R RDF Model Oluşturma Zaman Analizi
Yapılan gözlemlere göre özellik sayısı arttıkça modeli oluşturma süresi zaman
açısından üslü bir şekilde artmaktaydı (Şekil 14). Böyle bir sonuç beklendik bir şey
olmakla beraber 27.500 özellikli tek bir vektörün oluşturulmasındaki geçen süre
33
incelendiği zaman genel performansın ne kadar kötü olduğu gün yüzüne
çıkmaktadır. İşte oluşturma zamanındaki bu aşırılık bu noktadan daha ileriye
gidememeye sebep olmuştur. Geriye kalan tek uygulanabilir çare olarak özellik
sayısını (nokta) azaltarak veriyi parça parça uygulamaktır ama o zaman da veri
anlamsızlaştırılmaktadır. Bundan ötürü R platformu için, çok fazla özellikli veri
yığınlarının analizinde RDF metodunun kullanılmamasının veya başka platformların
alternatif olarak seçilmesinin daha faydalı olacağı görüşüne varılmıştır.
2.8. KİŞİSEL RDF SINIFLANDIRCIMIN PERFORMANS TESTİ
Mevcut sınıflandırıcılarla beraber danışman hocamla beraber fazladan bir seçenek
daha sunabilmek adına Java dilinde RDF sınıflandırıcısı yazma kararı verildi.
Yazılan bu kod, RDF’in temel prensiplerini desteklemekle beraber tasarımından bir
sonraki bölümde bahsedilecektir. Yazılan bu platform da, bir önceki platformlardaki
gibi Amazon AWS üzerinden oluşturulmuş EC2 örneği ile dağıtık bir şekilde
çağırılarak çalıştırılmıştır. Oluşturulan sanal sunucular (EC2 instance) da önceki
platformlardaki gibi Ubuntu 14.04 üzerinde çalışmaktadır.
2.8.1 TASARIM
Bu bölümde oluşturulan sistemin nasıl tasarlandığı, tasarlanırken hangi faktörlerin
dikkate alındığı, çalıştırılması için gerekli olan ihtiyaçlardan bahsedilmiştir.
2.8.1.1 GİRDİ FORMATI
Sınıflandırıcının değerleri düzenli ve hızlı bir şekilde işleyebilmesi için SMÖS
platformundakine benzer bir girdi formatı kabul edildi. Yani her bir satır bir vektörü
temsil ederken virgüllerle ayrılmış her özellik o vektörün sahip olduğu değerler
bütününü ifade etmektedir. İlk satır özellik sayısı + bir(sınıf) kadar virgülle ayrılmış
başlığı içermelidir (Şekil 16).
34
Şekil 16. RDF Girdi Formatı
Aynı veri yığını üzerinde çalışıldığı için sınıflar 0 (düzenli), 1 (düzenli olmayan)
anlamlarına gelmektedir. Bu girdi verisi, Spark için oluşturulmuş libsvm
formatından yeniden üretilerek oluşturulmuştur.
2.8.1.2 ÇALIŞMA ŞEKLİ
Girdi olarak okunan dosyanın önceden çalışma ve test edilme amaçlarıyla ayrılmış
olması beklenmektedir. Program, çalışmak için oluşturulmuş bu dosyayı alarak
büyüklük vb. gibi ağacın özelliklerinin tanımlandığı bir metoda sokularak burada
okunan ve tanımlanan veri, ArrayList yapısında dinamik bir şekilde kullanıma
sunulur.
Program 5 GB’dan az bellek tüketecek şekilde yazılmıştır. Dolayısıyla çok büyük
verilerin uygulanabilmesi için parçalara ayrılması gerekmektedir. Veri yığınındaki
hiçbir özellik değerlerine sahip olmayan vektörleri yığınımdan temizleyerek veriyi
biraz olsun küçülttükten sonra bölünecek en uygun dosya büyüklüğünün 850MB
olduğuna karar verildi. Bu verileri sürekli işleyerek model oluşturacağından ötürü
programın JVM üzerinde rahatça çalıştırılabilmesi adına bazı parametrelerin
girilmesine ihtiyaç duyulmaktadır (Şekil 17). Bu parametreler JVM çöp
toplayıcısının çalışma şeklini düzenlemekle beraber çalıştırılan sanal makineyi 5GB
büyüklükteki bellek ile sınırladığını ifade eder. Daha sonra ağacın özellik sayısı,
kategorik veri sayısı (sınıfı tanımlamak için kullanılmıştır ve 1 değerine eşittir) ve
toplam özellik sayısı arasından seçilecek veri sayısının belirtilmesi gerekmektedir.
Seçilecek özellik sayısı olarak Breiman’ın önerdiği formül olan
(logTOPLAM_ÖZELLİK/log2)+1 kullanılmıştır[18].
Ö1, Ö2, Ö3,…, SINIF
Değer1, Değer2, Değer3,…, 1
35
Şekil 17. Düzenlenmiş JVM Parametreleri
Çalıştırılan program her ağaç için bir thread oluşturarak en hızlı hizmeti sunmak
amaçlanmıştır. Fakat karşılaştırmalarımda uyguladığım ‘diske yazarak ön belleğe
alma’ ve ‘bellek’ kısıtlamalarından dolayı testlerimde sadece 1 ağaç oluşturdum.
Ama Spark ile yapılan testler ile benzer olması adına büyük verinin %10’u ile
oluşturulmuş ‘bir ağaçlık yedi modelin’ sonuçlarını genellenerek, oluşturulmuş yedi
‘orman’, tek ‘orman’ olarak ifade edilmiştir.
Oluşturulan veriler için 2.3.1.de bahsedilen karar ağaçları oluşturulmuştur. Karar
ağacını doldurmadan önce, bootsrap yöntemi kullanılarak girdiden rasgele veri ve
onlara ait belirlenmiş sayıdaki rastgele özellikler seçilerek veri parçaları çekilir.
Daha sonra bu veri parçası, ağaç veri yapısının da yardımıyla özyinelemeli
(recursive) bir yöntem uygulanarak uygun yerlerden parçalara ayrılıp ve o seviyede
bulunan düğümlerin üzerine yerleştirilmektedir. Uygun yerlerden ayrıştırma
metodu, özelliklerin sıralı dizilimi, o bölümdeki kararın verilebilmesi için
çoğunluğun oluşturduğu sonuçları inceleme (entropy) ve bu sonuçları veriyi en
anlamlı olacak yerler şeklinde uygulandı. Ana tasarım bu şekilde olmakla beraber bu
tasarımın uygulanmasına yardımcı olabilecek yardımcı metotlar da programda
uygulanmıştır.
2.8.2 UYGULAMA
Üzerinde çalışılan verinin çok büyük olmasının, uygulanacak yöntemlerin farklı
şekillerde yapılmasını zorladığı, önceki platform başlıklarında da bahsedilmişti.
Diğer platformlarda kullanıcı adına yapılan büyük veriyi parça parça alıp işleme
yöntemi, bu uygulamanın sağlanabilmesi için kullanıcı tarafından önceden
düzenlenmesi beklenmektedir. Düzenleme işinin gerçekleştirilebilmesi adına
öncelikle 107GB boyutundaki ham dosyada var olan boş vektörler yok sayılarak
boyut azaltıldı. Daha sonra vektörlerin R platformunda denendiği gibi tek tek (mini
-Xms32m -Xmx5g -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
36
batch) alınıp işlenmesinden ziyade yaklaşık 850MB büyüklüğündeki bir dosyanın,
çalışılan ortam tarafından sorunsuz çalıştırılabileceği tespit edildi.
Önceki testlerimde uyguladığım gibi bu testte de ölçeklenebilirliği test edebilme
adına veri yığının %10’luk bir kısmı üzerinden model oluşturulmaya karar verildi.
Bunun için her biri 850MB büyüklüğünde yedi parçalık, veri yığını üzerinden
rastgele seçilen satırlar kullanıldı. Bu parçalardan oluşturulan ‘bir ağaçlık yedi
model’, yedi ağaca sahip bir model gibi kullanılmıştır. Yani uygulanan test
verilerinin sınıflandırma sonuçları için yedi parçanın çoğunluğundan çıkan karara
bakılmıştır. Böylelikle donanım açısından kısıtlanan bir durumdayken benzer
şekilde çalışan alternatif bir seçenek sunulmuştur. Modeller oluşturulduktan sonra
üç parçalık ‘küçük test verisi’ uygulanmıştır. Son olarak otuz beş parçalık büyük
veri, oluşturulan modeller bütününe uygulanarak sonuçlar elde edilmiştir. Bu
sonuçlar analiz başlığı altında incelenecektir.
2.8.3 ANALİZ
Dosyadaki bir vektörün çok fazla özelliğe sahip olmasına rağmen parça parça
bölünerek üzerinde işlemler yapılması, yaptığım hesaplamalara göre tek parça
olarak yapılması senaryosuyla zaman açısında aynı performansı sergileyecekti.
Dolayısıyla modelleri oluştururken zaman açısından pek bir şey kaybedilmediği
savunulmaktadır. Ama aynı önerme, doğruluk oranı açısından bakıldığı zaman tersi
yönde ifade edilerek genellenmelidir. Bu savunma daha büyük örnek uzayından
oluşturulan modellerin daha isabetli orana sahip olduğuna dayanmaktadır [19].
Şekil 18’te de görüldüğü üzere çalışma verisinden oluşturulmuş modele uygulanan
küçük test %87,6’lık ortalama doğruluk oranına sahiptir. Yani her 10 vektörden
yaklaşık 8,7’sinin sahip olduğu sınıf kimlikleri doğru tahmin edilebilmiştir. Öte
yandan oluşturulmuş modele büyük veri uygulandığında ortaya çıkan ortalama
sonucun %90,9 ortalama ile daha başarılı olduğu gözlenmiştir (Hangi veri bölümü
nereye uygulanıyor, bkz. Şekil 11).
37
Şekil 18. Java ile Yazılmış RDF İsabetlilik Sonuçları
Elde edilen bu sonuç bize birkaç gerçeği vurgulamaktadır. Oluşturulmuş bu
modellemenin ölçeklenebilir olması kuvvetle muhtemeldir. Çünkü
ölçeklenebilirliğin tanımı olan artan veride daha başarılı (isabetli) performansı bu
veri yığını için sağlamaktadır. Fakat sadece sahip olunan verilerle kesin
ölçeklenebilirdir yorumunun yapılması yanlış olabilir çünkü bu sonuçların elde
edilmesinde pek çok rastgelelik etkeni vardır. Fakat zaten RDF ile önerilen
algoritma, bu rastgelelik etkeninin genellendiği zaman ‘çoğu zaman’ başarılı
sonuçlar elde etmeye yönelik olduğudur [20].
Tüm bu bilgilere dayanarak yazılmış bu modelin çok daha büyük veriler için daha
başarılı sonuçlar verme olasılığı beklenmelidir. Ama daha kötü sonuçlar
verebileceği de ihmal edilmemelidir. Şekil 18’e tekrar baktığımız zaman verinin
tamamı uygulandığı zaman yer yer doğruluk oranında düşüşler yaşanmaktadır. Ama
hem dipteki değerler hem de tepedeki değerler yeni parçalar sınıflandırıldıkça daha
iyi performans sergilemeye meyillidirler. Dolayısıyla bu gerçek de ortalama
doğruluk oranının zaman içinde artmasına neden olmuştur.
38
2.9. BAŞARI KRİTERLERİ
Bu projenin başında üç tane başarı kriteri belirlenmiştir. Bu başarı kriterleri ve proje
sırasında bu ölçütlerin sağlanması özetlenmiştir.
1. SMÖS’i başarıyla HS platformu ile bütünleştirmek,
SMÖS’nin siyah kutu benzeri bir çalışma mekanizması sergilediği
gözlenmiştir. Yani kullanıcıya sadece girilen veriyi kontrol etme ve çıkan
sonucu gözlemleme imkânı verilmekle beraber sistemi düzenlemeye izin
vermemektedir. Durum böyle olunca başarı kriterini güncelleme ihtiyacı
duyulmuştur. Bunun yerine kriter, Spark, R ve proje esnasında geliştirilen
RDF platformlarının RDF performanslarının sunulacağı şekilde güncellendi.
Güncellenmiş kriter başarı ile gerçekleştirilmiştir.
2. Ölçeklenebilirliği belirleyecek problemler belirlemek,
Inosens’ten konuyla ilgili temin edilmiş iki farklı çevirim dışı veri topluluğu,
platformların uygulayabileceği şekilde düzenlenmiştir. Her bir platform için
veriler farklı şekillerde düzenlenmiştir. Her platform için problemleri temsil
eden veri toplulukları başarı ile düzenlenmiştir ve uygulanmıştır.
3. Her platforma ait RDF sınıflandırıcıları ile sonuçlar elde ederek performans
değerlendirmeleri yapmak,
Inosens’ten sağlanan HS sonuçları ile beraber, yine aynı veri topluluğu
uygulanarak oluşturulan modelden elde edilen SMÖS sonuçları
karşılaştırılmıştır. Madde 1’de bahsedilen güncellemeden ötürü çok daha
büyük bir veri topluluğu, Spark, R ve proje esnasında yazılan RDF
sınıflandırıcı için uygulanarak modeller oluşturulmuştur. Modellerden elde
edilen sonuçların doğruluk oranlarını gözlemleyerek bir takım
değerlendirmelerde bulunulmuştur. Bu karşılaştırmalarla ilgili
değerlendirmeler Bölüm 3’te ayrıntılı bir şekilde ifade edilmiştir.
Özetlenecek olursa iki farklı veri topluluğu, beş farklı platforma uygulanarak
sonuçlara bağlı değerlendirme işlemleri başarı ile gerçekleştirilmiştir.
39
3. SONUÇ VE TARTIŞMA
Bu proje, günümüzde kullanılan mevcut makine öğrenme sistemlerinden seçilmiş
bazılarının karşılaştırmalarını içermektedir. Bu karşılaştırmalar ölçeklenebilirlik
özelliklerine bakılarak yapılmış olup karşılaştırma kıstası olarak platformlara ait
rastgele karar ormanları modelleme algoritmaları (RDF) kullanılmıştır.
Projenin öncelikli amacı, Inosens şirketinin talepleri doğrultusunda, Skytree’ye ait
‘Skytree Makine Öğrenme Sistemi’ ile Inosens’e ait ‘Hidden Slate Veri Analiz
Platformu’nu karşılaştırmaktı ve daha sonra SMÖS’i HS içine bütünleştirerek
SMÖS’nin RDF uygulamasını HS’in bir parçası haline getirmekti. Fakat SMÖS’nin
kapalı bir ‘siyah kutu’ olmasının öğrenilmesinden sonra sadece sonuçları
karşılaştırarak kısmi bir sonuca ulaşma yolu izlenmiştir. Bu yöntem her iki
platforma da aynı girdileri sokarak, kendi RDF uygulamalarının kullanarak çıkan
sonuçlardan ‘karışıklık matrisi’ yaratılarak gerçekleştirilmiştir. Bu matrise
bakıldığında ortaya çıkan sonuçla bir hayli fark olduğu gözlemlenir (Tablo 2). Sahip
olduğumuz veri için HS %90 oranında bir doğruluk oranına sahipken SMÖS her on
girdiden sadece dördünü (%40) doğru tahmin etmiştir. Aynı veriler üzerinden elde
edilmiş bu kadar farklı tahmin edilme oranlarına dayanarak SMÖS’nin (en azından
bedava kullanıma sunulmuş Express sürümünün) başarısızlığı vurgulanmalıdır.
Projedeki amaç SMÖS ve HS karşılaştırmasını yaptıktan sonra SMÖS’yi HS ile
bütünleştirmekti. SMÖS’nin kapalı bir sistem davranışı sergilemesinden dolayı
projedeki bu kriter güncellenmiştir. Yapılmış bu iki karşılaştırmanın yanı sıra
Inosens’e farklı alternatifler sunma yoluna gidilmiştir. Alternatif uygulamalar olarak
Apache’nin geliştirdiği Spark, R dilinin RDF kütüphanesi ve Java dilinde yazmış
olduğum RDF uygulaması seçilmiştir. Alternatif uygulamalar için önceki
karşılaştırmada kullanılan çevirim dışı verinin başka bir sürümü kullanılarak,
107GB büyüklüğünde çok daha büyük bir veri yığını oluşturulmuştur. Oluşturulan
veri yığını, her platform için benzer şekilde kullanılarak sonuçların sadece
platformların kendi RDF uygulamalarına bağlı değişkenlik göstermesine özen
gösterilmiştir.
40
Her platform için bütün verinin %10 kadarlık kısmını oluşturan ve bu kısmın
%70’ini içeren bir çalışma verisi ve kalan %30’luk kısım ile küçük test verisi
seçilmiştir. Çalışma verisinden Spark için üç ağaçlık bir model, Java’da yazılan
RDF için bir ağaçlık yedi farklı modelin sonuçlarının toplandığı ‘sanal yedi ağaçlık
bir model’ (aynı veri miktarına hitap ettiği için yedi ağaç seçilmiştir)
oluşturulmuştur. R içindeki RDF uygulamasında sahip olduğumuz veri yığınının çok
fazla özelliğe sahip olma niteliğinden dolayı uyumsuzluk problemleri yaşanarak
başarısız olunmuştur. Model oluşturma zamanları açısından yazmış olunan RDF
uygulaması biraz daha kısa sürmüştür (Şekil 19). Ama bu Spark’ın daha yavaş
olduğu anlamına gelmemektedir. Çünkü Spark ile model oluştururken donanım
Şekil 19. Modellerin Oluşturulma Süreleri
sınırlamalarından dolayı bellekte çalışan program, kendini, çalışma zamanının
%80’i boyunca diske yedekleyerek önbelleğe almıştır. Diskten, zamanının %80’ini
okuma yazma yaparak geçiren bir programın eğer sadece bellekte çalışsaydı bu
kadar süre çalışmayacağı ortadadır. Veri yığınından daha az rastgele veri seçerek
oluşturduğum test modellerinin oluşturulma zamanlarına bakarak, model
oluştururken harcanan zamanın, veri miktarına bağlı lineer bir eğilim izlediği
gözlenmiştir (Şekil 20). Modeller oluşturulurken, artan girdi miktarında, zaman
41
açısından sadece girdiye bağlı lineer bir artış eğilimi göstermektedirler (R RDD
uygulaması hariç).
Şekil 20. Model Oluşturma Zamanları Ölçeklenebilirlik Karşılaştırması
Çalışma verisinden ayrılmış %30’luk parça oluşturulan modellere uygulanmıştır.
Daha sonra verinin tamamı modele uygulanarak tahmin edilme sonuçları elde
edilmiştir. Verileri yüzde olarak ifadesinin genel ifadesi Şekil 11’de gösterilmiştir.
Elde edilen sınıfların tahmin edilme sonuçlarından oluşturulmuş doğruluk oranları,
modellerin ölçeklenerek katlanmış örneklemeler karşısında verdikleri performansları
yorumlamamıza yardım edecektir.
Şekil 21. Ölçeklenmiş Veride Modellerin Performansı
42
R RDF uygulamasıyla model oluşturmada elde edilen yetersiz performans, yapılan
karşılaştırmada ifade edilmemiştir (Şekil 21). Elimizdeki veri topluluğu göz önünde
bulundurularak, ölçeklenebilirlik performansında başarıya ulaşamadığı söylenebilir
(Şekil 15). Çünkü sadece ‘özelliklerini kaybetmemiş tek bir vektörden oluşturulacak
model için’ harcanan süre on saatin üzerindeyken bütün veri yığını üzerinden %10
oranında rastgele seçilecek veriden oluşturulacak model için geçecek süre diğer
platformlarla karşılaştırıldığında anlamsız kalmaktadır. Öte yandan diğer iki
platformun sonuçları incelenecek olursa küçük testlerde (Sütun 1,3,5 Şekil 21),
yazılmış RDF uygulamasının %5 daha başarılı olduğu görülürken, modeller büyük
veriye (Sütun 2,4,6 Şekil 21) uygulandığı zaman Spark’ın daha başarılı sonuç
verdiği gözlemlenmiştir. Her iki platform da büyük testlerinde, küçük testlerine
göreceli bir şekilde daha başarılı sonuçlar sergilemişlerdir. Ama Spark’ın büyük
veride yazılan RDF’ye göre %4 daha başarılı doğruluk performansı göstermiş
olması, Spark’ın kullanılan ‘dağınık veri yığını’ için daha ölçeklenebilir olduğu
savını doğrular niteliktedir.
43
KAYNAKLAR
[1] Skytree, Enterprise-Grade Machine Learning for Big Data | Skytree, San Jose,
CA, USA, http://www.skytree.net [Ziyaret Tarihi: 26 Mayıs 2016]
[2] Skytree, Skytree’s Customers | Skytree, San Jose, CA, USA,
http://www.skytree.net/customers [Ziyaret Tarihi: 20 Mart 2016]
[3] Inosens, inosens, Teknopark Pendik, İstanbul, http://inosens.com.tr [Ziyaret
Tarihi: 20 Mart 2016]
[4] The Apache Software Foundation, Apache Spark, Forest Hill, Marylan, USA,
http://spark.apache.org [Ziyaret Tarihi: 20 Mart 2016]
[5] Wikipedia, Random Forest, https://en.wikipedia.org/wiki/Random_forest
[Ziyaret Tarihi: 20 Mart 2016]
[6] Quinlan, J. R., Simplifying Decision Trees, International Journal of Man-
Machine Studies 27 (3): 221, 1987
[7] Opitz, D., Maclin R., Popular Ensemble Methods: An Empirical Study, Journal
of Artificial Intelligence Research 11: 169–198, 1999
[8] Rokach, L., Ensemble-Based Classifiers, Artificial Intelligence Review 33 (1-2):
1–39, 2010
[9] Breiman, Leo, Bagging Predictors, Machine Learning 24 (2): 123–140, 1996.
[10] Rokach, L., Maimon, O., Top-down Induction of Decision Trees Classifiers-A
Survey, IEEE Transactions on Systems, Man, and Cybernetics, Part C 35 (4): 476–
487, 2005
[11] Ho, Tin Kam, A Data Complexity Analysis of Comparative Advantages of
Decision Forest Constructors, Pattern Analysis and Applications: 102-112, 2002.
[12] Powers, David M W, Evaluation: From Precision, Recall and F-Measure to
ROC, Informedness, Markedness & Correlation, Journal of Machine Learning
Technologies, s 37-63, 2011
[13] Sarle, Warren S., Subject: What are the population, sample, training set, design
set, validation set, and test set?, Cary, NC, USA,
ftp://ftp.sas.com/pub/neural/FAQ.html#A_data [Ziyaret Tarihi 9 Nisan 2016]
[14] The Apache Software Foundation, RandomForest (Spark 1.4.0 Javadoc),
Forest Hill, Maryland, USA,
https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/mllib/tree/RandomFor
est.html [Ziyaret Tarihi: 15 Mayıs 2016]
[15] Wikipedia, Random Seed, https://en.wikipedia.org/wiki/Random_seed [Ziyaret
Tarihi: 15 Mayıs 2016]
[16] Dean J, Ghemawat S, MapReduce: Simplified Data Processing On Large
Clusters, Google Inc.,
http://static.googleusercontent.com/media/research.google.com/es/us/archive/mapre
duce-osdi04.pdf [Ziyaret Tarihi: 15 Mayıs 2016]
[17] The Apache Software Foundation, Cluster Mode Overview – Spark 1.2.0
Documentation, Forest Hill, Maryland, USA,
https://spark.apache.org/docs/1.2.0/cluster-overview.html#cluster-manager-types
[Ziyaret Tarihi 15 Mayıs 2016]
[18] Breiman, L., Random Forests, University of California, Berkeley, CA, USA,
https://www.stat.berkeley.edu/~breiman/randomforest2001.pdf [Ziyaret Tarihi: 18
Mayıs 2016]
44
[19] Halevy, A., Norvig, P., Pereira, F., The Unreasonable Effectiveness of Data,
IEEE Intelligent Systems, Issue No.02 - March/April (2009 vol.24): 8-12,
https://www.computer.org/csdl/mags/ex/2009/02/mex2009020008-abs.html [Ziyaret
Tarihi: 19 Mayıs 2016]
[20] Geurts, P., Ernst, D., Wehenkel, L., Extremely Randomized Trees, Machine
Learning 63: 3-12, http://link.springer.com/article/10.1007%2Fs10994-006-6226-1
[Ziyaret Tarihi: 20 Mayıs 2016]
45
EKLER
 Basılı:
a. Ciltlenmiş bitirme projesi raporu
 CD:
a. Bitirme projesi raporu (doc ve pdf formatlarında)
b. Proje sunum dosyası (ppt ve pdf formatlarında)
c. Yazılan programlar ve diğer uygulamalar
i. Programın tasarım dökümanı
ii. Program kodları ve derleme bilgisi
iii. Test ve deneylerde kullanılacak veri dosyaları (Inosens ile
yapılan anlaşma gereği dâhil edilmemiştir.)
 Ek-1: Platformların doğruluk karşılaştırmalarının toplandığı grafik
46
EK-1
Aşağıda ifade edilmiş olan tablo, platformlara uygulanan veri topluluklarından elde
edilen doğruluk performanslarını ifade etmektedir. Veri toplulukları karşısında
yaklaşık doğruluk değerleri, okuyucuya fikir vermek açısından sunulmuştur. Tüm
satırların birbiriyle eşit koşullarda test edilmediği bilinmelidir. Tablodaki 8 ve 7.
satırları birbirleriyle ilişkilendirilmeli, kalan satırlar da kendi aralarında
ilişkilendirilmelidir.
47

More Related Content

Similar to tacalan_proje_rapor_v4

Xsteel ornegi
Xsteel ornegiXsteel ornegi
Xsteel ornegisersld85
 
Spor Karşılaşmalarında Skor Ekranının Okunması
Spor Karşılaşmalarında Skor Ekranının OkunmasıSpor Karşılaşmalarında Skor Ekranının Okunması
Spor Karşılaşmalarında Skor Ekranının OkunmasıBusra Pamuk
 
İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...
İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...
İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...cgoze
 
TECHNOLOGY RADAR APRIL '16 TR
TECHNOLOGY RADAR APRIL '16 TRTECHNOLOGY RADAR APRIL '16 TR
TECHNOLOGY RADAR APRIL '16 TRFA
 
Veri Görselleştirme ve Grafik Datamining
Veri Görselleştirme ve Grafik DataminingVeri Görselleştirme ve Grafik Datamining
Veri Görselleştirme ve Grafik DataminingFatma ÇINAR
 
JİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianJİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianCansu Kaya
 
MaestroServiceManagement_20141032013_HasanYılmaz-Tez
MaestroServiceManagement_20141032013_HasanYılmaz-TezMaestroServiceManagement_20141032013_HasanYılmaz-Tez
MaestroServiceManagement_20141032013_HasanYılmaz-TezHasan Yılmaz
 
Nesne tabanlı programlama 1
Nesne tabanlı programlama 1Nesne tabanlı programlama 1
Nesne tabanlı programlama 1Erol Dizdar
 
DDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuDDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuOğuzcan Pamuk
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
Nesne tabanlı programlamada sınıflar
Nesne tabanlı programlamada sınıflarNesne tabanlı programlamada sınıflar
Nesne tabanlı programlamada sınıflarErol Dizdar
 
Xsteel ornekleri
Xsteel ornekleriXsteel ornekleri
Xsteel orneklerisersld85
 
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...Levent Sabah
 
Analist Eğitimi - Tüm Bölümler - [535 Slides]
Analist Eğitimi - Tüm Bölümler -  [535 Slides]Analist Eğitimi - Tüm Bölümler -  [535 Slides]
Analist Eğitimi - Tüm Bölümler - [535 Slides]Erol Bozkurt
 
Gizem Başak Berk - Yüksek Lisans Tez Sunumu
Gizem Başak Berk - Yüksek Lisans Tez SunumuGizem Başak Berk - Yüksek Lisans Tez Sunumu
Gizem Başak Berk - Yüksek Lisans Tez SunumuG. Basak Berk
 
Xsteel ornek
Xsteel ornekXsteel ornek
Xsteel orneksersld85
 
Veri tabanı planlama
Veri tabanı planlamaVeri tabanı planlama
Veri tabanı planlamakhan_27
 

Similar to tacalan_proje_rapor_v4 (20)

Xsteel ornegi
Xsteel ornegiXsteel ornegi
Xsteel ornegi
 
Spor Karşılaşmalarında Skor Ekranının Okunması
Spor Karşılaşmalarında Skor Ekranının OkunmasıSpor Karşılaşmalarında Skor Ekranının Okunması
Spor Karşılaşmalarında Skor Ekranının Okunması
 
İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...
İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...
İNSAN KAYNAKLARI YÖNETİMİNDE KULLANILAN BİLGİ TEKNOLOJİLERİNİN İNSAN KAYNAKLA...
 
TECHNOLOGY RADAR APRIL '16 TR
TECHNOLOGY RADAR APRIL '16 TRTECHNOLOGY RADAR APRIL '16 TR
TECHNOLOGY RADAR APRIL '16 TR
 
Veri Görselleştirme ve Grafik Datamining
Veri Görselleştirme ve Grafik DataminingVeri Görselleştirme ve Grafik Datamining
Veri Görselleştirme ve Grafik Datamining
 
Visual analysis
Visual analysisVisual analysis
Visual analysis
 
JİRA'ya Giriş / Atlassian
JİRA'ya Giriş / AtlassianJİRA'ya Giriş / Atlassian
JİRA'ya Giriş / Atlassian
 
MaestroServiceManagement_20141032013_HasanYılmaz-Tez
MaestroServiceManagement_20141032013_HasanYılmaz-TezMaestroServiceManagement_20141032013_HasanYılmaz-Tez
MaestroServiceManagement_20141032013_HasanYılmaz-Tez
 
Nesne tabanlı programlama 1
Nesne tabanlı programlama 1Nesne tabanlı programlama 1
Nesne tabanlı programlama 1
 
DDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi RaporuDDoS Benzetimi Projesi Raporu
DDoS Benzetimi Projesi Raporu
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Nesne tabanlı programlamada sınıflar
Nesne tabanlı programlamada sınıflarNesne tabanlı programlamada sınıflar
Nesne tabanlı programlamada sınıflar
 
Xsteel ornekleri
Xsteel ornekleriXsteel ornekleri
Xsteel ornekleri
 
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
BULUT BİLİŞİM (CLOUD COMPUTING) TEKNOLOJİSİNİN UZAKTAN ALGILAMA ve COĞRAFİ Bİ...
 
Uni stay 2017-2018
Uni stay 2017-2018 Uni stay 2017-2018
Uni stay 2017-2018
 
Analist Eğitimi - Tüm Bölümler - [535 Slides]
Analist Eğitimi - Tüm Bölümler -  [535 Slides]Analist Eğitimi - Tüm Bölümler -  [535 Slides]
Analist Eğitimi - Tüm Bölümler - [535 Slides]
 
Gizem Başak Berk - Yüksek Lisans Tez Sunumu
Gizem Başak Berk - Yüksek Lisans Tez SunumuGizem Başak Berk - Yüksek Lisans Tez Sunumu
Gizem Başak Berk - Yüksek Lisans Tez Sunumu
 
Cisco vaka analizi
Cisco vaka analiziCisco vaka analizi
Cisco vaka analizi
 
Xsteel ornek
Xsteel ornekXsteel ornek
Xsteel ornek
 
Veri tabanı planlama
Veri tabanı planlamaVeri tabanı planlama
Veri tabanı planlama
 

tacalan_proje_rapor_v4

  • 1. i T.C. GEBZE TEKNİK ÜNİVERSİTESİ Bilgisayar Mühendisliği Bölümü SKYTREE İLE VERİ ANALİZİ Ali Ozan TAÇALAN Danışman Yrd. Doç. Dr. Yakup GENÇ Mart, 2016 Gebze, KOCAELİ
  • 2. ii
  • 3. iii T.C. GEBZE TEKNİK ÜNİVERSİTESİ Bilgisayar Mühendisliği Bölümü SKYTREE İLE VERİ ANALİZİ Ali Ozan TAÇALAN Danışman Yrd. Doç. Dr. Yakup GENÇ Mart, 2016 Gebze, KOCAELİ
  • 4. iv Bu çalışma ..../..../2016 tarihinde aşağıdaki jüri tarafından Bilgisayar Mühendisliği Bölümünde Lisans Bitirme Projesi olarak kabul edilmiştir. Bitirme Projesi Jürisi Danışman Adı Yrd. Doç. Dr. Yakup Genç Üniversite Gebze Teknik Üniversitesi Fakülte Mühendislik Fakültesi Jüri Adı Doç. Dr. Yusuf Sinan Akgül Üniversite Gebze Teknik Üniversitesi Fakülte Mühendislik Fakültesi Jüri Adı Doç. Dr. Fatih Erdoğan Sevilgen Üniversite Gebze Teknik Üniversitesi Fakülte Mühendislik Fakültesi
  • 5. v ÖNSÖZ Bu projenin gerçekleştirilmesinde öncelikle beni destekleyip yol gösteren Yrd. Doç. Dr. Yakup GENÇ danışman hocama, jüri hocalarım olan Doç. Dr. Yusuf Sinan Akgül ve Doç. Dr. Fatih Erdoğan Sevilgen’e ve ayrıca Inosens’teki çalışanlara, bana desteklerinden dolayı teşekkür ederim. Mayıs, 2016 Ali Ozan TAÇALAN
  • 6. vi İÇİNDEKİLER ÖNSÖZ................................................................................................... V ŞEKİL LİSTESİ............................................................................... VIII TABLO LİSTESİ .................................................................................IX KISALTMA LİSTESİ .......................................................................... X SEMBOL LİSTESİ..............................................................................Xİ ÖZET...................................................................................................XII SUMMARY ...................................................................................... XIII 1. GİRİŞ ................................................................................................14 2. EYLEM RAPORU.....................................................................17 2.1. PROJE GEREKSİNİMLERİ...................................................17 2.2. SİSTEM MİMARİSİ.................................................................19 2.3. RASTGELE AĞACIN YAPISI................................................20 2.3.1 KARAR AĞAÇLARI ............................................................20 2.3.2 RASTGELE AĞAÇ ...............................................................20 2.4. İŞ PLANLARI............................................................................22 2.5. SMÖS - HS KARŞILAŞTIRMASI ..........................................23 2.6. APACHE SPARK PERFORMANS TESTİ...............................26 2.6.1. ÖZELLİK VEKTÖRÜ OLUŞTURMA...............................26 2.6.2 SINIFLANDIRMA MODELLERİNİ UYGULAMA .........28 2.7. R PERFORMANS TESTİ ........................................................30 2.8. KİŞİSEL RDF SINIFLANDIRCIMIN PERFORMANS TESTİ....................................................................................................33 2.8.1 TASARIM...............................................................................33 2.8.1.1 GİRDİ FORMATI ..............................................................33 2.8.1.2 ÇALIŞMA ŞEKLİ ..............................................................34
  • 7. vii 2.8.2 UYGULAMA..........................................................................35 2.8.3 ANALİZ ..................................................................................36 2.9. BAŞARI KRİTERLERİ............................................................38 3. SONUÇ VE TARTIŞMA ................................................................39 KAYNAKLAR......................................................................................43 EKLER..................................................................................................45 EK-1.......................................................................................................46
  • 8. viii ŞEKİL LİSTESİ Şekil 1 İki Sistemin Nasıl Çalıştırılacağı Üstüne Genel Yapı………………..……15 Şekil 2 Modelin Oluşturulması ve Test Edilmesi………………………………….19 Şekil 3 Karar Ağacı Kuralları Örneği……………………………………………...20 Şekil 4 Rastgele Karar Ormanının Yapısı….………….…………………………...22 Şekil 5 Veri Düzenlemesi….………….…………………………….……………...23 Şekil 6 Model ve Test Uygulama Örneği….….………………….………………...23 Şekil 7 Özellik Vektörü Yapısı….………….……………………………………...27 Şekil 8 Libsvm Formatı…………………………………..….………….………….27 Şekil 9 Spark RDF Parametreleri………………………………………………….28 Şekil 10 Özellik Vektör Elemanlarından Modeller Oluşturma….………….……...29 Şekil 11 Veri Yığınındaki Bölümler….…………………………….……………...29 Şekil 12 Oluşturulmuş Örnek Ağaç Yapısı……………………….…………...…...29 Şekil 13 R Platformuna RDF Kurulumu…….….….…………….………………...31 Şekil 14 R RDF Model Oluşturma Zamanları İlişkisi……………………………...31 Şekil 15 R RDF Model Oluşturma Zaman Analizi……………………………..….32 Şekil 16 RDF Girdi Formatı…….….….…………….………………………...…...34 Şekil 17 Düzenlenmiş JVM Parametreleri………………………………….……...35 Şekil 18 Java ile Yazılmış RDF İsabetlilik Sonuçları……...………….………..….37 Şekil 19 Modellerin Oluşturulma Süreleri….……….………………………...…...40 Şekil 20 Düzenlenmiş JVM Parametreleri………………………………….……...41 Şekil 21 Java ile Yazılmış RDF İsabetlilik Sonuçları……...………….………..….41
  • 9. ix TABLO LİSTESİ Tablo 1 Genel İş Planı……………………………………………………………...22 Tablo 2 SMÖS – HS Sonuçlarının Karşılaştırılması……………………………….25 Tablo 3 Spark Test Sonuçları……………………...……………………………….30
  • 10. x KISALTMA LİSTESİ UML : Unified Modeling Language (Birleşik Modelleme Dili) GTÜ : Gebze Teknik Üniversitesi ABD : Amerika Birleşik Devletleri SMÖS : Skytree Makine Öğrenme Sistemi RDF : Random Decision Forest (Rastgele Karar Ormanı) HS : Hidden Slate Veri Analiz Sistemi CLI : Komut Satırı Arayüzü (Command Line Interface) MÖ : Makine Öğrenmesi DP : Doğru Pozitif DN : Doğru Negatif YP : Yanlış Pozitif YN : Yanlış Negatif JVM : Java Virtual Machine (Java Sanal Makinesi) RDD : Resilient Distributed Dataset (Esnek Dağıtılmış Veri Kümesi)
  • 11. xi SEMBOL LİSTESİ P : Precision (Kesinlik*) R : Recall (Yeniden Çağırma*) CF : Confusion Matrix (Karışıklık Matrisi*) M : Veri kümesi üzerindeki özellik sayısı Ms : Rastgele ağaç için seçilecek M içinden rastgele özellik sayısı * Bu İngilizce ifadelerin anlamları Türkçe’ye dönüştürüldüklerinde aynı anlam bütünlüklerini sağlamamalarına rağmen fikir vermesi açısından Türkçe karşılıklarına da yer verilmiştir.
  • 12. xii ÖZET Günümüzde makine öğrenme metodları verileri analiz edip yorumlamada çok önemli bir konuma sahiptir. Bundan ötürü bu alana yoğun bir ilgi bulunmaktadır. Bu yoğun ilgi aynı zamanda büyük şirketlerin bu alanda yatırım yapmasına ve danışmanlıklar aramasına sebep olmaktadır. Gebze Teknik Üniversitesi 2016 lisans bitirme projesi olarak bir makine öğrenme metodu olan rastgele karar ağaçlarını kullanılmıştır. Bunun için günümüzdeki mevcut birkaç veri analiz platformları kullanılmıştır. Bu platformlar arasında Hidden Slate, Skytree Express, Apache Spark, R dili metodları, kendi yazdığım sınıflandırıcı bulunmaktadır. Projede karmaşık veri yığınları düzenlenerek en uygun modeller oluşturulmuştur. Her platform için yapılan testler belirlenen ölçütlere göre karşılaştırılmıştır.
  • 13. xiii SUMMARY Nowadays, machine learning algorithms have an important position to analyze and to interepret the data. Hence, there is an intense interest in this field. This intense interest also leads large companies to invest in this area and seek for consultancy. A type of machine learning algorithm, random decision forest, is used to achieve the project as my Gebze Technical University 2016 undergraduate project. Some data analysis platforms are used to do this. These platforms include Hidden Slate, Skytree Express, Apache Spark, R language methods, classifier that I wrote. The most appropriate models for organizing complex data in chunks of the project have been created. The tests were compared according to the criteria specified for each platform.
  • 14. 14 1. GİRİŞ Bu projede ‘Skytree Makine Öğrenme Sistemi’nin (SMÖS) [1] ölçeklenebilirliği üzerine bir çalışma yapılmıştır. Elde edilen sonuçlar doğrultusunda Skytree şirketinin sunduğu hizmete alternatif hizmetler ve bunların karşılaştırılması sunulmuştur. ‘Skytree’, ABD’nin California eyaleti merkezli bir bir bilişim şirketidir. SMÖS, 5 seneden fazla bir sürede varlığını sürdürüp diğer mevcut makine öğrenme sistemleri(Apache Spark vs.) arasında popülerliğini artırmaya başlamış olup PayPal, Samsung, MasterCard gibi büyük şirketlere bu konuda hizmet vermektedir [2]. Projede SMÖS’nin ölçeklenebilirliği üzerine bir çalışma yapılmıştır. Bunun dışında seçilecek birkaç platform üzerinden de benzer ölçeklenebilirlik testleri yaparak alternatifler sunulmuştur. Ölçeklenebilirlik, artan talepler karşısında kapasite artırıldığı zaman buna bağlı performansın sabit kalması veya daha da iyileşmesi olarak tanımlanır. Bir sistemin gerçekten ölçeklenebilir olduğunu göstermek o sistemin çok büyük verilere uygulandığı zaman hem maliyet hem de zaman açısından avantajlı olduğunu göstermiş olur. Bu da gerek kullanıcı açısından gerek de yatırımcı açısından bu ifadenin ne kadar önemli olduğunu ifade etmiş olur. 1.1. PROJE TANIMI SMÖS üzerinde çeşitli ‘çevirim dışı’ veri topluluklarıyla yapılan denemeler sonucu sistemin performansını ifade etmek projenin ana amacı içerisinde yer almaktadır. Aynı veri toplulukları ile Inosens[3] isimli İstanbul Türkiye merkezli şirketin Apache Spark[4] tabanlı ‘HiddenSlate Veri Analiz Sistemi’(HS) üzerinde denemeler yaparak elde edilen performans ile SMÖS performansını karşılaştırarak ölçeklenebilirlik üzerine bir yargıya ulaşmak projenin birincil amacıdır. Bu veriler Inosens’ten alınacak olup imzalanan gizlilik anlaşması gereği içeriğinden bahsedilmeyecek olup çevirim dışı olarak isimlendirilmiştir.
  • 15. 15 Projenin ikincil bir hedefi olarak SMÖS ve HS’in performans karşılaştırmalarına ek olarak diğer mevcut sistemlerin kendi aralarında karşılaştırmalarını sunup bir yargıya ulaşmak yer almaktadır. Bu karşılaştırmalar bütünü Inosens’e sunulup en verimli sistem için analiz sunulmuştur. Karşılaştırmalarda esas olarak platformların kendi random decision forest (RDF) uygulamaları kullanılacak olup RDF’nin ayrıntılı tanımlamalarından 2.3. bölümde bahsedilmiştir. Şekil 1. İki Sistemin Nasıl Çalıştırılacağı Üstüne Genel Yapı İlk olarak Inosens’ten temin edilecek ham veri yığını, RDF modellemeleri kullanılarak bölümlendirilmiştir. Ham veri yığını platformların anlacağı bir düzene sahip olmayan veri yığınlarına denir. Bu verilerle iş yapılabilmesi için öncelikle düzenlenmeleri gerekmektedir. Bu ham veri yığınları bölümlendirilerek eğitilmek üzere (çalışılmış veri) ve tahmin edilmek üzere (büyük boyuttaki veri) iki kısma ayrılmıştır (Şekil 1). Farklı veri yığınları ve farklı platformlar üzerinde benzer işlemler uygulanmıştır.
  • 16. 16 1.2. PROJENİN NEDEN ve AMAÇLARI Projenin başlatılma nedenleri arasında sektörde yeni sayılabilecek ve HS platformu ile aynı hizmeti sunan SMÖS’nin performansını belirleme ihtiyacı yatmaktadır. Böylelikle HS’in, varsa eksikliklerinin geliştirilmesi için gereken adımlar atılabilecektir. Ayrıca Inosens şirketine, SMÖS dışında alternatifler sunarak bunlar arasında hem HS’nin hem de SMÖS platformlarına alternatif ölçeklenebilir sistemler sunmak projenin ikincil amaçları arasında yer almaktadır. Bu proje sayesinde aşağıdaki başarımlar elde edilecektir: - SMÖS’nin performansını HS ile karşılaştırmak. - SMÖS’nin HS içine entegre edilebilirliğini incelemek, yapılabilir ise gerçekleştirmek. - Alternatif platformlarda yapılacak testlerle HS ve SMÖS sistemlerinden başka bakış açıları sunularak ölçeklenebilir platform önerileri sunmak. Alternatif platformlar için: o Apache Spark’ın RDF modellemesi, o R Dilinin RDF modellemesi, o Java kullanarak yazdığım RDF sınıflandırıcısı, sistemlerinin uygun adaylar olacakları belirlenmiştir. - Karşılaştırmalar sonucu elde edilen verileri değerlendirerek projedeki ana iki platformun (SMÖS ve HS) ve ayrıca diğer platformların kendi aralarında performans karşılaştırmaları incelenmiş olacaktır. Genel not: SMÖS ve HS, kapalı sistemler oldukları, yani düzenleme (kod değiştirme) gibi imkânlar sunmadıkları için HS ile bütünleştirme hedefi gerçekleştirilememekle beraber bulut üzerinden dağıtık çağırılma işlemi gerçekleştirilememiştir. Çünkü dağıtık çağırma işlevleri sadece kendi aracılıkları ile bir hizmet olarak sunulmaktadır. Bu yüzden diğer platformlarda uygulanan testler ve sonuçları Inosens’e alternatif sunabilmek adına yapılmıştır. Dolayısıyla bu iki platform kendi aralarında, diğer üç platform kendi aralarında değerlendirilmiştir.
  • 17. 17 2. EYLEM RAPORU Bu başlık altında proje boyunca yapılan işlerin ayrıntılı açıklamaları bulunmaktadır. İşlerin zaman olarak dağılımları 2.4. bölümdeki Tablo 1’de incelenebilir. 2.1. PROJE GEREKSİNİMLERİ Bu projede başarılması gerekenler: - Veri yığınlarının veri analiz platformların işleyebileceği uygun formatlara dönüştürülmesi. - Eğitilecek ve çalışılacak veri toplulukları için (‘dataset’) hazırlanıp etiketlerinin (‘label’) oluşturulması. - Veri topluluklarının ve onlara ait etiketlerinin yardımıyla RDF tabanlı [5] bir model oluşturmak. - Test verisini modele uygulayıp etiketler elde etmek. - Elde edilen etiketlerin doğru tahmin edilme oranını ifade etmek (doğruluk, accuracy). - Java dili üzerinde RDF tabanlı sınıflandırıcı yazmak. - Aynı işlemlerin her diğer platform için de gerçekleştirilmesi. - İşlenmiş veri setlerinin bulut üzerinden RDF kullanılarak dağıtık çağırılması.
  • 18. 18 Bunların sağlanması için gerekli ihtiyaçlar: - Skytree Express; Skytree şirketinin ücretsiz olarak sunduğu makine öğrenme platformu - Hidden Slate Veri Analiz Sistemi; Inosens şirketinin üzerinde çalıştığı Spark tabanlı makine öğrenme platformu - Apache Spark, açık kaynak küme halindeki verileri hesaplama platformu - R Programlama Dili, içindeki RDF modellemesi - RStudio - Sunucularla ssh bağlantısı üzerinden iletişim kurabilmek için putty ve puttygen - Veri yığınlarının dağıtık hesaplanabilmesi için Amazon AWS - Inosens şirketinden temin edilecek çeşitli çevirim dışı veri toplulukları - Veri düzenlemelerini otomatikleştirmek ve kendi yazacağım RDF sınıflandırıcısını derleyebilmek adına Java platformu
  • 19. 19 2.2. SİSTEM MİMARİSİ Sistem mimarisi Şekil 2 ve aşağıdaki maddeler üzerinden açıklanmıştır: - Projeyi gerçekleştirebilmek için eldeki ham veri, sistemlerin anlayabileceği formatlara Java’da yazılan kodlarla dönüştürülecektir. - Dönüştürülen veri toplululukları ‘çalışılacak’ ve ‘test edilecek’ veri topluluğu olarak ayrılacaktır. - Çalışılacak veri topluluğu girdisiyle RDF modeli oluşturulacaktır. - Deneme verisine model aracılığı ile etiketler üretilecektir. - Bu etiketlerin doğruluğu önceden var olan deneme etiketleriyle karşılaştırarak CF veya doğruluk oranı hesaplanıp, performans değerlendirmesi yapılacaktır. Şekil 2. Modelin Oluşturulması ve Test Edilmesi
  • 20. 20 2.3. RASTGELE AĞACIN YAPISI Bu bölümde platformların karşılaştırılma esası olarak seçilen RDF’nin, okuyucuya daha anlaşılır gelebilmesi adına tanımı, neden seçildiği ve yapısı üzerine bilgilerden bahsedilecektir. Bunun için öncelikle karar ağaçları denilen modelleme çeşidi hakkında ön bilgiye sahip olmanın RDF’nin anlaşılırlığı konusunda daha faydalı olacağını düşünmekteyim. Çünkü temelde RDF denilen sınıflandırma algoritması rastgele oluşturulmuş karar ağaçlarından oluşmaktadır. 2.3.1 KARAR AĞAÇLARI Karar ağacı denilen veri yapısı, düğümlerden oluşan ve her bir düğümün bir kararı, yani sınıflandırmayı temsil ederek karmaşık bir veri yığınının en iyi şekilde parçalara ayrıştırılmaya çalışılarak ifade edildiği, graf temelli bir modelleme çeşididir. Ağaçların sahip olduğu kök, ara düğümler ve yaprak yapısına sahiptir. Bu düğümler oluşurken bir çeşit karar verme kuralları uygulanır [6]. Bu kurallar bir bağlaç görevi görerek belirli koşullarda elde edilecek sonucu ifade eder (Şekil 3). Şekil 3. Karar Ağacı Kuralları Örneği 2.3.2 RASTGELE AĞAÇ Rastgele ağaç, rastgele karar ormanları (RDF) denilen veri modelleme çeşidinin temelinde yatan bir kavramdır. Toplu öğrenme (ensemble learning) olarak adlandırılan bir temel algoritmaya sahip olmakla beraber sınıflandırma, regresyon vb. işlerde kullanılmaktadır. Toplu öğrenme, aynı veri topluluğu için birden fazla öğrenme algoritması kullanarak elde edilen sonuçların ortalamasının daha iyi bir tahmin etme performansına sahip olduğunu ifade eden öğrenme algoritmalarıdır [7][8]. Proje için birden fazla değişik algoritma kullanmak yerine RDF’in özelliği eğer durum1 ve durum2 ve durum3 ve … o halde sonuç1
  • 21. 21 olan birden fazla rastgele ağaçtan yararlanılarak ortalama değerlendirmesi yapılmıştır. Her ağaç için bootstrap birleştirmesi [9] denilen bir metodla; girdi verisi üzerinden, girdi verisi büyüklüğünde, M özellik içinden Ms kadar özellik rastgele seçilip, seçilen bu vektörler en uygun bölme algoritması [10] uygulanarak rastgelelik işlemi sağlanmış olur. Oluşturulacak ağaç sayısı kullanıcı tarafından önceden belirtilmelidir. Çünkü RDF en iyi ağaç sayısı bilgisine sahip değildir, bunun için önceden testlerin yapılmış olması ve ince ayarlamaların uygulanmış olması beklenir. Belirtilen ağaçların oluşturduğu topluluğa rastgele orman denilmektedir. Her ağaç kararları (Ms) rastgele seçilerek ve bu özellikler için rastgele vektörler seçildiği için oluşturulan ağaçların birbirine benzeme olasılığının çok düşük olması (rastgelelik özelliği) RDF’in toplu öğrenme algoritmasını uygulayabilme açısından uygun bir aday olduğunu göstermektedir. X verisinden oluşturulan ağaçlardaki aynı özelliklerden oluşan düğümlerin (her katmandaki turuncu renkler) sınıflandırılmaları birleştirilerek (genelleme yapılarak, çoğunluğa bakılarak) elde edilen son sınıflandırma negatif(aykırı, outlier) verilerden oluşmuş başarısız sınıflandırmaların elenerek pozitif Y sınıflandırmaların ortaya çıkmasını amaçlamaktadır (Şekil 4). Özetlenecek olursa RDF modellemesinin seçilmesinin nedenleri aşağıda sıralanmıştır [11]:  Karmaşık ve büyük verileri kolay yorumlayabilmesi  Aykırı verilere karşı güçlü bir duruş sergilemesi  Karar verme kuralları oluşturulduktan sonra(model oluşturma), tahmin etme işlemlerini hızlı yapması  Veri yığınının iç yüzü hakkında değerli bilgiler verebilmesi Sıralanan bu sebeplerden ötürü sahip olunan karmaşık, seyrek dağılmış bilgileri içeren ve büyük veri yığınını etkili bir şekilde analiz edip sonuçların rahatça
  • 22. 22 karşılaştırabileceği bir modelleme türü olmasından dolayı projemdeki kıyaslamalar için RDF seçilmiştir. Şekil 4. Rastgele Karar Ormanının Yapısı 2.4. İŞ PLANLARI Proje için belirlenen yolun uygulanacağı zaman aralıkları Tablo 1’de belirtilmiştir. Bu zaman aralıkları tahmini olup yol gösterme amaçlı oluşturulmuştur. Mart Nisan Mayıs Verinin Düzenlenmesi RDF Modelleri Oluşturma Test Verisinin Denenmesi Diğer Platformlarda Uygulama Tablo 1. Genel İş Planı
  • 23. 23 2.5. SMÖS - HS KARŞILAŞTIRMASI Inosens’ten kullanılacak çevrim dışı veri elde edilmiştir. Çevirim dışı veri bir internet sitesindeki kullanıcılarla alakalı çerez temelli bilgileri içermektedir. Genel amaç bu veri topluluğuna makine öğrenme algoritmalarını uygulayarak hangi kullanıcıların mevcut bilgilerine ‘çalışarak’ gelecek zamanlarda hedef kullanıcı kitlelerini belirlemektir. Bunu gerçekleştirmek hem mevcut hizmetlerle ilgilenmeyen kullanıcıların hedeften çıkarılmasını sağlayacak hem de daha sağlıklı bir kullanıcı odaklı hizmet sunulacaktır. Inosens ile yaptığım anlaşma gereği verinin ismini ya da alakalı olduğu şirketleri paylaşmamam gerekmektedir. Çevrim dışı veri SMÖS’nin anlayacağı şekilde düzenlenmiştir. Bunun için öncelikle ‘header’ olarak adlandırılan, veri topluluğu hakkında özet sayılabilecek bilgileri içeren dosya oluşturulmuştur. Daha sonra oluşturulan bu başlık dosyası ile ham generate-header.sh -file Data _Train -header_out Data _Train.header -delimiter COMMA -label_index 6 -use_column_names -ignore_inconsistent_rows -missing_value ? -id_index 1 convert-data.sh -file Data_Train -header_in Data_Train.header -ignore_lines 1 -label_index 6 -id_index 1 -ignore_missing -rare_words_pct 10.0 -stop_words_pct 15.0 -ignore_new_words -ignore_out_of_range -data_out Data_Train.st -labels_out Data_Train.labels Şekil 5. Veri düzenlenmesi skytree-server rdf --training_in Data_Train.st --training_labels_in Data_Train.labels --holdout_ratio 0.2 --num_trees 5:5:100 --imbalance skytree-server rdf --training_in Data_Train.st --training_labels_in Data_Train.labels --testing_in Data_Test.st --num_trees 35 --num_dimensions 3 --testing_objective accuracy --imbalance --probability_threshold 0.01 --model_out Data_Model --probabilities_out probabilities.simple --labels_out Data_Test.labels Şekil 6. Model ve test uygulama örneği
  • 24. 24 veri topluluğu SMÖS’nin anlayacağı formata otomatik olarak dönüştürülmüştür. Bu işlemleri içeren örnek CLI komutları Şekil 5’te ifade edilmiştir. Veri seti ve hangi sınıfa ait olduğunu belirten etiketler oluşturulduktan sonra bu bilgiler aracılığı ile bir MÖ modeli oluşturulması gerekmektedir. MÖ modeli olarak RDF kullanılacağı daha önce de belirtilmişti. Modeli oluşturmadan önce verebileceği en iyi performans ayarları bilinirse doğal olarak model en iyi performansı verecektir. Bu ince ayarlamaları içeren örnek CLI komutu Şekil 6’da mevcuttur. Bu komut ile SMÖS’nin kendi sunmuş olduğu bir uygulama olup bu komutun çıktısında pek çok olasılığı değerlendiren, bu olasılıkların sonuçlarını kullanıcıya ifade eden bilgilerle modelin daha iyi bir şekilde oluşturulmasını hedeflenir. Elde edilen ‘tavsiye’ parametreler aracılığı ile en başarılı sonucu verecek RDF modeli oluşturulmaya çalışıldı. Bu hedefe, ayarlara çeşitli parametreler uygulanarak (el ile) ve en başarılı sonuçlar denenerek hassas ayarlamaların yapılmasıyla ulaşıldı. Bu komut sonucunda,  Çevirim dışı veri esas alınarak RDF modeli,  Test verisini sınıflandıran etiketler,  Bu etiketlerin yüzde cinsiden doğruluğunu ifade eden olasılık bilgileri, elde edilmiş olur. Analiz: Inosens şirketinin HS hakkında bana sağladığı performans verilerine ek olarak, az önce anlatılan esaslar temel alınarak elde edilen SMÖS değerleri Tablo 2’de ifade edilmiştir [12]. Buna dayanarak öncelikle tablodaki birkaç kavramı, Türkçe karşılıklarının asıl anlamlarını yitirdikleri düşünüldüğünden ötürü açıklanma ihtiyacı duyulmuştur: - P: DP/(DP+YP) değerine eşittir, doğru olan ve doğru olarak tahmin edilen değerlerin, doğru olarak seçilen değerlere oranını ifade eder.
  • 25. 25 - R: DP/(DP+YN) değerine eşittir, doğru olan ve doğru olarak tahmin edilen değerlerin, doğru olarak sınıflandırılan etiketlere oranını ifade eder. - CF: Sırasıyla DP, YP, YN, DN değerlerini içeren karışıklık matrisidir. HS SMÖS P 0.91 0.58 R 0.91 0.24 CF 0.43 0.04 0.14 0.09 0.04 0.47 0.42 0.32 Tablo 2. SMÖS – HS Sonuçlarının Karşılaştırması P ve R değerlerinin yüksek olması (en düşük 0, en yüksek 1 olmak üzere) o sistemin başarısının da fazla olduğunu ifade eder. Karışıklık matrisinde ifade edilen DP (0,0 konumu) ve DN (1,1 konumu) değerlerinin bire daha yakın olması ve diğer değerlerin sıfıra daha yakın olması, bir sistemin başarısının yüksekliğini ifade eder. SMÖS ile oluşturduğum modele uyguladığım testlerde YN olağan dışı bir şekilde fazladır, yani sistem test topluluğunun %42’si için doğru etiketine sahip olduğu halde yanlıştır yargısına ulaşmıştır. Tablo 2’de görüldüğü üzere HS’in her iki değer bağlamında SMÖS’ten daha başarılı olduğu aşikârdır. Skytree şirketinin ‘Skytree Express’ programı dâhilinde pek çok sayıda sunucu üzerinden dağıtık çalıştırmayı desteklemediğini öğrenildi. Bu eylemi bir program olarak sunmaktan ziyade, bir hizmet olarak sunarak müşterilerle ilişki kurmaktadırlar. Dolayısıyla bu yaptığım testler dağıtık ortamda olmamakla birlikte tek makine üzerinde çalıştırılarak elde edilmiştir. Önceden bahsedildiği gibi SMÖS’yi de bu yüzden HS’nin içine bütünleştirmek de bu yüzden yapılamaz durumdadır. Proje kapsamında böyle bir plan mevcutken bu durumdan ötürü, danışman hocamla beraber Inosens’e alternatif platformlar üzerinden performans değerlendirmeleri sonuçları oluşturmaya karar verdik. Testlerimin sonunda SMÖS’nin daha başarılı olduğu bir sonuç beklerken böyle bir sonuçla karşılaşmadım. Beklentilerimin sebebi 2012’de kurulan Skytree şirketinin hizmet verdiği müşterilerin büyüklüğüydü. SMÖS’den daha başarısız sonuç almamın olası nedenleri arasında;
  • 26. 26 - Skytree’nin ücretsiz olarak sunduğu Skytree Express programında doğrudan veya dolaylı yollardan sınırlandırmalar getirilmiş olma olasılığı, - Çevirim dışı verinin yeterince sağlıklı olamaması [13], nedenlerini gösterilebilirim. Her iki olasılık da benim doğruluğunu test edebileceğim değerlendirmeler olmadığı için elde ettiğim sonuçları iyileştirme olasılığım bulunmamaktadır. Ama HS’den elde ettiğim sonuçlar incelendiğinde durumun ya Skytree kaynaklı ya da kendi test metotlarımda yapılmış olabilecek hatalı işlemlerden kaynaklanmış olabileceği yargısına ulaşmaktayım. 2.6. APACHE SPARK PERFORMANS TESTİ Bu aşamadan sonra SMÖS – HS karşılaşmasında kullanılana benzer fakat farklı bir veri kümesi ile çalışmalara devam edilmiştir. Bu veri kümesi önceki veri kümesiyle benzer içeriğe sahip olmakla beraber, bu veri kümesinden oluşturmam gereken veri yığını çok daha büyük ve veri kümesi içindeki anlamlı verilerin çok daha seyrek bir şekilde küme içinde dağıldığı bir özelliğe sahiptir. Oluşturulan dosyayla ilgili ayrıntılar bir sonraki başlıkta ayrıntılı açıklanmaktadır. Spark üzerinde testlerimi uygulayabilmek için Inosens’in paylaştığı 1GB’lık çevirim dışı veri kullanılarak özellik vektörü çıkarma ihtiyacı ortaya çıkmıştır. 2.6.1. ÖZELLİK VEKTÖRÜ OLUŞTURMA Özellik vektörü, verideki her anlamlı noktanın başka anlamlı nokta ya da noktalar topluluğuyla ilişkilerinin ifade edildiği iki ya da daha çok boyutlu veri gösterim biçimidir. Oluşturduğum bu özellik vektörü ile yaklaşık olarak 1.170.000 (birinci grup) ve 50.000 (ikinci grup) birbirleriyle ilişkilendirildiği iki boyutlu bir özgün noktalar topluluğu ortaya çıkarılmıştır. Bu ilişkilerin şekilsel gösterimi aşağıda ifade edilmiştir (Şekil 7). Şekilde gösterilen sayılardan ‘0’ bize bu iki noktanın hiçbir ilişkisinin olmadığını söylerken, pozitif daha büyük bir sayı bu ilişkinin şiddetini ifade etmektedir.
  • 27. 27 Grup1/Grup2 Nokta1 Nokta2 Nokta3 … … … Nokta 50.000 Nokta1 4 0 0 … … … 0 Nokta2 0 0 8 … … … 2 Nokta3 0 1 0 … … … 0 … … … … … … … … … … … … … … … … … … … … … … … … Nokta 1.170.000 1 0 1 … … … 2 Şekil 7. Özellik Vektörü Yapısı Özellik vektörünü oluştururken JVM kullandım ve kendi kişisel bilgisayarımda vektör 13 saatte oluşturularak 107GB’lık bir dosya elde edilmiştir. Bu dosya bulut servisi üzerinden kümeler halinde çalıştırılacağı için hem bulut servislerinin ücretsiz kullanım limitini aşmamak hem de karşı tarafa kolay yükleyebilmek adına bu dosyanın boyutunu küçültmenin bir yolları üzerinde durulmuştur. Öncelikle Spark’ın sıfırlara gerek duymadığını ve boş bırakılan yerlerin sıfır olarak algılandığını öğrenildi. Dosyadan sıfırların çıkarılarak virgüllerle ayrılmış verinin (csv) boyutu 50GB kadar azaltıldı. Daha sonra Spark’ın sahip olunan verideki gibi çok dağınık ve seyrek dağılan verilerin boyutunu çok az boyutlarda tutabilen libsvm formatına sahip dosyalarla işlem yapabildiğini öğrenilmiştir. Buna ek olarak seyrek dağılmış büyük veri incelendiği zaman özelliklerin 27.500. Noktasından sonrasının sadece sıfırlardan ve yer yer sıfırdan farklı sayılardan oluştuğu görülmüştür. Bundan dolayı o bölgenin anlamsızlığından ötürü büyük veriden o kısmın atılmasına karar verilerek özellik sayısı 27.500 ile sınırlandırılmıştır. Şekil 8. Libsvm Formatı Veriler iki farklı sınıfa bölünerek ‘düzenli’ (0) ve ‘düzenli olmayan’ (1) olarak isimlendirildi. Böylece libsvm ile sadece hangi sınıfa ait oldukları, sıfırdan farklı değerler ve indeksleri tutulduğu için (Şekil 8) 57GB’lık özellik vektörü sadece 30MB ile ifade edilebilmiş oldu. <etiket> <indeks1>:<değer1> <indeks2>:<değer2> … <indeksN>:<değerN> …
  • 28. 28 Ölçeklenebilirlik testinin uygulanabilmesi adına son oluşturulmuş 30MB boyutundaki dosyadan 20MB boyutunda içerik alındı. Daha küçük boyutlu dosyadan hem model oluşturup hem de doğruluk performansı, test edilerek ölçülecektir. Daha sonra daha büyük olan özellik vektörü uygulanıp sonuçlar karşılaştırılarak Apache Spark’ın ölçeklenebilirliği üzerine yorum yapılacaktır. 2.6.2 SINIFLANDIRMA MODELLERİNİ UYGULAMA Modelin oluşturulabilmesi için öncelikle Spark üzerinde gerekli ayarlamalar yapılarak sistem kullanıma uygun hale getirilmiştir. Daha sonra aşağıdaki parametreler ile Spark’ın RandomForest.trainClassifier[14] metodu kullanılarak modelleme işlemine başlanmıştır. Şekil 9. Spark RDF Parametreleri Eylemlerimi Amazon AWS üzerinden ücretsiz olarak idrak edebilme ve doğru olarak uygulayabilme adına bazı parametrelerde Spark’ın tavsiye ettiği değerler dışına çıkılmıştır (ağaç sayısının 3 ile sınırlandırılması gibi). Metot, libsvm formatlı dosyayı alıp (Şekil 11, yeşil bölüm) ‘öğrenme’ işlemi için ilgili parametreleri uygulayıp rastgele ağaçlar oluşturmaya başlamaktadır. Oluşturulan bu ağaçlardaki özellik faktörü ve ağaçların büyüklüğü verilen ‘kaynaktan’ ötürü rastgelelelik özelliği taşımaktadır[15]. Rastgele ağaçlar oluşturulduktan sonra geri toplama (aggregate) denilen yöntemle modele uygulanan girdilerin genel ortalaması alınıp birleştirilerek (ensemble) çoğunlukların oluşturduğu düğümlerden oluşmuş ağaçtan hesaplanan sınıfı tahmin etme sonucu kullanıcıya sunulmuş olur (Şekil 10). Sınıf sayısı: 2, (düzenli ve düzenli olmayan) Ağaç sayısı: 3 Özellik sınıflama yöntemi: auto Kirlilik: gini En fazla derinlik: 5 Özellikleri ayırmadaki en fazla ölçüt sayısı (bin): 16 Kaynak: 12345
  • 29. 29 Şekil 10. Özellik Vektör Elemanlarından Modeller Oluşturma Oluşturulan ağaç modelleri bundan sonraki aşamalar için test kaynağımız olacaktır. Büyük veriden rastgele seçilmiş verilerden RDF kullanılarak oluşturulmuş bu modele uygulanacak verilerin arasında eğitim için seçilen veri topluluğu (yeşil), çalışma verisinden ayrılmış küçük test verisi (turuncu), bütün verilerin büyük test için uygulanacağı veri topluluğu (siyah) vardır (Şekil 11). Şekil 11. Veri Yığınındaki Bölümler Analiz: Oluşturulmuş model için 4 küme (sunucu, cluster) üzerinde ‘öğrenme’ için ayrılmış verinin dışında kalan ‘çalışma’ verisi (Şekil 11, yeşil olmayan turuncu alan) kullanılarak modellere ilk girdi sokulmuştur. Elde edilen sonuçların ortalamasıyla elde edilen sonuçlar ile elimizde karşılaştırmak için bulundurduğumuz gerçek sonuçlara göre doğruluk oranı hesaplanmıştır. Daha sonra tüm veriyi kapsayan kısım (Şekil 11, siyah kısmın tamamı) test için modellemeye sokulmuştur. İki test işlemi için de elde edilen ağaçların ilk kısımları Şekil 12’de ifade edilmiştir. Görüldüğü üzere bazı özellikleri içeren düğümlere (Çalışmadan ayırılmış test verisi için) Tree 0: If (feature 16807 <= 0.0) If (feature 21731 <= 0.0) If (feature 5927 <= 0.0) If (feature 17790 <= 0.0) If (feature 17277 <= 0.0) Predict: 1.0 Else (feature 17277 > 0.0) Predict: 1.0 … Tree 3: … Şekil 12. Oluşturulmuş Örnek Ağaç Yapısı
  • 30. 30 ‘çoğunluğunu’ kaybedip başka düğümler onların yerlerini alırken bazılarının da tahmin edildikleri sınıflarda değişimler gerçekleşmiştir. Oluşturulmuş ağalardaki değişimler ve tahmin edildikleri sınıflardaki değişim olma ihtimalleri gözlendikten sonra her iki test verisi için de doğruluk oranı karşılaştırması yapılmıştır. Bu işlem modelleme oluşturulmadan önce belirlenmiş sınıf verileriyle karşılaştırma yapılarak elde edilmiş oranı ifade etmektedir. Sonuçlarda doğruluk ve hata değerleri için 1’e yakınsaması o değerin oranını artırmaktadır (Tablo 3). Sonuç/Veri Tipi Küçük Veri Test Verilerin Tamamı İsabetlilik 0.823381 0.949783 Hata 0.178261 0.050216 Tablo 3. Spark Test Sonuçları Oluşturulmuş modele daha büyük bir veri topluluğu uygulandığı zaman %15,35 oranında doğrulukta artış gözlemlenmiştir. Bu durum Spark’ın ölçeklenebilirlik tanımını sağladığına bir örnektir. Artan talepler karşısında performansından (doğruluk) bir şey kaybetmediği halde sonuçlarını daha da iyileştiren bir yapıya sahiptir. Aynı zamanda modellemenin çalıştırıldığı küme sayısı artırıldığı zaman da MapReduce [16] ve küme yönetimindeki uygulamaları sayesinde performans kaybına uğramayacağı savunulmaktadır [17]. Bu yüzden Spark alternatifler arasında uygun bir aday olarak yer almaktadır. 2.7. R PERFORMANS TESTİ Spark’ın dışında ücretsiz alternatif sunabilmek adına R programlama dilinin, sahip olunan veri yığınındaki kabiliyeti bu başlık altında incelenmiştir. Kolay kullanım ve arayüz avantajı sağladığı için testlerde RStudio programı kullanılmıştır. RDF algoritmasını uygulayabilmek adına mevcut algoritmalar arasından en uygununun randomForest kütüphanesi olduğuna karar verilmiştir. Kurulumu ve kullanımı aşağıdaki şekilde ifade edilmiştir.
  • 31. 31 Şekil 13. R Platformuna RDF Kurulumu Veri yığınının yapısını hatırlayacak olursak çok fazla vektöre sahip olmasından ziyade çok fazla özelliğe sahip olması R üzerinde yapılmaya çalışılan testleri aksatacak derecede etkilemiştir (Şekil 7). Dolayısıyla Spark için uygulanan test verisinde yapılan özellik sayısını azaltma düzenlemesi R platformu için de uygulanmıştır. Şekil 14. R RDF Model Oluşturma Zamanları İlişkisi R üzerindeki RDF sınıflandırıcısı, sınıf sütununun özellik sütunları arasında belirtildiği, metodun çalışacağı veri setinin seçildiği ve bunun dışında gerekli görülürse test verisinin de eklenebildiği bir metoda sahiptir. Bu metot, ek olarak ilgili parametreler ile çalıştığı ortam ya da çalıştırılan veri ile ilgili en elverişli performansı sunmaya yönelik şekilde tasarlanmıştır. Analiz: Verinin büyüklüğünden ötürü yaşanan problemleri gidermek adına donanımı en az kullanacak parametreler seçilmiştir. Buna rağmen elde edilen performans çok yavaş install.packages(randomForest) && library(randomForest)
  • 32. 32 olmakla beraber belli bir süre sonra R’ın kendi içinde tanımladığı limitlere ulaşınca (ö: max integer limit) metot kendiliğinde sonlanmaktadır. Özellik sayısını azaltmaya yönelik bir girişim olmamıştır çünkü azaltılan özellik sayısı üzerinde yapılacak test sonuçlarını, diğer platformlardan elde edilen sonuçlarla karşılaştırmak anlamsız olacaktır. Model oluşturulurken karşılaşılan bu sınırlama için alternatif olarak oluşturulan ağaç sayısı bire indirilmekle beraber danışman hocamın tavsiyesi olan bilgileri parça parça uygulama (mini batch) yöntemi üzerine yoğunlaşıldı. Bu yöntem ile verideki vektör sayısını parça parça uygulamaya sokularak olası sınırlamalar ile karşılaşmamak gibi bir beklentimiz mevcuttu. Uygulanan bu yöntemle elde edilen sonuçlar yine tatmin edici değildi. Çünkü oluşturulan sadece ‘bir vektörden oluşturulmuş bir ağaçlık modelin’ elde edilme süresi yaklaşık on saatlik bir zamanı buluyordu. İfade edilecek olursa var olan verinin en az %10’u üzerinden model oluşturma gibi bir plan mevcuttu. Yani bu sayıdaki veri için oluşturulacak modelin elde edilme süresi beklemeyi anlamsızlaştıracak kadar uzundu (Tahmini olarak 10 x 105.000 saat, Şekil 15 hedef olarak işaretlenen kesim). Dolayısıyla bu yöntem ile daha fazla ilerleme kaydedilemedi. 1 ağaç grup/nokta 22.700 (orijinal büyüklük) 10.000 5.000 1000 1 10 saatten fazla 10 saatten fazla * * 170 * * 2 saatten fazla 17sn 9.000 * * * 70sn 1.150.000 * (hedef) * * * 3 ağaç grup/nokta 1000 9.000 2400 sn 100.000 7.5 saat Şekil 15. R RDF Model Oluşturma Zaman Analizi Yapılan gözlemlere göre özellik sayısı arttıkça modeli oluşturma süresi zaman açısından üslü bir şekilde artmaktaydı (Şekil 14). Böyle bir sonuç beklendik bir şey olmakla beraber 27.500 özellikli tek bir vektörün oluşturulmasındaki geçen süre
  • 33. 33 incelendiği zaman genel performansın ne kadar kötü olduğu gün yüzüne çıkmaktadır. İşte oluşturma zamanındaki bu aşırılık bu noktadan daha ileriye gidememeye sebep olmuştur. Geriye kalan tek uygulanabilir çare olarak özellik sayısını (nokta) azaltarak veriyi parça parça uygulamaktır ama o zaman da veri anlamsızlaştırılmaktadır. Bundan ötürü R platformu için, çok fazla özellikli veri yığınlarının analizinde RDF metodunun kullanılmamasının veya başka platformların alternatif olarak seçilmesinin daha faydalı olacağı görüşüne varılmıştır. 2.8. KİŞİSEL RDF SINIFLANDIRCIMIN PERFORMANS TESTİ Mevcut sınıflandırıcılarla beraber danışman hocamla beraber fazladan bir seçenek daha sunabilmek adına Java dilinde RDF sınıflandırıcısı yazma kararı verildi. Yazılan bu kod, RDF’in temel prensiplerini desteklemekle beraber tasarımından bir sonraki bölümde bahsedilecektir. Yazılan bu platform da, bir önceki platformlardaki gibi Amazon AWS üzerinden oluşturulmuş EC2 örneği ile dağıtık bir şekilde çağırılarak çalıştırılmıştır. Oluşturulan sanal sunucular (EC2 instance) da önceki platformlardaki gibi Ubuntu 14.04 üzerinde çalışmaktadır. 2.8.1 TASARIM Bu bölümde oluşturulan sistemin nasıl tasarlandığı, tasarlanırken hangi faktörlerin dikkate alındığı, çalıştırılması için gerekli olan ihtiyaçlardan bahsedilmiştir. 2.8.1.1 GİRDİ FORMATI Sınıflandırıcının değerleri düzenli ve hızlı bir şekilde işleyebilmesi için SMÖS platformundakine benzer bir girdi formatı kabul edildi. Yani her bir satır bir vektörü temsil ederken virgüllerle ayrılmış her özellik o vektörün sahip olduğu değerler bütününü ifade etmektedir. İlk satır özellik sayısı + bir(sınıf) kadar virgülle ayrılmış başlığı içermelidir (Şekil 16).
  • 34. 34 Şekil 16. RDF Girdi Formatı Aynı veri yığını üzerinde çalışıldığı için sınıflar 0 (düzenli), 1 (düzenli olmayan) anlamlarına gelmektedir. Bu girdi verisi, Spark için oluşturulmuş libsvm formatından yeniden üretilerek oluşturulmuştur. 2.8.1.2 ÇALIŞMA ŞEKLİ Girdi olarak okunan dosyanın önceden çalışma ve test edilme amaçlarıyla ayrılmış olması beklenmektedir. Program, çalışmak için oluşturulmuş bu dosyayı alarak büyüklük vb. gibi ağacın özelliklerinin tanımlandığı bir metoda sokularak burada okunan ve tanımlanan veri, ArrayList yapısında dinamik bir şekilde kullanıma sunulur. Program 5 GB’dan az bellek tüketecek şekilde yazılmıştır. Dolayısıyla çok büyük verilerin uygulanabilmesi için parçalara ayrılması gerekmektedir. Veri yığınındaki hiçbir özellik değerlerine sahip olmayan vektörleri yığınımdan temizleyerek veriyi biraz olsun küçülttükten sonra bölünecek en uygun dosya büyüklüğünün 850MB olduğuna karar verildi. Bu verileri sürekli işleyerek model oluşturacağından ötürü programın JVM üzerinde rahatça çalıştırılabilmesi adına bazı parametrelerin girilmesine ihtiyaç duyulmaktadır (Şekil 17). Bu parametreler JVM çöp toplayıcısının çalışma şeklini düzenlemekle beraber çalıştırılan sanal makineyi 5GB büyüklükteki bellek ile sınırladığını ifade eder. Daha sonra ağacın özellik sayısı, kategorik veri sayısı (sınıfı tanımlamak için kullanılmıştır ve 1 değerine eşittir) ve toplam özellik sayısı arasından seçilecek veri sayısının belirtilmesi gerekmektedir. Seçilecek özellik sayısı olarak Breiman’ın önerdiği formül olan (logTOPLAM_ÖZELLİK/log2)+1 kullanılmıştır[18]. Ö1, Ö2, Ö3,…, SINIF Değer1, Değer2, Değer3,…, 1
  • 35. 35 Şekil 17. Düzenlenmiş JVM Parametreleri Çalıştırılan program her ağaç için bir thread oluşturarak en hızlı hizmeti sunmak amaçlanmıştır. Fakat karşılaştırmalarımda uyguladığım ‘diske yazarak ön belleğe alma’ ve ‘bellek’ kısıtlamalarından dolayı testlerimde sadece 1 ağaç oluşturdum. Ama Spark ile yapılan testler ile benzer olması adına büyük verinin %10’u ile oluşturulmuş ‘bir ağaçlık yedi modelin’ sonuçlarını genellenerek, oluşturulmuş yedi ‘orman’, tek ‘orman’ olarak ifade edilmiştir. Oluşturulan veriler için 2.3.1.de bahsedilen karar ağaçları oluşturulmuştur. Karar ağacını doldurmadan önce, bootsrap yöntemi kullanılarak girdiden rasgele veri ve onlara ait belirlenmiş sayıdaki rastgele özellikler seçilerek veri parçaları çekilir. Daha sonra bu veri parçası, ağaç veri yapısının da yardımıyla özyinelemeli (recursive) bir yöntem uygulanarak uygun yerlerden parçalara ayrılıp ve o seviyede bulunan düğümlerin üzerine yerleştirilmektedir. Uygun yerlerden ayrıştırma metodu, özelliklerin sıralı dizilimi, o bölümdeki kararın verilebilmesi için çoğunluğun oluşturduğu sonuçları inceleme (entropy) ve bu sonuçları veriyi en anlamlı olacak yerler şeklinde uygulandı. Ana tasarım bu şekilde olmakla beraber bu tasarımın uygulanmasına yardımcı olabilecek yardımcı metotlar da programda uygulanmıştır. 2.8.2 UYGULAMA Üzerinde çalışılan verinin çok büyük olmasının, uygulanacak yöntemlerin farklı şekillerde yapılmasını zorladığı, önceki platform başlıklarında da bahsedilmişti. Diğer platformlarda kullanıcı adına yapılan büyük veriyi parça parça alıp işleme yöntemi, bu uygulamanın sağlanabilmesi için kullanıcı tarafından önceden düzenlenmesi beklenmektedir. Düzenleme işinin gerçekleştirilebilmesi adına öncelikle 107GB boyutundaki ham dosyada var olan boş vektörler yok sayılarak boyut azaltıldı. Daha sonra vektörlerin R platformunda denendiği gibi tek tek (mini -Xms32m -Xmx5g -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
  • 36. 36 batch) alınıp işlenmesinden ziyade yaklaşık 850MB büyüklüğündeki bir dosyanın, çalışılan ortam tarafından sorunsuz çalıştırılabileceği tespit edildi. Önceki testlerimde uyguladığım gibi bu testte de ölçeklenebilirliği test edebilme adına veri yığının %10’luk bir kısmı üzerinden model oluşturulmaya karar verildi. Bunun için her biri 850MB büyüklüğünde yedi parçalık, veri yığını üzerinden rastgele seçilen satırlar kullanıldı. Bu parçalardan oluşturulan ‘bir ağaçlık yedi model’, yedi ağaca sahip bir model gibi kullanılmıştır. Yani uygulanan test verilerinin sınıflandırma sonuçları için yedi parçanın çoğunluğundan çıkan karara bakılmıştır. Böylelikle donanım açısından kısıtlanan bir durumdayken benzer şekilde çalışan alternatif bir seçenek sunulmuştur. Modeller oluşturulduktan sonra üç parçalık ‘küçük test verisi’ uygulanmıştır. Son olarak otuz beş parçalık büyük veri, oluşturulan modeller bütününe uygulanarak sonuçlar elde edilmiştir. Bu sonuçlar analiz başlığı altında incelenecektir. 2.8.3 ANALİZ Dosyadaki bir vektörün çok fazla özelliğe sahip olmasına rağmen parça parça bölünerek üzerinde işlemler yapılması, yaptığım hesaplamalara göre tek parça olarak yapılması senaryosuyla zaman açısında aynı performansı sergileyecekti. Dolayısıyla modelleri oluştururken zaman açısından pek bir şey kaybedilmediği savunulmaktadır. Ama aynı önerme, doğruluk oranı açısından bakıldığı zaman tersi yönde ifade edilerek genellenmelidir. Bu savunma daha büyük örnek uzayından oluşturulan modellerin daha isabetli orana sahip olduğuna dayanmaktadır [19]. Şekil 18’te de görüldüğü üzere çalışma verisinden oluşturulmuş modele uygulanan küçük test %87,6’lık ortalama doğruluk oranına sahiptir. Yani her 10 vektörden yaklaşık 8,7’sinin sahip olduğu sınıf kimlikleri doğru tahmin edilebilmiştir. Öte yandan oluşturulmuş modele büyük veri uygulandığında ortaya çıkan ortalama sonucun %90,9 ortalama ile daha başarılı olduğu gözlenmiştir (Hangi veri bölümü nereye uygulanıyor, bkz. Şekil 11).
  • 37. 37 Şekil 18. Java ile Yazılmış RDF İsabetlilik Sonuçları Elde edilen bu sonuç bize birkaç gerçeği vurgulamaktadır. Oluşturulmuş bu modellemenin ölçeklenebilir olması kuvvetle muhtemeldir. Çünkü ölçeklenebilirliğin tanımı olan artan veride daha başarılı (isabetli) performansı bu veri yığını için sağlamaktadır. Fakat sadece sahip olunan verilerle kesin ölçeklenebilirdir yorumunun yapılması yanlış olabilir çünkü bu sonuçların elde edilmesinde pek çok rastgelelik etkeni vardır. Fakat zaten RDF ile önerilen algoritma, bu rastgelelik etkeninin genellendiği zaman ‘çoğu zaman’ başarılı sonuçlar elde etmeye yönelik olduğudur [20]. Tüm bu bilgilere dayanarak yazılmış bu modelin çok daha büyük veriler için daha başarılı sonuçlar verme olasılığı beklenmelidir. Ama daha kötü sonuçlar verebileceği de ihmal edilmemelidir. Şekil 18’e tekrar baktığımız zaman verinin tamamı uygulandığı zaman yer yer doğruluk oranında düşüşler yaşanmaktadır. Ama hem dipteki değerler hem de tepedeki değerler yeni parçalar sınıflandırıldıkça daha iyi performans sergilemeye meyillidirler. Dolayısıyla bu gerçek de ortalama doğruluk oranının zaman içinde artmasına neden olmuştur.
  • 38. 38 2.9. BAŞARI KRİTERLERİ Bu projenin başında üç tane başarı kriteri belirlenmiştir. Bu başarı kriterleri ve proje sırasında bu ölçütlerin sağlanması özetlenmiştir. 1. SMÖS’i başarıyla HS platformu ile bütünleştirmek, SMÖS’nin siyah kutu benzeri bir çalışma mekanizması sergilediği gözlenmiştir. Yani kullanıcıya sadece girilen veriyi kontrol etme ve çıkan sonucu gözlemleme imkânı verilmekle beraber sistemi düzenlemeye izin vermemektedir. Durum böyle olunca başarı kriterini güncelleme ihtiyacı duyulmuştur. Bunun yerine kriter, Spark, R ve proje esnasında geliştirilen RDF platformlarının RDF performanslarının sunulacağı şekilde güncellendi. Güncellenmiş kriter başarı ile gerçekleştirilmiştir. 2. Ölçeklenebilirliği belirleyecek problemler belirlemek, Inosens’ten konuyla ilgili temin edilmiş iki farklı çevirim dışı veri topluluğu, platformların uygulayabileceği şekilde düzenlenmiştir. Her bir platform için veriler farklı şekillerde düzenlenmiştir. Her platform için problemleri temsil eden veri toplulukları başarı ile düzenlenmiştir ve uygulanmıştır. 3. Her platforma ait RDF sınıflandırıcıları ile sonuçlar elde ederek performans değerlendirmeleri yapmak, Inosens’ten sağlanan HS sonuçları ile beraber, yine aynı veri topluluğu uygulanarak oluşturulan modelden elde edilen SMÖS sonuçları karşılaştırılmıştır. Madde 1’de bahsedilen güncellemeden ötürü çok daha büyük bir veri topluluğu, Spark, R ve proje esnasında yazılan RDF sınıflandırıcı için uygulanarak modeller oluşturulmuştur. Modellerden elde edilen sonuçların doğruluk oranlarını gözlemleyerek bir takım değerlendirmelerde bulunulmuştur. Bu karşılaştırmalarla ilgili değerlendirmeler Bölüm 3’te ayrıntılı bir şekilde ifade edilmiştir. Özetlenecek olursa iki farklı veri topluluğu, beş farklı platforma uygulanarak sonuçlara bağlı değerlendirme işlemleri başarı ile gerçekleştirilmiştir.
  • 39. 39 3. SONUÇ VE TARTIŞMA Bu proje, günümüzde kullanılan mevcut makine öğrenme sistemlerinden seçilmiş bazılarının karşılaştırmalarını içermektedir. Bu karşılaştırmalar ölçeklenebilirlik özelliklerine bakılarak yapılmış olup karşılaştırma kıstası olarak platformlara ait rastgele karar ormanları modelleme algoritmaları (RDF) kullanılmıştır. Projenin öncelikli amacı, Inosens şirketinin talepleri doğrultusunda, Skytree’ye ait ‘Skytree Makine Öğrenme Sistemi’ ile Inosens’e ait ‘Hidden Slate Veri Analiz Platformu’nu karşılaştırmaktı ve daha sonra SMÖS’i HS içine bütünleştirerek SMÖS’nin RDF uygulamasını HS’in bir parçası haline getirmekti. Fakat SMÖS’nin kapalı bir ‘siyah kutu’ olmasının öğrenilmesinden sonra sadece sonuçları karşılaştırarak kısmi bir sonuca ulaşma yolu izlenmiştir. Bu yöntem her iki platforma da aynı girdileri sokarak, kendi RDF uygulamalarının kullanarak çıkan sonuçlardan ‘karışıklık matrisi’ yaratılarak gerçekleştirilmiştir. Bu matrise bakıldığında ortaya çıkan sonuçla bir hayli fark olduğu gözlemlenir (Tablo 2). Sahip olduğumuz veri için HS %90 oranında bir doğruluk oranına sahipken SMÖS her on girdiden sadece dördünü (%40) doğru tahmin etmiştir. Aynı veriler üzerinden elde edilmiş bu kadar farklı tahmin edilme oranlarına dayanarak SMÖS’nin (en azından bedava kullanıma sunulmuş Express sürümünün) başarısızlığı vurgulanmalıdır. Projedeki amaç SMÖS ve HS karşılaştırmasını yaptıktan sonra SMÖS’yi HS ile bütünleştirmekti. SMÖS’nin kapalı bir sistem davranışı sergilemesinden dolayı projedeki bu kriter güncellenmiştir. Yapılmış bu iki karşılaştırmanın yanı sıra Inosens’e farklı alternatifler sunma yoluna gidilmiştir. Alternatif uygulamalar olarak Apache’nin geliştirdiği Spark, R dilinin RDF kütüphanesi ve Java dilinde yazmış olduğum RDF uygulaması seçilmiştir. Alternatif uygulamalar için önceki karşılaştırmada kullanılan çevirim dışı verinin başka bir sürümü kullanılarak, 107GB büyüklüğünde çok daha büyük bir veri yığını oluşturulmuştur. Oluşturulan veri yığını, her platform için benzer şekilde kullanılarak sonuçların sadece platformların kendi RDF uygulamalarına bağlı değişkenlik göstermesine özen gösterilmiştir.
  • 40. 40 Her platform için bütün verinin %10 kadarlık kısmını oluşturan ve bu kısmın %70’ini içeren bir çalışma verisi ve kalan %30’luk kısım ile küçük test verisi seçilmiştir. Çalışma verisinden Spark için üç ağaçlık bir model, Java’da yazılan RDF için bir ağaçlık yedi farklı modelin sonuçlarının toplandığı ‘sanal yedi ağaçlık bir model’ (aynı veri miktarına hitap ettiği için yedi ağaç seçilmiştir) oluşturulmuştur. R içindeki RDF uygulamasında sahip olduğumuz veri yığınının çok fazla özelliğe sahip olma niteliğinden dolayı uyumsuzluk problemleri yaşanarak başarısız olunmuştur. Model oluşturma zamanları açısından yazmış olunan RDF uygulaması biraz daha kısa sürmüştür (Şekil 19). Ama bu Spark’ın daha yavaş olduğu anlamına gelmemektedir. Çünkü Spark ile model oluştururken donanım Şekil 19. Modellerin Oluşturulma Süreleri sınırlamalarından dolayı bellekte çalışan program, kendini, çalışma zamanının %80’i boyunca diske yedekleyerek önbelleğe almıştır. Diskten, zamanının %80’ini okuma yazma yaparak geçiren bir programın eğer sadece bellekte çalışsaydı bu kadar süre çalışmayacağı ortadadır. Veri yığınından daha az rastgele veri seçerek oluşturduğum test modellerinin oluşturulma zamanlarına bakarak, model oluştururken harcanan zamanın, veri miktarına bağlı lineer bir eğilim izlediği gözlenmiştir (Şekil 20). Modeller oluşturulurken, artan girdi miktarında, zaman
  • 41. 41 açısından sadece girdiye bağlı lineer bir artış eğilimi göstermektedirler (R RDD uygulaması hariç). Şekil 20. Model Oluşturma Zamanları Ölçeklenebilirlik Karşılaştırması Çalışma verisinden ayrılmış %30’luk parça oluşturulan modellere uygulanmıştır. Daha sonra verinin tamamı modele uygulanarak tahmin edilme sonuçları elde edilmiştir. Verileri yüzde olarak ifadesinin genel ifadesi Şekil 11’de gösterilmiştir. Elde edilen sınıfların tahmin edilme sonuçlarından oluşturulmuş doğruluk oranları, modellerin ölçeklenerek katlanmış örneklemeler karşısında verdikleri performansları yorumlamamıza yardım edecektir. Şekil 21. Ölçeklenmiş Veride Modellerin Performansı
  • 42. 42 R RDF uygulamasıyla model oluşturmada elde edilen yetersiz performans, yapılan karşılaştırmada ifade edilmemiştir (Şekil 21). Elimizdeki veri topluluğu göz önünde bulundurularak, ölçeklenebilirlik performansında başarıya ulaşamadığı söylenebilir (Şekil 15). Çünkü sadece ‘özelliklerini kaybetmemiş tek bir vektörden oluşturulacak model için’ harcanan süre on saatin üzerindeyken bütün veri yığını üzerinden %10 oranında rastgele seçilecek veriden oluşturulacak model için geçecek süre diğer platformlarla karşılaştırıldığında anlamsız kalmaktadır. Öte yandan diğer iki platformun sonuçları incelenecek olursa küçük testlerde (Sütun 1,3,5 Şekil 21), yazılmış RDF uygulamasının %5 daha başarılı olduğu görülürken, modeller büyük veriye (Sütun 2,4,6 Şekil 21) uygulandığı zaman Spark’ın daha başarılı sonuç verdiği gözlemlenmiştir. Her iki platform da büyük testlerinde, küçük testlerine göreceli bir şekilde daha başarılı sonuçlar sergilemişlerdir. Ama Spark’ın büyük veride yazılan RDF’ye göre %4 daha başarılı doğruluk performansı göstermiş olması, Spark’ın kullanılan ‘dağınık veri yığını’ için daha ölçeklenebilir olduğu savını doğrular niteliktedir.
  • 43. 43 KAYNAKLAR [1] Skytree, Enterprise-Grade Machine Learning for Big Data | Skytree, San Jose, CA, USA, http://www.skytree.net [Ziyaret Tarihi: 26 Mayıs 2016] [2] Skytree, Skytree’s Customers | Skytree, San Jose, CA, USA, http://www.skytree.net/customers [Ziyaret Tarihi: 20 Mart 2016] [3] Inosens, inosens, Teknopark Pendik, İstanbul, http://inosens.com.tr [Ziyaret Tarihi: 20 Mart 2016] [4] The Apache Software Foundation, Apache Spark, Forest Hill, Marylan, USA, http://spark.apache.org [Ziyaret Tarihi: 20 Mart 2016] [5] Wikipedia, Random Forest, https://en.wikipedia.org/wiki/Random_forest [Ziyaret Tarihi: 20 Mart 2016] [6] Quinlan, J. R., Simplifying Decision Trees, International Journal of Man- Machine Studies 27 (3): 221, 1987 [7] Opitz, D., Maclin R., Popular Ensemble Methods: An Empirical Study, Journal of Artificial Intelligence Research 11: 169–198, 1999 [8] Rokach, L., Ensemble-Based Classifiers, Artificial Intelligence Review 33 (1-2): 1–39, 2010 [9] Breiman, Leo, Bagging Predictors, Machine Learning 24 (2): 123–140, 1996. [10] Rokach, L., Maimon, O., Top-down Induction of Decision Trees Classifiers-A Survey, IEEE Transactions on Systems, Man, and Cybernetics, Part C 35 (4): 476– 487, 2005 [11] Ho, Tin Kam, A Data Complexity Analysis of Comparative Advantages of Decision Forest Constructors, Pattern Analysis and Applications: 102-112, 2002. [12] Powers, David M W, Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness & Correlation, Journal of Machine Learning Technologies, s 37-63, 2011 [13] Sarle, Warren S., Subject: What are the population, sample, training set, design set, validation set, and test set?, Cary, NC, USA, ftp://ftp.sas.com/pub/neural/FAQ.html#A_data [Ziyaret Tarihi 9 Nisan 2016] [14] The Apache Software Foundation, RandomForest (Spark 1.4.0 Javadoc), Forest Hill, Maryland, USA, https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/mllib/tree/RandomFor est.html [Ziyaret Tarihi: 15 Mayıs 2016] [15] Wikipedia, Random Seed, https://en.wikipedia.org/wiki/Random_seed [Ziyaret Tarihi: 15 Mayıs 2016] [16] Dean J, Ghemawat S, MapReduce: Simplified Data Processing On Large Clusters, Google Inc., http://static.googleusercontent.com/media/research.google.com/es/us/archive/mapre duce-osdi04.pdf [Ziyaret Tarihi: 15 Mayıs 2016] [17] The Apache Software Foundation, Cluster Mode Overview – Spark 1.2.0 Documentation, Forest Hill, Maryland, USA, https://spark.apache.org/docs/1.2.0/cluster-overview.html#cluster-manager-types [Ziyaret Tarihi 15 Mayıs 2016] [18] Breiman, L., Random Forests, University of California, Berkeley, CA, USA, https://www.stat.berkeley.edu/~breiman/randomforest2001.pdf [Ziyaret Tarihi: 18 Mayıs 2016]
  • 44. 44 [19] Halevy, A., Norvig, P., Pereira, F., The Unreasonable Effectiveness of Data, IEEE Intelligent Systems, Issue No.02 - March/April (2009 vol.24): 8-12, https://www.computer.org/csdl/mags/ex/2009/02/mex2009020008-abs.html [Ziyaret Tarihi: 19 Mayıs 2016] [20] Geurts, P., Ernst, D., Wehenkel, L., Extremely Randomized Trees, Machine Learning 63: 3-12, http://link.springer.com/article/10.1007%2Fs10994-006-6226-1 [Ziyaret Tarihi: 20 Mayıs 2016]
  • 45. 45 EKLER  Basılı: a. Ciltlenmiş bitirme projesi raporu  CD: a. Bitirme projesi raporu (doc ve pdf formatlarında) b. Proje sunum dosyası (ppt ve pdf formatlarında) c. Yazılan programlar ve diğer uygulamalar i. Programın tasarım dökümanı ii. Program kodları ve derleme bilgisi iii. Test ve deneylerde kullanılacak veri dosyaları (Inosens ile yapılan anlaşma gereği dâhil edilmemiştir.)  Ek-1: Platformların doğruluk karşılaştırmalarının toplandığı grafik
  • 46. 46 EK-1 Aşağıda ifade edilmiş olan tablo, platformlara uygulanan veri topluluklarından elde edilen doğruluk performanslarını ifade etmektedir. Veri toplulukları karşısında yaklaşık doğruluk değerleri, okuyucuya fikir vermek açısından sunulmuştur. Tüm satırların birbiriyle eşit koşullarda test edilmediği bilinmelidir. Tablodaki 8 ve 7. satırları birbirleriyle ilişkilendirilmeli, kalan satırlar da kendi aralarında ilişkilendirilmelidir.
  • 47. 47