GERÇEK AĞ VERİSİ ÜZERİNDE VERİ MADENCİLİĞİ UYGULAMALARININ KARŞILAŞTIRILMASI Fatih ATAK BİLGİSAYAR BİLİMLERİ YÜKSEK LİSANS TEZİ GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ Şubat 2014 ANKARA iv GERÇEK AĞ VERİSİ ÜZERİNDE VERİ MADENCİLİĞİ UYGULAMALARININ KARŞILAŞTIRILMASI (Yüksek Lisans Tezi) Fatih ATAK GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ Şubat 2014 ÖZET Günümüzde hemen hemen her alanda kayıt altına alınan anlamlı/anlamsız veriler bulunmaktadır. Devlet, şirket, firma, banka, market, evler ve daha birçok yerlerde görüntülü, sesli ve hem görüntülü hem sesli saklanabilen veriler saklanmaktadır. Gün geçtikçe işlenmeyen, bekleyen, bekletilen veri yığınları veri çöplüğü haline gelmektedir. Fakat bu veri yığınları işlenildiğinde, bilgiye dönüştürüldüğünde topluma yani toplumun en önemli faktörü olan insanlığa hizmette yegâne işler arasında gösterilebilir. Çünkü artık teknoloji ile toplum o kadar iç içe geçti ki zamanın her dakikasında, saniyesinde farkında olmadan etrafa anlamsız veriler bırakabiliyoruz. Veri yığınları küresel dünyada başa çıkılamayan risklerden biri haline gelmiştir. Bu çalışma da incelenen örnek kurumun internet ağında kullanılan karmaşık ağ veri yığınını veri madenciliği süreçleri ile kullanılabilir hale getirilmiştir. Uygun veriler üzerinde veri madenciliği yöntemleri kullanılarak çıkan sonuçlar arasında çıkarımda bulunulmaya çalışılmış, ayrıca farklı veri madenciliği uygulamalarından elde edilen sonuçlar arasındaki farklılıklar incelenmiştir. v Bilim Kodu Anahtar Kelime Sayfa Adedi Tez Yöneticisi : 902.1.012 : veri madenciliği, yöntemleri : 74 : Doç. Dr. Suat ÖZDEMİR vi DATA COMPARISON OF DATA MINING TOOLS USING REAL WORLD NETWORK DATA (M.Sc. Thesis) Fatih ATAK GAZİ UNIVERSITY INFORMATICS INSTITUTE February 2014 ABSTRACT Nowadays, almost every area recorded the meaningful / meaningless data are available. Government, companies, firms, banks, markets, houses and many more places video, voice and data can be stored both voice and video are stored. Unhandled by day, pending, pending data dump piles of data are becoming. But when these piles of data processed, the information is converted into society so that society's most important factor in service to humanity oil valve shown between jobs. Because society is now so intertwined with technology goes away every minute of the time, in seconds around unwittingly have been able meaningless data. Piles of data that can not be dealt with in the global world has become one of the risks. In this study, samples already used in the organization's internet network stack of complex networked data has been made available through data mining process. Using data on the appropriate data mining methods have been tried to be drawn from the results. vii Science Code Key Words Page Number Adviser : 902.1.012 : data mining, methods : 74 : Assoc. Prof. Dr. Suat ÖZDEMİR viii TEŞEKKÜR Çalışmalarım boyunca yardım ve katkılarıyla beni yönlendiren değerli Hocam tez danışmanım Doç. Dr. Suat ÖZDEMİR’e, tecrübelerinden faydalandığım değerli Hocam Özgür DOLGUN’a, TÜBİTAK Başkanım Sayın Prof. Dr. Yücel ALTUNBAŞAK’a, mesai arkadaşım Eren YAZICIOĞULU’na ve yakın çalışma arkadaşlarım Süha BOTSALI’ya, Resul ÖZDEMİR’e ayrıca manevi destekleriyle beni hiç yalnız bırakmayan değerli eşim H. Zehra GÖKÇEOĞLU ATAK’a, anneme, babama ve kardeşlerime teşekkürlerimi bir borç bilirim. ix İÇİNDEKİLER Sayfa ÖZET ............................................................................................................. iv ABSTRACT .................................................................................................... vi TEŞEKKÜR.................................................................................................. viii ŞEKİLLERİN LİSTESİ .................................................................................... xi SİMGE VE KISALTMALAR .......................................................................... xiv 1. GİRİŞ ....................................................................................................... 1 2. VERİ MADENCİLİĞİ ................................................................................ 3 2.1. Veri Madenciliği Nedir? ................................................................... 3 2.2. Uygulama Alanları ........................................................................... 6 2.2.1. Sigortacılık ............................................................................ 6 2.2.2. Bankacılık ............................................................................. 6 2.2.3. Pazarlama ............................................................................ 7 2.2.4. Elektronik ticaret ................................................................... 7 2.2.5. Biyoloji, tıp ve genetik ........................................................... 7 2.2.6. Kimya.................................................................................... 7 2.2.7. Yüzey analizi ve coğrafi bilgi sistemleri ................................ 8 2.2.8. Görüntü tanıma ve robot görüş sistemleri ............................. 8 2.2.9. Uzay bilimleri ve teknolojisi ................................................... 8 2.2.10. Meteoroloji ve atmosfer bilimleri ......................................... 8 2.2.11. Sosyal bilimler ve davranış bilimleri .................................... 8 2.2.12. Metin madenciliği ................................................................ 9 2.2.13. Bilimsel, mühendislik ve sağlık bakım verileri ..................... 9 2.3. Veri Madenciliği Modelleri ............................................................... 9 x 2.3.1. Sınıflandırma ...................................................................... 10 2.3.2. Kümeleme .......................................................................... 11 2.3.3. Birliktelik kuralı/analizi......................................................... 12 2.4. Birliktelik Kuralı ve Apriori Algoritması........................................... 13 2.4.1. Birliktelik kuralı .................................................................... 14 2.4.2. Apriori algoritması ............................................................... 15 2.5. Sınıflandırma ve Karar Ağaçları, Naive Bayes Algoritmaları ......... 19 2.5.1. Sınıflandırma ...................................................................... 19 2.5.2. Karar ağaçları ..................................................................... 20 2.5.3. Naive Bayes ....................................................................... 21 3. UYGULAMA .......................................................................................... 24 3.1. Apriori Algoritması ile Ağ Verilerinin Modellenmesi ....................... 27 3.2. Karar Ağacı Algoritması İle Ağ Verilerinin Modellenmesi .............. 41 3.2.1. Eğitim seti (Karar Ağacı) ..................................................... 41 3.2.2. Test seti (Karar Ağacı) ........................................................ 47 3.3. Naive Bayes İle Ağ Verilerinin Modellenmesi ................................ 51 3.3.1. Eğitim seti (Naive Bayes).................................................... 51 3.3.2. Test seti (Naive Bayes)....................................................... 53 4. SONUÇ.................................................................................................. 58 KAYNAKLAR ............................................................................................... 61 EKLER ......................................................................................................... 65 Ek-1. C# programlama dilinde yazılan kodlar ........................................ 66 ÖZGEÇMİŞ .................................................................................................. 74 xi ŞEKİLLERİN LİSTESİ Şekil Sayfa Şekil 2.1. Bilgi keşif süreci ............................................................................. 4 Şekil 2.2. Veri madenciliği modelleri ............................................................ 10 Şekil 2.3. Klasik Apriori algoritması özet kodu ............................................. 16 Şekil 2.4. Apriori-Gen fonksiyonu ................................................................. 17 Şekil 3.1. Ham (işlenmemiş) veri.................................................................. 24 Şekil 3.2. İşlenmiş veri ................................................................................. 26 Şekil 3.3. Özet uygulamalar tablosu............................................................. 27 Şekil 3.4. Çarşamba gününün Apriori modeli ............................................... 28 Şekil 3.5. Çarşamba günü Apriori algoritmasının sonucunda çıkan kurallar 30 Şekil 3.6. Cuma günü Apriori algoritmasının sonucunda çıkan kurallar ....... 31 Şekil 3.7. Pazartesi günü Apriori algoritmasının sonucunda çıkan kurallar .. 32 Şekil 3.8. Çarşamba günü table akış modülü ............................................... 32 Şekil 3.9. Çarşamba günü web adreslerinin sıklıkları................................... 33 Şekil 3.10. Pazartesi ve cuma günlerinin web adresleri sıklıkları ................. 34 Şekil 3.11. Çarşamba günü zaman dilimleri akış modülü............................. 34 Şekil 3.12. Çarşamba günü saat dilimlerinin yoğunluğu............................... 35 Şekil 3.13. Pazartesi ve cuma günleri saat dilimlerinin yoğunlukları ............ 36 Şekil 3.14. Çarşamba günü dst akış modülü ................................................ 37 Şekil 3.15. Çarşamba günü zamana bağlı web adreslerinin yoğunlukları .... 37 Şekil 3.16. Pazartesi ve cuma günleri zamana bağlı web adreslerinin yoğunlukları ............................................................................... 38 xii Şekil 3.17. Pazartesi ve cuma günleri zamana bağlı microsoft sitesinin yoğunlukları ............................................................................... 39 Şekil 3.18. Çarşamba günü kullanıcılarının web adreslerini tıklama sıklığı .. 39 Şekil 3.19. Çarşamba günü kullanıcılarının web trafiği ................................ 40 Şekil 3.20. Çarşamba günün içerisindeki kullanıcıların zaman dilimine göre web sayfası tıklama yoğunluğu.................................................. 40 Şekil 3.21. Eğitim verilerinin kategorik/niteliksel açıklamaları ...................... 41 Şekil 3.22. Eğitim seti verisi ......................................................................... 42 Şekil 3.23. RapidMiner Karar Ağacı model tasarımı .................................... 42 Şekil 3.24. RapidMiner Karar Ağacı modeli sonucu ..................................... 44 Şekil 3.25. SPSS Karar Ağacı algoritmasının sonucu .................................. 46 Şekil 3.26. Test verilerinin kategorik/niteliksel açıklamaları ......................... 47 Şekil 3.27. Test seti verisi ............................................................................ 47 Şekil 3.28. RapidMiner’daki test seti hata-başarı oranı(Karar Ağacı) ........... 48 Şekil 3.29. Karışıklık matrisi-RapidMiner ..................................................... 48 Şekil 3.30. SPSS’deki test seti hata-başarı oranı (Karar Ağacı) .................. 50 Şekil 3.31. Karışıklık matrisi-SPSS .............................................................. 50 Şekil 3.32. RapidMiner’da Naive Bayes model tasarımı .............................. 52 Şekil 3.33. Naive Bayes uygulaması arayüz görüntüsü ............................... 53 Şekil 3.34. RapidMiner’daki test seti hata-başarı oranı (Naive Bayes)......... 54 Şekil 3.35. Karışıklık matrisi-RapidMiner ..................................................... 54 Şekil 3.36. C# program dili ile kodlanan algoritmaya uygulanan test seti hata-başarı oranı........................................................................ 56 xiii Şekil 3.37. Karışıklık matrisi-Kodlama.......................................................... 56 Şekil 4.1. Oluşturulan modellerin başarım ölçütleri ...................................... 59 xiv SİMGE VE KISALTMALAR Bu çalışmada kullanılmış bazı simgeler ve kısaltmalar, açıklamaları ile birlikte aşağıda sunulmuştur Simgeler Açıklama Dst Destination (Hedef) Dstport Destinationport (Hedefport) Ethsource Ethernetsource (Eternet kaynağı) Mindes Minimum destek değeri VTBK Veri tabanları bilgi keşfi TCP Transmission Control Protocol (Transmisyon Kontrol Protokolü) UDP User Datagram Protocol (Kullanıcı Datagram Protokolü) 1 1. GİRİŞ Günümüzde her türlü işlerde, alışverişlerde ve kurumsal/kamusal alanlardaki işlemlerde kaydı tutulan veriler bulunmaktadır. Ayrıca işletmelerin ve devletin kendi dâhilinde yapılan işlemler sonucunda da depoladıkları veriler, görüntü ve ses cihazlarından elde edilen çoklu ortam verileri gibi birçok veri devamlı olarak saklanmakta ve depolanan bu veriler çok hızlı boyutlarda artmaktadır. Fakat bu veriler istenildiği şekilde değerlendirilememekte, hızla büyüyen bilgi yığınları şekline dönüşmektedir. Veri madenciliği, bir veri yığını içerisinde henüz ortaya çıkarılmamış gözlenebilir veya ölçülebilir bilgileri bulmayı amaçlayan teknikler bütününü temsil etmektedir. Bilgisayar sistemleri ile üretilen veriler tek başlarına değersizdir, çünkü çıplak gözle bakıldığında bir anlam ifade etmezler. Bu veriler belli bir amaç doğrultusunda işlendiği zaman bir anlam ifade etmeye başlar [1]. Önceden bilinmeyen, veri içinde gizli, anlamlı ve yararlı örüntülerin büyük ölçekli veritabanlarından otomatik biçimde elde edilmesini sağlayan bilgi keşfi süreci içinde bir adımdır [2]. Veri madenciliği konusunda çok sayıda yöntem ve algoritma geliştirilmiştir. Bu yöntemlerden çoğu istatiksel tabanlıdır. Bu çalışmada daha çok Apriori, Karar Ağaçları ve Naive Bayes algoritmaları üzerinde yoğunlaşılmıştır. Apriori ilişkilendirme kuralları; Karar Ağaçları ve Naive Bayes ise sınıflandırma tekniklerindendir. Çalışmanın amacı hali hazırda örnek kurumun internet ağında kullanılan karmaşık ağ verisinin veri madenciliği ile kullanılabilir hale getirmek ve veri madenciliği yöntemleri kullanılarak elde edilen sonuçlar arasında kıyaslama yapılıp ilişkileri ortaya çıkarmaktır. Örnek kurumun internet trafiği incelendiğinde girilen sitelerden kişinin gün içindeki internet hareketleri izlenerek cinsiyet sınıf etiketine göre tahmin edilebilmektedir. Yapılan benzer çalışmalarda Down sendromu tanısı teşhisinde Naive Bayes sınıflandırıcısının daha başarılı olduğu görülmüştür [3]. Diğer bir çalışmada 2 örüntüleri oluşturan gözlem değerlerinden seçilmiş istatistiksel özellikleri kullanan Yapay Sinir Ağ Yapısı ve Bayes sınıflandırıcılarının doğru sınıflandırma performansının, ham verileri kullanan sınıflandırıcılara göre daha yüksek tanıma performansı gösterdikleri gözlenmiştir [4]. Diğer bir çalışmada elde edilen sonuçlara göre Naive Bayes sınıflandırıcının tiroit hastalığı teşhisinde Yapay Sinir Ağları, Destek Vektör Makinaları ve KOrtalama yöntemlerine göre daha başarılı olduğu görülmüştür [5]. Başka bir çalışmada yine Naive Bayes sınıflandırıcısı yine tiroid teşhisinde J48 Karar Ağacı algoritmasına göre daha iyi performans gösterdiği gözlemlenmiştir [6]. İlişkilendirme kuralı ile ilgili 2007 yılında yazılan bir makalede [7], Apriori algoritmasının firmanın veri seti üzerinde uygulandığında farklı zaman farklı zaman dilimi, farklı satış şubelerine göre ürünler arasında birlikte satın alınma bağıntılarını ortaya koyduğu ve genelde aynı ürün grubu içinde yer alan ürünlerin birlikte satın alınma davranışlarına sahip olduğundan bahsedilmiştir. Yine bir çalışmada örnek bir firmanın pastane satış verileri üzerinde uygulanması için web tabanlı bir uygulama yazılımı geliştirildiği ve geliştirilen uygulama yazılımı ile örnek firmanın yıl içinde farklı dönemlerde ve farklı satış noktalarında gerçekleşen satış verileri üzerinde, birlikte satın alınma tercihi yapılan ürünler tespit edildiği ifade edilmiştir [8]. Bölüm 2’de veri madenciliği, uygulama alanları ve yöntemleri hakkında teorik bilgiler verilmiştir. Bölüm 3’te algoritmaların verilere farklı araçlar ile uygulanmasından bahsedilmiştir. Bölüm 4’te ise bölüm 3’teki uygulamaların sonuçları analiz edilerek detaylı bir şekilde anlatılmıştır. 3 2. VERİ MADENCİLİĞİ 2.1. Veri Madenciliği Nedir? Veri madenciliği veri içerisinden yararlı olanları bulup ortaya çıkarma işlemidir [9]. Veri madenciliği sihir değildir. Yıllardır, istatistikçiler veri tabanlarını elle kazımakta, istatistiksel açıdan önemli ilişkiler aramaktadır. Veri madenciliği, bu süreci otomatik olarak gerçekleştirmektedir. Veri madenciliği veri kümesi içerisinde keşfedilmemiş koleksiyonunu örüntüleri betimlemektedir. Veri bulmayı hedefleyen madenciliğinin amacı, teknikler geçmiş faaliyetlerin analizini temel alarak gelecekteki davranışların tahminine yönelik karar-verme modelleri yaratmaktır. Frawley veri madenciliğini: “Daha önceden bilinmeyen ve potansiyel olarak yararlı olma ihtimaline sahip verinin keşfedilmesi” olarak tanımlamıştır. Berry ve Linoff bu kavrama “Anlamlı kuralların ve örüntülerin bulunması için geniş veri yığınları üzerine yapılan keşif ve analiz işlemleri” şeklinde bir açıklama getirirken, Sever ve Oğuz çalışmalarında veri madenciliği hakkında “Önceden bilinmeyen, veri içinde gizli, anlamlı ve yararlı örüntülerin büyük ölçekli veritabanlarından otomatik biçimde elde edilmesini sağlayan veri tabanlarında bilgi keşfi süreci içerisinde bir adımdır.” tanımını kullanmışlardır [10]. Veri madenciliği deyimi yanlış kullanılan bir deyim olabileceğinden bilim adamları tarafından buna eş değer başka adlandırmalarda literatüre geçmiştir. Bunlar; veritabanlarında bilgi keşfi (VTBK) (KDD Knowledge Discovery in Databases), Bilgi Çıkarımı (Knowledge Extraction), Veri ve Örüntü analizi (Data/ Pattern Analysis), Veri Tarama (Data Dredging), Bilgi Keşfi (Knowledge Discovery), Veri Arkeolojisi (Data Archaeology), Veri Avcılığı (Data Fishing), Bilgi Üretimi (Knowledge Creation) ve Bilgi Hasadıdır (Information Harvesting). Bu adlandırmalardan veri madenciliği deyimi yerine en çok kullanılanı VTBK olmuştur. Bununla birlikte aslında VTBK, veriler arasından yararlı bilgileri keşfetme sürecidir ve veri madenciliği VTBK sürecinin önemli bir adımıdır. VTBK süreci ise veri hazırlama, veri seçme, 4 veri temizleme ve veri madenciliği sonucu çıkan sonuçların yorumlanması gibi ek adımlarla birlikte veriden türetilen yararlı bilginin elde edilmesi demektir. Şekil 2.1’de VTBK adımlarını göstermektedir. Bu adımlar; Şekil 2.1. Bilgi keşif süreci Veri madenciliği, VTBK işleminin adımlarından biridir. VTBK işleminin adımları farklı kişiler tarafından farklı modellerle ifade edilmiştir. Han tarafından sunulan modelde VTBK işlemi yedi adımda meydana gelmektedir. Bu adımlar sırasıyla veri temizleme, veri birleştirme, veri seçme, veri dönüştürme, veri madenciliği, örüntü değerlendirme ve bilgi sunumudur. VTBK sürecindeki adımlar Şekil 2.1.’ de görsel olarak ifade edilmiştir. Han’ın sunduğu modeldeki VTBK sürecinde yer alan adımlar açıklamaları ile aşağıda belirtilmiştir [10]. Veri Temizleme (Data Cleaning): Gerçek hayatta kullanılan veritabanları içindeki veriler kirlenmeye, eksik hale gelmeye ve tutarsız olmaya eğilimlidirler. Bu nedenle verilerin kullanılmadan önce bazı ön işlemlerden geçmeleri gerekir. Ön işlemlerden geçen veriler üzerinde veri madenciliği algoritmalarının uygulanması ile daha kaliteli sonuçlar elde edilir. Bu ön 5 işlemlerden biri veri temizlemedir. Veri temizleme ile veritabanlarındaki eksik, tutarsız ve gürültülü veriler giderilir. Veri Birleştirme (Data Integration): Farklı veri tabanlarından ya da veri kaynaklarından elde edilen verilerin birlikte değerlendirmeye alınabilmesi için farklı türdeki verilerin tek türe dönüştürülmesi işlemidir. Bunun en yaygın örneği cinsiyette görülmektedir. Çok fazla tipte tutulabilen bir veri olup, bir veri tabanında 0/1 olarak tutulurken diğer veri tabanında E/K veya Erkek/Kadın şeklinde tutulabilir. Bilginin keşfinde başarı verinin uyumuna da bağlı olmaktadır. Veri Seçme (Data Selection): Veritabanlarında üzerinde işlem yapılacak olan veri seçilir ve veri türleri bu aşamada belirlenir. Veri madenciliği uygulamalarında çözümlemeden elde edilecek sonucun değişmeyeceğine inanılıyorsa veri sayısı ya da değişkenlerin sayısı azaltılabilir. Veri Dönüştürme (Data Transformation): Verinin kullanılacak modele göre içeriğini koruyarak şeklinin dönüştürülmesi işlemidir. Dönüştürme işlemi kullanılacak modele uygun biçimde yapılmalıdır. Çünkü verinin gösterilmesinde kullanılacak model ve algoritma önemli bir rol oynamaktadır. Değişkenlerin ortalama ve varyansları birbirlerinden önemli ölçüde farklı olduğu taktirde büyük ortalama ve varyansa sahip değişkenlerin diğerleri üzerindeki baskısı daha fazla olur ve onların rollerini önemli ölçüde azaltır. Bu yüzden veri üzerinde normalizasyon işlemi yapılmalıdır. Veri Madenciliği (Data Mining): Bu aşamada, anlamlı örüntüler elde edebilmek için veri üzerinde veri madenciliği algoritmaları uygulanır. Sınıflandırma, kümeleme algoritmaları gibi veri madenciliği algoritmaları kullanılarak yararlı bilgi keşfedilmesi sağlanır. 6 Örüntü Değerlendirme (Pattern Evaluation): Elde edilmiş olan bilginin basitlik, geçerlilik, yararlılık ve yenilik gibi bazı ölçüm değerlerine göre değerlendirildiği aşamadır. Bilgi Sunumu (Knowledge Presentation): Bu aşamada, çeşitli görselleştirme ve bilgi sunum araçları kullanılarak elde edilmiş olan bilginin kullanıcıya sunumu gerçekleştirilir. 2.2. Uygulama Alanları Veri madenciliğinin birçok kullanım alanları mevcuttur. Bunların en önemlileri sigortacılık, bankacılık ve elektronik ticaret [11], biyoloji, kimya, coğrafi bilgi sistemleri, görüntü tanıma, uzay bilimleri, sosyal bilimler, bilimsel mühendislik alanlarıdır. 2.2.1. Sigortacılık • Sigorta dolandırıcılıkların tespiti, • Riskli müşteri gruplarının belirlenmesi, • Yeni poliçe talep edecek kişilerin tahmin edilmesi vb. konularda yapılabilir. 2.2.2. Bankacılık • Kredi taleplerinin değerlendirilmesi, • Kredi kartları harcamalarına göre müşteri gruplarının belirlenmesi, • Kredi kartı dolandırıcılıklarının ve sahtekârlıklarının belirlenmesi, • Farklı finansal göstergeler arasında gizli ilişkilerin ortaya konulması vb. konularda yapılabilir. 7 2.2.3. Pazarlama • Pazar sepet analizi, • Müşteri ilişkileri yönetimi, • Satış tahmini, • Müşteri değerlendirme, • Müşterilerin satın alma alışkanlıklarının belirlenmesi, • Müşterilerin demografik özellikleri arasındaki bağlantıların ortaya konulması vb. konularda yapılabilir. 2.2.4. Elektronik ticaret • Saldırıların çözümlenmesi, • Sigorta dolandırıcılıkların tespiti, • Riskli müşteri gruplarının belirlenmesi vb. konularda yapılabilir. 2.2.5. Biyoloji, tıp ve genetik • Bitki türleri ıslahı, • Gen haritasının analizi ve genetik hastalıkların tespiti, • Kanserli hücrelerin tespiti, • Yeni virüs türlerinin keşfi ve sınıflandırılması, • Fizyolojik parametrelerin analizi ve değerlendirilmesi vb. konularda yapılabilir. 2.2.6. Kimya • Yeni kimyasal moleküllerin keşfi ve sınıflandırılması, • Yeni ilaç türlerinin keşfi vb. konularda yapılabilir. 8 2.2.7. Yüzey analizi ve coğrafi bilgi sistemleri • Bölgelerin coğrafi özelliklerine göre sınıflandırılması, • Kentlerde yerleşim yerleri belirleme, • Kentlerde suç oranı, • Zenginlik-yoksulluk, köken belirleme, kentlere yerleştirilecek posta kutusu, otomatik para makineleri, otobüs durakları gibi hizmetlerin konumlarının tespiti vb. konularda yapılabilir. 2.2.8. Görüntü tanıma ve robot görüş sistemleri • Çeşitli algılayıcılar aracılığı ile tespit edilen görüntülerden yola çıkarak engel tanıma, • Yol tanıma, yüz tanıma, parmak izi tanıma gibi tekniklerde kullanımı vb. konularda yapılabilir. 2.2.9. Uzay bilimleri ve teknolojisi • Gezegen yüzey şekillerinin ve gezegen yerleşimleri, • Yeni galaksiler keşfi, • Yıldızların konumlarına göre gruplandırılması vb. konularda yapılabilir. 2.2.10. Meteoroloji ve atmosfer bilimleri • Bölgesel iklim, yağış haritaları oluşturma, • Hava tahminleri, ozon tabakası deliklerinin, tespiti, çeşitli okyanus hareketlerinin belirlenmesi vb. konularda yapılabilir. 2.2.11. Sosyal bilimler ve davranış bilimleri • Kamuoyu yoklamaları inceleme, 9 • Genel eğilim belirleme, seçim öngörüleri oluşturma vb. konularda yapılabilir. 2.2.12. Metin madenciliği • Çok büyük ve anlamsız metin yığınları arasından anlamlı ilişkiler elde etmekte kullanılması vb. konularda yapılabilir. 2.2.13. Bilimsel, mühendislik ve sağlık bakım verileri Günümüzde bilimsel veriler, iş sahası verilerinden daha da karmaşık hale gelmişlerdir. Buna ek olarak; • Bilim adamları ve mühendisler uygulama sahası bilgilerini kullanarak benzetim ve sistem kullanımının arttırılması vb. konularda yapılabilir. Web Verileri: Internet ve web üzerindeki veriler hem hacim hem de karmaşıklık olarak hızla artmaktadır. Sadece düz metin ve resimden başka akan (streaming) ve nümerik veriler de web verileri arasında yer almaktadır [12]. 2.3. Veri Madenciliği Modelleri Han’a göre modeller iki alan altında toplanan tanımlayıcı (descriptive) ve öngörüsel (predictive) modellerdir. Tanımlayıcı model, veritabanı içindeki verinin genel özelliklerinin ortaya çıkarır. Öngörüsel modelde ise, gelecekle ilgili tahminlerde bulunmak için kabul edilen veri üzerinde sonuçlar çıkarmaya çalışır. Han’ın modelini kullananlar bile hangi kategorinin hangi modelin altında olduğunun kararını verememişlerdir. Bu kategoriler tanımlama ve ayrımlama (characterization and discrimination), birliktelik analizi (association rules), sınıflandırma ve öngörü (classification and prediction), kümeleme 10 analizi (cluster analysis), sıra dışılık analizi (outlier analysis) ve gelişimsel analizdir (evolution analysis). VM modellerini gördükleri işlevlere göre, • Sınıflama (Classification) ve Regresyon, • Kümeleme (Clustering), • Birliktelik Kuralları (Association Rules) ve Ardışık Zamanlı Örüntüler (Sequential Patterns), olmak üzere üç ana baslık altında incelemek mümkündür. Sınıflama ve regresyon modelleri tahmin edici, kümeleme, birliktelik kuralları ve ardışık zamanlı örüntü modelleri tanımlayıcı modellerdir. Sekil 2.2.'de bu ilişkiler özetlenmiştir [13]. Şekil 2.2. Veri madenciliği modelleri 2.3.1. Sınıflandırma Sınıflandırma, veri kümesindeki kayıtları önceden belirlenmiş alt gruplara ait varsayarak tüm kayıtlara doğru sınıf etiketlerinin atanmasını amaçlayan veri madenciliği çalışmalarını ifade etmektedir. Diğer yandan, sınıflandırma modelleri değişkenlikleri ve veri içerisindeki çeşitli problemleri tanımlamak 11 için de kullanılabilmektedirler. Sınıflandırma modellerinde bağımlı değişken kesikli olmakta ve bu değişkenin her bir değeri birer sınıf etiketi ifade etmektedir. Sınıflandırma modeli, bağımlı değişkenin de değerlerini içeren veri kümesi üzerinden sınıflayıcı kuralları türetmekte ve bu kuralları yeni kayıtlara uygulayarak öngörülerde bulunmaktadır [14]. Mevcut verilerden hareket ederek geleceğin tahmin edilmesinde faydalanılan ve veri madenciliği yöntemleri içerisinde en yaygın kullanıma sahip olan sınıflama modelleri arasındaki temel fark, tahmin edilen bağımlı değişkenin kategorik veya süreklilik gösteren bir değere sahip olmasıdır. Sınıflama modellerinde kullanılan başlıca yöntemler; • Karar Ağaçları, • Yapay Sinir Ağları, • Genetik Algoritmalar, • K-En Yakın Komşu, • Bellek Tabanlı Yöntemler, • Naive-Bayes 2.3.2. Kümeleme Nesnelerin kendilerini veya diğer nesnelerle olan ilişkilerini tanımlayarak onları gruplara bölme işlemine kümeleme denir. Buradaki amaç gruplar içindeki nesneleri diğer gruplardaki nesnelerden ayrı; kendi aralarında ise birbirlerine benzer şekilde oluşturmaktır [15]. Veri madenciliğinde kullanılmakta olan birçok kümeleme algoritması vardır ve bunlar analiz edilecek olan verinin yapısına göre belirlenir. Kümeleme metotları genel olarak şunlardır [16]: Bölme Metodu: n tane nesnenin olduğu veritabanında, nesneler mantıksal gruplara ayrılarak analiz edilir. Küçük ve orta boyutlu veritabanlarında birkaç 12 grup olabilirken, veritabanının büyüklüğü arttığında daha çok grup oluşabilir. Gruplandırma yapılırken değişik kriterler değerlendirilebilir. Yapılan gruplandırma analizin kalitesine etki eder. Hiyerarşik Metot: Analiz etmeden önce nesneler, hiyerarşik bir yapıya göre düzenlenir. Veriyi hiyerarşik bir yapıya çevirmek için değişik yöntemler kullanılır. Bunların arasında BIRCH ve CURE yöntemleri bulunur. Yoğunluk Tabanlı Metot: Birçok kümeleme yöntemi nesnelerin birbirleri arasındaki farklılıklarına göre kümeleme yaparken, bu metot nesnelerin yoğunluğuna göre gruplama yapar. Yoğunluktan kasıt, analiz edilen nesnelerin sayısıdır. Yoğunluk tabanlı metotlara örnek olarak DBscan verilebilir. Izgara Tabanlı Metot: Nesneleri grid yapısı oluşturacak şekilde sayılarına göre sınıflandırır. Temel avantajı hızlı tamamlanması ve nesnelerin sayısından bağımsız olmasıdır. Bu tipteki metotlara örnek olarak Sting verilebilir. Model Tabanlı Metot: Her küme için bir model belirlenir ve bu modele uyan veriler uygun kümeye yerleştirilir. 2.3.3. Birliktelik kuralı/analizi Birliktelik kuralı, geçmiş verilerin analiz edilerek bu veriler içindeki birliktelik davranışlarının tespiti ile geleceğe yönelik çalışmalar yapılmasını destekleyen bir yaklaşımdır. 90’lı yılların başına kadar saklanan satış verilerinde ürün ve müşteri verisi çok nadir yer alırken, genelde mali açıdan önemli olan tutarsal gelir verilerinin depolanması yapılıyordur. 90’lı yılların başından itibaren veri toplama uygulamalarındaki gelişmeler doğrultusunda firmaların satış noktalarında yeni teknoloji otomatik ürün veya müşteri tanıma sistemleri (barkod ve manyetik kart okuyucular) yaygınlaşmaya başlamıştır. 13 Bu tip teknolojik gelişmeler, bir satış hareketine ait verilerin satış esnasında toplanmasına ve elektronik ortamlara aktarılmasına olanak tanımıştır. Veritabanı kayıtları içinde yer alan kayıtların birbirleriyle olan ilişkileri inceleyerek, hangi olayların eş zamanlı olarak birlikte gerçekleşebileceklerini ortaya koymaya çalışan veri madenciliği yöntemleri bulunmaktadır. Bu ilişkilerin belirlenmesiyle “birliktelik kuralları” elde edilir. Birliktelik analizi nesnesel yâda karekteriksel özelliklerin birlikte işlediği bir kuraldır. Ayrıca, “Pazar Sepet Analizi” olarak da tanımlanan birliktelik kuralı bir ya da daha fazla nesnelerin aralarındaki nicel ilişkilerini ortaya çıkarır [17]. Pazar sepet analizleri yardımıyla bir müşteri herhangi bir ürünü aldığında, sepetine başka hangi ürünleri koyduğu belirli bir olasılığa göre ortaya konur. Birlikte satın alınan ürünler belirlendiğinde, mağazalarda raflar ona göre düzenlenerek müşterilerin bu tür ürünlere daha kolayca erişimleri sağlanabilir. 2.4. Birliktelik Kuralı ve Apriori Algoritması Veri madenciliğinde kullanılan ilk yöntemlerden birisidir [18]. Birliktelik kuralı, geçmiş verilerin analiz edilerek bu veriler içindeki birliktelik davranışlarının tespiti ile geleceğe yönelik çalışmalar yapılmasını destekleyen bir yaklaşımdır. Birliktelik kuralı madenciliğinin uygulamasına Pazar sepeti analizi örnek verilebilir [19]. Birliktelik kuralındaki amaç; alışveriş esnasında müşterilerin satın aldıkları ürünler arasındaki birliktelik ilişkisini bulmak, bu ilişki verisi doğrultusunda müşterilerin satın alma alışkanlıklarını tespit etmektir. Satıcılar, keşfedilen bu birliktelik bağıntıları ve alışkanlıklar sayesi ile etkili ve kazançlı pazarlama ve satış imkânına sahip olmaktadırlar. Örneğin, bir marketten müşterilerin süt ve peynir satın alımlarının % 70’inde bu ürünler ile birlikte yoğurt da satın alınmıştır. Bu tür birliktelik örüntüsünün tespit edilebilmesi için, örüntü içinde yer alan ürünlerin birden çok satın alma 14 hareketinde birlikte yer alması gerekir. Milyonlarca veri üzerinde veri madenciliği teknikleri uygulandığında, birliktelik sorgusu için kullanılan algoritmalar hızlı olmalıdır [20]. Bu çalışmada, veri madenciliği tekniklerinden birliktelik kuralı yöntemlerinden en çok bilinen Apriori algoritması ile örnek bir kurumun ağ verileri üzerinde IBM/Modeler aracı kullanılarak girilen siteler ve kullanıcılar arasında ilişkiler incelenmiştir. İnceleme sonucunda kullanıcıların girilen sitelerden sonra hangi sitelere gireceği tahmininde bulunulmuştur. 2.4.1. Birliktelik kuralı Birliktelik kuralının matematiksel modeli Agrawal, Imielinski ve Swami tarafından yılında sunulmuştur [18]. Bu modelde, I ={i1 , i2 ,.., im } kümesine “ürünler” adı verilmektedir. D, veri bütünlüğündeki tüm hareketleri, T ise ürünlerin her bir hareketini simgeler. TID ise, her harekete ait olan tek belirteçtir. Birliktelik kuralı şu şekilde tanımlanabilir; A1 , A2 … … . , Am => B1 , B2 , … … . , Bn Bu ifadede yer alan, Ai ve Bj, yapılan iş veya nesnelerdir. Bu kural, genellikle “A1 , A2 … … . , Am ” iş veya nesneleri meydana geldiğinde, sık olarak “B1 , B2 , … … . , Bn ” iş veya nesnelerinin aynı olay veya hareket içinde yer aldığını belirtir [21]. Birliktelik kuralı, kullanıcı tarafından minimum değeri (Min𝑑𝑒𝑠 ) belirlenmiş destek ve güvenirlik eşik değerlerini sağlayacak biçimde üretilir. Bir ürün kümesindeki destek, D ile ifade edilen tüm hareketler içinde ilgili ürün kümesini içeren hareketlerin yüzdesidir. A ve B ürün kümelerinin, birliktelik kuralı “ A=> B” olarak gösterilirse, destek aşağıdaki gibi tanımlanır. 15 destek (A => B) = (A ve B’ nin bulunduğu satır sayısı) / (toplam satır sayısı) A=>B birliktelik kuralının güven değeri ise, A’ yı içeren hareketlerin B’ yi de içerme yüzdesidir. Örneğin, bir kural % 85 güvenirliğe sahip ise, A’ yı içeren ürün kümelerinin % 85’i B’ yi de içermektedir. İşe bağlı veri satırları verilmiş ise, (A=> B) güveni aşağıdaki gibi tanımlanır. güven (A=> B) = (A ve B’nin bulunduğu satır sayısı) / (A’nın bulunduğu satır sayısı) Güven değerinin % 100 olması durumunda, kural bütün veri analizlerinde doğrudur ve bu kurallara “kesin” denir. Birliktelik kuralına ilişkin olarak geliştirilen bazı algoritmalar şunlardır; AIS [24], SETM [22], Apriori [20], RARM - Rapid Association Rule Mining [23], CHARM [24]. Bu algoritmalar içerisinde, ilk olanı AIS, en bilineni ise Apriori algoritmasıdır [20]. Çalışmada öncelikle veri kümesi içindeki yaygın öğeler belirlenmiştir. Yaygın öğelerin ve nesneleri oluşturan öğeler arasındaki ilişkiler belirlenmiştir. Çalışmada kullanılan Apriori algoritmasından uygulama bölümü olan 3. bölümde detaylı şekilde bahsedilmiştir. 2.4.2. Apriori algoritması Apriori Algoritmasının ismi, bilgileri bir önceki adımdan aldığı için “prior” anlamında Apriori’dir [18]. Bu algoritma temelinde iteratif (tekrarlayan) bir niteliğe sahiptir ve hareket bilgileri içeren veritabanlarında sık geçen öğe kümelerinin keşfedilmesinde kullanılır. Apriori Algoritmasına özüne göre, eğer k-öğe kümesi (k adet elemana sahip öğe kümesi) min𝑑𝑒𝑠 ölçütünü sağlıyorsa, bu kümenin alt kümeleri de min𝑑𝑒𝑠 ölçütünü sağlar. Birliktelik kuralı madenciliği, tüm sık geçen öğelerin bulunması ve sık geçen bu öğelerden güçlü birliktelik kurallarının üretilmesi olmak üzere iki aşamalıdır. Birliktelik kuralının ilk aşaması için kullanılan Apriori Algoritması, sık geçen öğeler 16 madenciliğinde kullanılan en popüler ve klasik algoritmadır. Bu algoritmada özellikler ve veri, Bolean ilişki kuralları ile değerlendirilir [25]. Bu algoritma aslında tekrarlayan bir özelliğe sahiptir ve hareket bilgileri içeren veritabanlarında sık geçen öğe kümelerinin keşfedilmesinde kullanılır. Apriori algoritmasına göre, k-öğe kümesi (k adet elemana sahip öğe kümesi) minimum destek ölçütünü sağlarsa, bu kümenin alt kümeleri de yine min. destek ölçütünü sağlamaktadır. k-öğe (k tane elemana sahip öğe kümesi) kümesi c ile ifade edilirse, öğeleri (ürünler) c[1], c[2], c[3],...,c[k] şeklinde gösterilir ve c[1] < c[2] < c[3]< ... <c[k] olacak şekilde küçükten büyüğe doğru sıralıdır [18]. Her öğe kümesine destek ölçütünü tutmak üzere bir sayaç değişkeni eklenmiştir ve sayaç değişkeni öğe kümesi ilk kez oluşturulduğunda sıfırlanır. Geniş (sık geçen) öğe kümeleri L karakteri ile aday öğe kümeleri ise C karakteri ile gösterilir [26]. L1 = {sık geçen 1-öğe kümesi}; for (k=2; Lk−1 ≠ Ø; k++) do begin Ck =Apriori-gen (Lk−1); // Yeni adaylar forall transactions-hareketler t ϵ D do rbegin Ct = subset (Ck , t); // Adaylar t içindedir forall candidates – adaylar c ϵ Ct do c.count++; end end Lk = {c ϵ Ck | c.count ≥ minsup} Answer = Uk Lk ; Şekil 2.3. Klasik Apriori algoritması özet kodu 17 Apriori algoritmasının klasik özet kodu Şekil 2.3’ de [18] görülmektedir. Bu şekilde yer alan Apriori-gen fonksiyonu (Şekil 2.4’de) [18], (k-1) adet öğeye sahip Lk−1sık geçen öğe kümesini kullanarak k adet öğeye sahip aday kümeleri oluşturur. Bu fonksiyon ile ilk önce, Lk−1sık geçen öğe kümesine kendisi ile birleştirme işlemi uygulanır. Birleştirme işleminde Lk−1 sık geçen öğe kümesinin her satırında yer alan son öğe haricinde diğer öğelerin çapraz olarak benzerliği aranır ve son öğe haricinde diğer öğelerle yakalanan benzerliklerden yeni aday öğe kümeleri oluşturulur. Oluşan kümeler budama adımı ile budanarak fonksiyondan dönülür. insert into Ck select p.items1 , p.items2,.....,p.itemsk−1, q.itemk−1 from Lk−1 p, Lk−1 q where p.item1=q.item1, ...., p.itemk-2=q.itemk-2, p.itemk-1 < q.itemk-1; forall itemsets c ϵ Ck do forall (k-1)-subsets s of c do if (s ∉ Lk−1) then delete c from Ck Şekil 2.4. Apriori-Gen fonksiyonu Budama işleminde; c aday kümesinin (k-1) öğeye sahip alt kümelerinden Lk−1 sık geçen öğe kümesinde yer almayan tüm alt kümeler silinir [20]. Farklı bir ifade ile budama, Ck aday öğe kümesindeki öğelerin alt kümelerinin Lk−1 sık geçen öğe kümesindeki varlığı kontrol edilir, bir öğenin alt kümelerinden biri, Lk−1 sık geçen öğe kümesinde yer almıyorsa ilgili öğe değerlendirme dışı kalır ve Ck aday öğe kümesinden silinir [18]. Apriori algoritması özet kodu incelendiğinde sık geçen öğe kümelerini bulmak için birçok kez veritabanının tarandığı görülmektedir. İlk aşamadan önce, veri 18 madenciliği uygulanacak veri topluluğunun taranarak öğelerin kaç adet hareket kaydı içinde yer aldığı tespit edildiği (her öğe için tespit edilen bu değere destek sayacı adı verilir) ve destek sayacı minimum destek değerine eşit veya büyük olan öğelerin L1 sık geçen 1-öğe kümesi olarak belirlendiği varsayılarak işleme başlanır. Kod içinde kurulan döngü yapısı ile ilk aşamada L1 sık geçen öğe kümesinin öğelerinin ikili kombinasyonuna benzer bir şekilde (L1 ∞ L1 ) yeni bir küme oluşur, bu işleme birleştirme adı verilir. Bu işlem ile oluşan kümelere de aday öğe kümeler adı verilir ve C harfi ile simgelenir. Oluşan bu aday öğe kümesinin her elemanı iki adet öğeden oluştuğu için C2 ifadesi ile isimlendirilir. Bu aday küme Apriori-gen işlevi ile budama işlemine tabi tutulur ve C2 kümesinin elemanlarına ait alt kümelerinin L1 öğe kümesinde olup olmadığına bakılır, alt kümelerden L1 içinde yer almayan küme elemanları C2 aday kümesinden silinir. Apriori algoritması uygulanan veri topluluğu tekrar taranarak budama işleminden geçen L2 aday kümesi elemanlarının kaç adet hareket kaydı içinden geçtiği (destek sayacı) bulunur. Bulunan destek sayaç bilgileri doğrultusunda C2 aday kümesi elemanlarının destek sayacı minimum destek değerine eşit veya büyük destek değerine sahip olan elemanları L2 sık geçen öğe kümesini oluşturur. Döngü bir sonraki aşamada L2 kümesi öğelerinin üçlü kombinasyonu ile yeni bir aday öğe kümesi oluşturur ve bu küme C3 ifadesi ile simgelenir. ilk aşamada olduğu gibi bu kümede budama işleminden geçer ve budama işleminden sonra minimum destek seviyesinin üstünde kalan elemanları ile L3 sık geçen öğe kümesi oluşturulur. Döngü her dönüşünde öğe sayısını artırarak devam eder. Bu süreç yeni bir sık geçen öğe kümesi bulunamayana kadar sürer. 19 2.5. Sınıflandırma ve Karar Ağaçları, Naive Bayes Algoritmaları 2.5.1. Sınıflandırma Sınıflandırma, yeni bir nesnenin niteliklerini inceleme ve bu nesneyi önceden tanımlanmış bir sınıfa atamaktır. Burada önemli olan, her bir sınıfın özelliklerinin önceden net bir şekilde belirlenmiş olmasıdır. Verilerin içerdiği ortak özellikleri kullanılarak söz konusu verileri sınıflandırmak mümkündür. Örneğin bir firmanın müşterilerini belirli özellikleri göz önüne alınarak sınıflandırılması sağlanabilir. Bir alışveriş merkezi yöneticileri ortalama alışveriş miktarından daha fazla alışveriş yapan müşterileri “varlıklı”, diğerlerini ise “yoksul” olarak birbirlerinden ayırt etmek isteyebilir. Benzer biçimde bir veri kümesi içinde ortak özellikleri ya da farklılıkları ortaya koyacak biçimde sınıflandırma yapılabilir. Sınıflandırma bir öğrenme algoritmasına dayanır. Tüm veriler kullanılarak eğitme işi yapılmaz. Bu veri topluluğuna ait bir örnek veri üzerinde gerçekleştirilir. Öğrenmenin amacı bir sınıflandırma modelinin yaratılmasıdır. Bir başka deyişle sınıflandırma, hangi sınıfa ait olduğu bilinmeyen bir kayıt için sınıf belirleme sürecidir. Örnek olarak, basit bir sınıflandırma ile iki belirgin sınıfa ayrıştırılabilir: ”Ödemeleri 3 gün içinde yapanlar” ve “ödemeleri 3 günden sonra yapanlar.” Sınıflandırma için çalışmada bazı veri ön işleme aşamaları uygulanmıştır. Sürekli veriler ayrık hale getirilmiştir: Facebook, tiwitter, linkedin vssosyal ağ; halkbankası, işbankası vs. Bankalar; google, yandex vsarama motoru gibi Gereksiz niteliklerin silinmiştir: Bazı istenmeyen nitelikler kaldırılmıştır. TCP/UDP, sourceport nitelikleri gibi 20 Gürültü azaltılmıştır: Mükerrer veriler kaldırılmıştır. Normalizasyon: Yaş niteliğinde belli yaşın üstündeki kişiler sayıca az oldukları için değerlendirmeye alınmamıştır. Karar Ağacı ve Naive Bayes sınıflandırıcılarda girdi olarak ayrık nesnelerden oluşan öğrenme kümesi oluşturulmuştur. Ve bu öğrenme kümesindeki niteliklerden bir tanesi sınıfı etiketi seçilmiştir. Seçilen bu sınıf etiketine bağlı olarak model oluşturulmuştur. Bu çalışmada, veri madenciliği teknikleri sınıflandırma yöntemlerinden karar ağaçları ve Naive Bayes algoritmaları örnek bir kurumun ağ verileri üzerinde uygulanmıştır. Karar Ağacı algoritması için RapidMiner ve SPSS aracı kullanılarak eğitim ve test verileri üzerinde sınıflandırma yapılmıştır. Naive Bayes algoritması için ise önce C# programlama dilinde algoritma kodlanarak sınıflandırma yapılmıştır. Sonrasında ise yine aynı eğitim ve test verileri üzerinde RapidMiner aracı kullanılarak sınıflandırma yapılmıştır. Uygulama bölümü olan 3. Bölümde detaylı şekilde bahsedilmiştir. 2.5.2. Karar ağaçları Sınıflandırma problemlerinde en çok kullanılan algoritmalardan biri karar ağaçlarıdır. Diğer sınıflandırma algoritmalarıyla kıyaslandığında karar ağaçlarının yapılandırılması ve anlaşılması daha kolaydır [27]. Karar ağaçları kullanılarak sınıflandırma 2 aşamada gerçekleştirilir. İlk adımda ağaç oluşturulur. İkinci adımda ise veriler tek tek ağaca uygulanarak sınıflandırma gerçekleştirilir. Karar ağaçlarının oluşturulması sırasında dallanmaya hangi nitelikten başlanacağı oldukça önemlidir çünkü olası tüm ağaç yapılarını ortaya çıkararak içlerinden en uygun olanı ile başlamak mümkün değildir. Bu sebeple Karar Ağacı algoritmalarının çoğu daha başlangıçta birtakım 21 değerleri hesaplayarak ona göre ağaç oluşturma yoluna gitmektedir. Bu hesaplamalardan biri de entropiye dayalı olup, entropi belirsizliğin ölçüsü olarak tanımlanmaktadır. Entropi, bir veri kümesi içindeki belirsizlik ve rastgeleliği ölçmek için kullanılır ve 0 ile 1 arasında değer alır. Bütün olasılıklar eşit olduğunda entropi maksimum değerini alacaktır [28]. Entropiye dayalı karar ağaçları ile sınıflandırma algoritmalarının en önemlileri aşağıdaki gibidir. ID3 [29]: ID3, makine öğrenme ve bilişim teorisine bağlı olarak verilen örnekler içinde en ayırıcı değişkeni bulan bir algoritmadır. Temel olarak kategorik nitelikleri sınıflandırır ve veritabanı dallandırılmadan önce ve sonra doğru sınıflandırma yapmak için gelen bilgiler arasındaki farkı kullanarak, öncelikli düğüme ve dallanmalara karar verir. C4.5 [30]: ID3 algoritmasından farklı olarak sayısal değerlere sahip niteliklerin karar ağaçlarının oluşturulmasını sağlar. Diğer taraftan Karar Ağacı oluştururken kayıp verileri almaması sebebiyle daha anlamlı kurallar sunan ağaçlar üretebilir. Kayıp veriler ise diğer veri ve değişkenler kullanılarak tahmin edilir. CART: CART algoritması, her karar düğümünden sonra ağacın iki dala ayrılması ilkesine dayanır. Bu teknikte dallanma kriteri belirlenirken kayıp veriler önemsenmez. 2.5.3. Naive Bayes Naive Bayes, birden fazla değişkenler arasındaki ilişkiyi analiz eden tahminci ve tanımlayıcı bir sınıflandırma algoritmasıdır. Naive Bayes, verinin öğrenilmesi esasına dayanmaktadır. Yani eğitimde kullanılan veriler, modelin öğrenilmesi için her çıktının kaç kere meydana geldiğini hesaplar. 22 Bu değer öncelikli olasılık olarak adlandırılır. Hesaplamalar sırasında her bir bağımsız değişkenin bağımlı değişkenlere bölümünün kombinasyonu olayın meydana gelme sıklığını bulur. Bu da veri kümesinden yapılacak tahmin için kullanılır [31]. Naive Bayes, metin kategorilendirmesi konusunda bilinen ve sıklıkla kullanılan bir algoritmadır. Hedef fonksiyon için bir eğitim veri seti belirlenir, nitelik değerleri tarafından tanımlanan yeni örneklemler sunulur ve öğrenici sınıf hedef değeri veya sınıfı tahmin eder [32]. Sınıflandırma önemli bir veri madenciliği problemidir. Girdiler, eğitim setinin bir veri kümesidir. Bu veri kümesindeki her bir verinin birçok özniteliği vardır. Sayı alanı içeren özniteliklere sayısal öznitelik, sayı içermeyen özniteliklere sahip alanlara ise kategorik öznitelik denmektedir. Ayrıca sınıf etiketi isimli fark edilebilir bir öznitelik daha vardır. Bu sınıflandırma, etiketsiz kayıtlar içerisinde, sınıf etiketini tahmin etmekte kullanılabilecek kısa bir model oluşturmayı hedefler. Naive Bayes sınıflandırıcısı, kategorik verileri sınıflandırma konusunda basit ve hızlı bir tekniktir. Bayes sınıflandırıcıları klasik değişkene bağlı sınıflandırıcılardır. Eğitim verileri için belirli bir olasılık dağılımı uygun kabul edilir. Naive Bayes sınıflandırıcısı, ilgili eğitim setinde bulunan her bir bağımsız öznitelik arasındaki ilişkiyi ve her bir ilişki içerisindeki şartlı olasılığı çıkarmak için analiz eder. Tahmin işlemi, bağımsız değişkenlerin, bağımlı değişkenler üzerindeki etkilerini bir araya getirerek yeni bir durumu sınıflandırmak için yapılır [33]. Naive Bayes tekniğinin kullanıldığı sınıflandırma adımları şu şekildedir: Eğitim süreci sırasında, her bir sonucun önceki olasılığı eğitim seti içerisinde ilgili kategoride kaç kere geçtiğinin sayısı olarak belirlenir. Örneğin, 5 şartın olduğu bir durumda, ilk sonuç 2 kere geçmiş ise ilgili sonucun olasılığı 0,4’dür. Önceki olasılıklara ek olarak, her bir bağımsız özniteliğin her bir bağımlı öznitelik içerisinde kaç kez geçtiğini de hesaplamaktadır. Bu frekans 23 değeri, hesaplanan olasılık değerlerinin her birinin çarpımı birleşimi ile çarpılarak oluşturulan şartlı olasılık değerlerini hesaplamak için kullanılır [33]. Naive Bayes algoritması en bilindik sınıflandırma algoritmalarından birisidir. Birçok araştırmacı bu yaklaşımın kuramsal ve deneyimsel sonuçları üzerinde çalışmışlardır. Veri madenciliği uygulamalarında geniş ölçüde kullanılmaktadır ve birçok uygulamada sürpriz bir şekilde iyi sonuçlar vermiştir. Buna rağmen, Naive Bayes öğreniminde bütün özelliklerin eşit sayılması varsayımı nedeniyle, yapılan tahminler yetersiz kalmaktadır. Örneğin, bir kişinin diyabet hastası olup olmadığının tahmini problemi konusunda, kişinin kan basıncı, kişinin boyundan daha önemlidir. Bu nedenle, Naive Bayes algoritmasının performansı hafifletici varsayımlar ile iyileştirilir [34]. Bayes sınıflandırıcısı şu şekilde ifade edilir: X örnek veri seti olsun. Bu X değerlerinin sınıfı bilinmemektedir. X test veri seti X = {X1, X2, X3, …, Xn} değerlerinden oluşsun. Sınıf değerleri ise C1, C2, C3, …, Xn şeklinde olduğu kabul edilsin. Sınıfı belirlenecek test verisinin olasılığı şu şekilde hesaplanır: 𝐶𝑖 𝑃( ) = 𝑋 𝑃(𝑋/𝐶𝑖)+𝑃(𝐶𝑖) 𝑃(𝑋) (2.1) Çıkan sonuçlardan ise en büyük değere ait olan sınıf test verisinin ait olduğu sınıfı verir. arg maxci {P(X | Ci) P(Ci)} (2.2) 24 3. UYGULAMA Operasyon tarafında yer alan veriler, Şekil 2.1’de görüldüğü gibi bilgi keşfi aşamalarından veri seçme, veri önişleme ve veri indirgeme süreçleri ile uygulama veri depolama yapısına alınmıştır. Veri seçimi (veri toplama) işlemi, verilerin veri madenciliği uygulanması için mümkün olduğu kadar tek bir veri ambarı içinde toplanmasıdır. Veri önişleme, verilerin veri madenciliği için hazır duruma getirilmesi için veri üzerinde veri tipi dönüşümü, gruplama, sınıflanma, kayıp değerleri yönetme ve gürültülü verinin temizlenmesi gibi işlemlerin uygulandığı aşamadır. Gürültülü veride veri önişleme aşamasında veri kümesinden temizlenir. Gürültülü veri, veri kümesi içinde yer alan ama veri madenciliği uygulamasında kullanılmayacak ve bir anlam içermeyen verilerdir [10]. Örnek kurumun operasyona ait verilerde (Şekil 3.1) bulunan bazı girişlerin gereksiz olduğu tespit edilmiştir. Şekil 3.1. Ham (işlenmemiş) veri Bu doğrultuda aşağıdaki ön işlem basamakları uygulanarak Şekil 3.2’de (27.03.2013 Çarşamba) nihai hali elde edilmiştir. 25 Anlamsız veriler anlamlı hale getirilmiştir. Sürekli veriler ayrık hale getirilmiştir.: Facebook, tiwitter, linkedin vssosyal ağ; halkbankası, işbankası vs. Bankalar; google, yandex vsarama motoru gibi Gereksiz niteliklerin silinmiştir.: Bazı istenmeyen nitelikler kaldırılmıştır. TCP/UDP, sourceport nitelikleri gibi Gürültü azaltılmıştır.: Mükerrer veriler kaldırılmıştır. Veri bütünleştirme.: Farklı türdeki veriler tek tür yapılmıştır. Veri indirgeme yapılmıştır.: Veri sayısı azaltılmıştır. Normalizasyon: Yaş niteliğinde belli yaşın üstündeki kişiler sayıca az oldukları için değerlendirmeye alınmamıştır. 46570 adet satır sayısına sahip işlenmemiş veri, veri madenciliği süreci sonunda 8684 satır sayısına inmiştir. 26 Şekil 3.2. İşlenmiş veri Şekil 3.2’deki tabloda zaman bilgisi logların zamanını yani ay, gün saat, saniye ve salise bilgilerini göstermektedir. dst hedef IP’lerin karşılığı olan http adreslerini, ethsource ise işlemi yapan makinanın ID’sini vermektedir. 27 Uygulamada sınıflandırma tekniklerinden Apriori, Karar Ağacı ve Navie Bayes algoritmaları kullanılmıştır. Apriori ve Karar Ağacı algoritmaları veri madenciliği uygulama araçları ile yapılmıştır. Naive Bayes algoritması ise hem uygulama aracı hemde C# yazılım dilinde kodlanarak yapılmıştır. Karşılaştırılacak algoritmaların parametreleri RapidMiner ve SPSS programlarının kendi varsayılan değerleri olacak şekilde bırakılmış, model başarımına olumlu ya da olumsuz etki edebilecek değişikliklerden kaçınılmıştır. Özetle Apriori, Karar Ağacı ve Naive Bayes algoritmaları kullanılarak modeller oluşturulmuş ve oluşturulan modellerin başarım dereceleri karşılaştırılarak ilişkiler belirlenmeye çalışılmıştır. Bu tezde yapılan uygulamalar Şekil 3.3’de özetlenmiştir. Yapılan Uygulamalar Karar Ağacı Naive Bayes Apriori RapidMiner ✔ ✔ X SPSS ✔ X ✔ Kodlama X ✔ X Alg. Uyg. Ort. Şekil 3.3. Özet uygulamalar tablosu Algoritmaların veri kaynağı üzerinde çalıştırılması sırasında algoritma parametreleri olarak her algoritmanın o parametre için varsayılan değeri kullanılmıştır. Her algoritma ve her veri kaynağı için başarım derecesini maksimize edecek parametre değerleri tespit ederek bu parametrelerle algoritma sonuçlarını karşılaştırmak farklı sonuçlara götürebilecektir. Ancak, böyle bir karşılaştırmada yanlılık oluşabilecektir. 3.1. Apriori Algoritması ile Ağ Verilerinin Modellenmesi Çalışmada kurumun 25.03.2013-29.03.2013 tarihleri arasında ki günlerden Pazartesi (25.03.2013), Çarşamba (27.03.2013) ve Cuma (27.03.2013) 28 günlerinin ağ verileri kullanılmıştır. 3 gün kullanılmasının nedeni 1 haftalık veri sayısı çok fazla olduğu için kullanılan sistemler yetersiz kalmıştır. Dolayısıyla günler parça parça ele alınarak analiz edilmiştir. Tek gün analizlerinde normal masaüstü bilgisayarlarında rahatlıkla sonuç alınmaktadır. Model IBM SPSS Modeler 14.2 veri madenciliği uygulama platformu ile tasarlanmıştır. SPSS Modeler gelişmiş analitik uygulamalar ile desteklenen görsel arabirim kullanarak yapısal olan veya olmayan verilerdeki kalıpları ve eğilimleri keşfederek, sonuçların modellerini oluşturan bir yazılımdır [35]. Çarşamba günü için Modeler yazılımında uygulanan model tasarımı Şekil 3.4’de gösterilmektedir. Pazartesi ve Cuma günleri için hatta bütün günler için model tasarımı uygulanabilir. Şekil 3.4. Çarşamba gününün Apriori modeli Bu çalışmada algoritmanın uygulandığı işlem aşamasında ki en son modül ethsource&dst modülüdür. Ana işlem akışında sırasıyla Şekil 3.2’deki işlenmiş veri, excel olarak yüklenip giriş değerleri (nominal, integer..) tanımlanarak başlatılır. Sonraki süreçte filtreleme, zaman tanımları (gün, ay), saat dilimleri (sabah, öğle, akşam), ethsource göre sıralama, tip belirleme aşamaları ve son aşama olarak ilişkilendirme kurallarının uygulandığı Apriori algoritması modülü yer almaktadır. 29 2007 yılında yazılan bir makalede [13], Apriori algoritmasının firmanın veri seti üzerinde uygulandığında farklı zaman farklı zaman dilimi, farklı satış şubelerine göre ürünler arasında birlikte satın alınma bağıntılarını ortaya koyduğu ve genelde aynı ürün grubu içinde yer alan ürünlerin birlikte satın alınma davranışlarına sahip olduğundan bahsedilmektedir. Bir çalışmada örnek bir firmanın pastane satış verileri üzerinde uygulanması için web tabanlı bir uygulama yazılımı geliştirildiği ve geliştirilen uygulama yazılımı ile örnek firmanın yıl içinde farklı dönemlerde ve farklı satış noktalarında gerçekleşen satış verileri üzerinde, birlikte satın alınma tercihi yapılan ürünler tespit edildiği ifade edilmektedir. [14]. Algoritma modülü ilişkilendirmeyi yaparken IDethsource, Contentdst olarak değerlendirmektedir. Kurallarda Confidence ihtimal (olasılık) yüzdesini, Rule Support sıklık yüzdesini göstermektedir. Rule Support’un yüksek olması çıkan kuralların olasılığını güçlendirmektedir. Antecedent ilk girilen web adreslerini, Consequent ise son girilen web adreslerini göstermektedir. Min support yüzdesini %20 olarak belirlenmiştir. Değeri arttırıldığında doğal olarak çıkan kural sayısı da azalacaktır. Şekil 3.5’de Apriori algoritması sonucunda çıkan kurallar gösterilmektedir. 30 Şekil 3.5. Çarşamba günü Apriori algoritmasının sonucunda çıkan kurallar Çarşamba (27.03.2013) günü algoritması sonucunda çıkan kurallar incelendiğinde önce yahoomynet ve arama motoruna (yandex, google vs.) giren bir kişi sonrasında %97, 297 olasılıkla TÜBİTAK sitesine girmektedir. Sıklık dereceside (Rule Support) %24,324 değerini göstermektedir. 7. Sırada ise önce herhangi bir banka sitesine giren bir kişi sonrasında %96,667 olasılıkla sosyal ağ sitelerine (facebook, linkedin, twitter) girmektedir. Sıklık derecesi de %19,595 değerini göstermektedir. Diğer olasılıklar Şekil 3.5’de gösterilmektedir. Şekil 3.6’da Cuma (29.03.2013) günü algoritması sonucunda çıkan kurallar incelendiğinde önce dropbox, aramamotoru ve sosyal ağ (facebook, twitter, linkedin…) sitelerine giren bir kişi sonrasında %96,774 olasılıkla TÜBİTAK’a girmektedir. Sıklık dereceside (Rule Support) %21,127 değerini göstermektedir. 2. sırada ise önce bulut mimari ve TÜBİTAK sitelerine giren bir kişi sonrasında %96,667 olasılıkla sosyal ağ (facebook, twitter, linkedin…) sitelerine girmektedir. Sıklık derecesi de %24,423 değerini göstermektedir. Diğer olasılıklar şekilde gösterilmektedir. 31 Şekil 3.6. Cuma günü Apriori algoritmasının sonucunda çıkan kurallar Şekil 3.7’de Pazartesi (25.03.2013) günü algoritması sonucunda çıkan kurallar incelendiğinde önce gazete ve TÜBİTAK (webmail, anasayfa) sitelerine giren kişi sonrasında %97,561 olasılıkla sosyal ağ (facebook, twitter, linkedin…) sitelerine girmektedir. Sıklık dereceside (Rule Support) %27,778) değerini göstermektedir. 2. sırada ise önce dropbox ve TÜBİTAK (webmail, anasayfa) sitelerine giren bir kişi sonrasında %97,222 olasılıkla sosyal ağ (facebook, twitter, linkedin…) sitelerine girmektedir. Sıklık derecesi de %24,306 gösterilmektedir. değerini göstermektedir. Diğer olasılıklar şekilde 32 Şekil 3.7. Pazartesi günü Apriori algoritmasının sonucunda çıkan kurallar Diğer modül analizlerine bakıldığında Çarşamba günü için Şekil 3.8’deki tablo akış modülü sonucunda çıkan web adreslerinin sıklığını, Şekil 3.9’da gösterilmektedir. Şekil 3.8. Çarşamba günü table akış modülü 33 Şekil 3.9. Çarşamba günü web adreslerinin sıklıkları Şekil 3.9’a bakıldığında en çok girilen web adresinin Çarşamba (27.03.2013) gününde 3066 kez girilen sosyal ağlar (facebook, twitter, linkledin…) olduğu anlaşılmaktadır. 2. sırada 1549 kez girilen TÜBİTAK, 3. sırada ise 1164 kez girilen arama motoru diye devam etmektedir. Şekil 3.10’da ise Pazartesi (25.03.2013) ve Cuma (29.03.2013) günlerinin karşılaştırılmış tabloları gözükmektedir. 34 Şekil 3.10. Pazartesi ve cuma günlerinin web adresleri sıklıkları Şekil 3.10’da görüldüğü gibi Cuma ve Pazartesi günlerinde en sık tıklanan web adresi sosyal ağlar (facebook, twitter, linkledin…), ikinci sırada ise iki gün için içinde TÜBİTAK olduğu anlaşılmaktadır. 4. Sırada Pazartesi günü gazete siteleri olmasına rağmen Cuma günü Microsoft sitesi yer almaktadır. Diğer modül analizlerinden Çarşamba günü için zaman dilimleri modülü olan Şekil 3.11’deki akışın sonucunda Şekil 3.12’deki gün içindeki ağ trafiği gösterilmektedir. Şekil 3.11. Çarşamba günü zaman dilimleri akış modülü 35 Zaman dilimleri sabah; saat_real<8, öğleden önce; saat_real<12 and saat_real>=8, öğleden sonra; saat_real<18 and saat_real>=12 ve akşam zaman dilimleri; saat_real>=18 and saat_real<=24 olarak belirlenmiştir. Şekil 3.12. Çarşamba günü saat dilimlerinin yoğunluğu Şekil 3.12’ye bakıldığında Çarşamba (27.03.2013) günü öğleden öncesinde ve sonrasında internet trafik yoğunluk yüzdeleri oldukça fazla olduğu görülüyor. En fazla öğleden sonra (%56,17), en az ise akşam zaman dilimleri (%8,97) olduğu gözüküyor. Öğleden sonra internete girme sıklığı max., akşam ise min. denilebilir. Şekil 3.13’de ise Pazartesi (25.03.2013) ve Cuma (29.03.2013) günlerinin karşılaştırılmış tabloları gözükmektedir. 36 Şekil 3.13. Pazartesi ve cuma günleri saat dilimlerinin yoğunlukları Görüldüğü gibi Cuma günü ve Pazartesi günleri yoğunlukları benzer fakat Pazartesi günü için öğleden öncesi ve sonrası zaman dilimleri arasındaki fark oldukça fazladır. Öğleden sonra internet kullanımının max. olduğu söylenebilir. Diğer modül analizlerinden Çarşamba günü için dst modülü olan Şekil 3.14’deki akışın sonucunda Şekil 3.15’deki gün içindeki web adreslerinin zaman dilimlerine bağlı olarak internet trafik yoğunlukları görülmektedir. 37 Şekil 3.14. Çarşamba günü dst akış modülü Şekil 3.15’e bakıldığında Çarşamba günü için bütün girilen web adresleri arasında en çok tıklanan sosyal ağlar(%41) (facebook, twitter, linkledin…) olduğu anlaşılmaktadır. Sosyal ağların gün içindeki oranları ise en fazla öğleden önce ve öğleden sonra olduğu görülmektedir. Sonrasında TÜBİTAK (%31), arama motoru (%15) diye devam etmektedir. Şekil 3.15. Çarşamba günü zamana bağlı web adreslerinin yoğunlukları 38 Şekil 3.16’da ise Pazartesi (25.03.2013) ve Cuma (29.03.2013) günlerinin karşılaştırılmış tabloları gözükmektedir. Şekil 3.16. Pazartesi ve cuma günleri zamana bağlı web adreslerinin yoğunlukları Şekil 3.16’ya bakıldığında her iki gün içinde en fazla tıklanan sitelerin sosyal ağlar (facebook, twitter, linkledin…) olduğu görülmektedir. Sadece girilme yüzdeleri farklıdır (Pazartesi %41, Cuma %35). Şekil 3.17’de sadece yahoomynet sitelerine bakıldığında Pazartesi günü öğleden sonra tıklanma sıklığı yoğunken Cuma günü için zaman dilimleri 39 orantılı olarak dağıldığı gözükmektedir. Yine Pazartesi sabah saatlerinde yahoomynet sitelerine tıklanma sıklığı çok az iken Cuma günü oldukça fazla olduğu gözüküyor. Şekil 3.17. Pazartesi ve cuma günleri zamana bağlı microsoft sitesinin yoğunlukları Diğer modül analizlerinden Çarşamba günü için ethsource modülü olan Şekil 3.18’deki akışın sonucunda Şekil 19’daki gün içindeki kullanıcıların web adreslerini tıklama sıklığı görülmektedir. Şekil 3.18. Çarşamba günü kullanıcılarının web adreslerini tıklama sıklığı Şekil 3.19’a bakıldığında Çarşamba günü için yaklaşık 160 kullanıcı arasında %38’lik dilimle en fazla webde sayfa tıklayan kişi 52 ID nolu kullanıcı olduğu gözükmektedir. 40 Şekil 3.19. Çarşamba günü kullanıcılarının web trafiği 52 ID nolu kullanıcının ve diğer kullanıcıların gün içindeki zaman dilimlerine bağlı web sayfası tıklama sıklığı da Şekil 3.20’de görülmektedir. Şekil 3.20. Çarşamba günün içerisindeki kullanıcıların zaman dilimine göre web sayfası tıklama yoğunluğu 41 Şekil 3.20’den anlaşılacağı gibi ID 52 kullanıcısı öğleden önce ve öğleden sonra interneti yoğun olarak kullandığı söylenebilir. 3.2. Karar Ağacı Algoritması İle Ağ Verilerinin Modellenmesi Bu çalışmada, örnek kurumun ağ verileri üzerinde karar ağaçlarından gini algoritması uygulanmıştır. Çalışmada Cuma günkü verilere ilave olarak kullanıcıların medeni durum bilgileri ve yaş bilgileri de eklenmiştir. Öncelikle veriler eğitim seti ve test seti olarak yeniden düzenlenmiştir. Düzenlenmiş veri seti Şekil 3.22 ve Şekil 3.27’deki tablolarda görülmektedir 3.2.1. Eğitim seti (Karar Ağacı) 475 satıra sahip eğitim verilerinin kategorik/niteliksel açıklamaları Şekil 3.21’de, Şekil 3.22’de ise eğitim seti gösterilmektedir. Açıklama Kategori/Nitelikler ethsource ID 132 farklı kullanıcı DST Web 14 farklı sınıflandırılmış site grubu Yaş 25-49 arası değişen yaş grubu Medeni durum Evli-Bekar Cinsiyet Erkek-Kız Şekil 3.21. Eğitim verilerinin kategorik/niteliksel açıklamaları 42 Şekil 3.22. Eğitim seti verisi Eğitim seti üzerinde RapidMiner Studio 6.0 ve SPSS Statistics 21.0 veri madenciliği uygulama platformu uygulanmıştır. RapidMiner aracının eğitim setine uygulanması (Karar Ağacı) Şekil 3.23. RapidMiner Karar Ağacı model tasarımı 43 Algoritmanın uygulandığı işlem aşamasında eğitim ve test verilerin yüklendiği modül read excel modülleridir. Select Attribute modülü Karar Ağacına sokulacak nitelikleri belirleyen modüldür. Apply modeli ise Karar Ağacındaki öğrenilen modeli veri seti üzerine uygular [36]. Sınıf etiketi cinsiyet olarak belirlendiğinde Şekil 3.23’deki Karar Ağacı modeli sonucunda çıkan Karar Ağacı şekli Şekil 3.24’de gösterilmektedir. 44 Şekil 3.24. RapidMiner Karar Ağacı modeli sonucu 45 Algoritma ilk başta ethsource’a göre sonrasında yaş, medeni durum ve girilen siteye göre ayırma işlemini gerçekleşmiştir. Son olarak ise önceden belirlenen sınıf etiketi olan cinsiyet durumuna göre sınıflandırma işlemini tamamlamıştır. SPSS aracının eğitim setine uygulanması (Karar Ağacı) Eğitim setine Karar Ağacı algoritması SPSS yazılımında uygulandığında ise 3.25’deki dallanma sonucu bulunmaktadır. 46 Şekil 3.25. SPSS Karar Ağacı algoritmasının sonucu 47 Sonuçlara bakıldığında için sınıf etiketi cinsiyet olarak belirlenmiştir. Algoritma ilk başta ethsource’a göre yaş, medeni durum ve girilen siteye göre ayırma işlemini gerçekleştirmiştir. Son olarak ise önceden belirlenen sınıf etiketi olan cinsiyet durumuna göre sınıflandırma işlemini tamamlamıştır. 3.2.2. Test seti (Karar Ağacı) 99 satıra sahip test verilerinin kategorik/niteliksel açıklamaları Şekil 3.26’da, Şekil 3.27’de ise bütün algoritmalarda sınanan test seti gösterilmektedir. Test setinin RapidMiner ve SPSS araçlarında uygulandığında çıkan sonuç bir sonraki başlık altında incelenecektir. Kategori/Nitelikler Açıklama ethsource ID 63 farklı kullanıcı DST web 14 farklı sınıflandırılmış site grubu Yaş 25-49 arası değişen yaş grubu Medeni durum Evli-Bekar Cinsiyet Erkek-Kız Şekil 3.26. Test verilerinin kategorik/niteliksel açıklamaları Şekil 3.27. Test seti verisi 48 RapidMinerdaki algoritmaya uygulanan test seti sonuçları (Karar Ağacı) Eğitim seti üzerinden uygulanan algoritma sonuçlarında test verilerini (99 veri) sınadığımızda model başarımını değerlendirme ölçütlerinden hata oranın Şekil 3.28’de görüldüğü gibi yaklaşık %28 olduğu, başarı oranının ise yaklaşık %71 olduğu anlaşılmaktadır. Şekil 3.28. RapidMiner’daki test seti hata-başarı oranı(Karar Ağacı) Gerçek sınıf Tahmin edilen sınıf C(i|j) Sınıf=erkek(male) Sınıf=kadın(female) Sınıf=erkek(male) C(erkek|erkek) a 62 C(kadın|erkek) b 10 Sınıf=kadın(female) C(erkek|kadın) c 18 C(kadın|kadın) d 9 Şekil 3.29. Karışıklık matrisi-RapidMiner 49 Test sonucunda ulaşılan sonuçların başarım bilgileri karışıklık matrisi ile ifade edilebilir. Karışıklık matrisinde satırlar test kümesindeki örneklere ait gerçek sayıları, kolonlar ise modelin tahminlemesini ifade eder. Karışıklık matrisi üzerinden anma, kesinlik ve F-ölçütü hesaplandığında aşağıdaki sonuçlar bulunmaktadır. Anma değeri= = 62 = 0,86 72 a a+b a Kesinlik değeri= a+c = 62 = 0,77 80 2a F-ölçütü= 2a+b+c = 124 = 0,81 152 SPSS’deki algoritmaya uygulanan test seti sonuçları (Karar Ağacı) Eğitim seti üzerinden uygulanan algoritma sonuçlarında test verilerini (99 veri) sınadığımızda model başarımını değerlendirme ölçütlerinden hata oranın Şekil 3.30’da görüldüğü gibi yaklaşık %24 olduğu başarı oranının ise yaklaşık %75 olduğu anlaşılmaktadır 50 Şekil 3.30. SPSS’deki test seti hata-başarı oranı (Karar Ağacı) Gerçek sınıf Tahmin edilen sınıf C(i|j) Sınıf=erkek(male) Sınıf=kadın(female) Sınıf=erkek(male) C(erkek|erkek) a 71 C(kadın|erkek) b 1 Sınıf=kadın(female) C(erkek|kadın) c 23 C(kadın|kadın) d 4 Şekil 3.31. Karışıklık matrisi-SPSS Test sonucunda ulaşılan sonuçların başarım bilgileri karışıklık matrisi ile ifade edilebilir. Karışıklık matrisinde satırlar test kümesindeki örneklere ait gerçek sayıları, kolonlar ise modelin tahminlemesini ifade eder. Karışıklık matrisi üzerinden anma, kesinlik ve F-ölçütü hesaplandığında aşağıdaki sonuçlar bulunmaktadır. 51 Anma değeri= = 71 = 0,98 72 a a+b a Kesinlik değeri= a+c 71 = = 0,75 94 F-ölçütü= = 2a 2a+b+c 142 = 0,85 166 3.3. Naive Bayes İle Ağ Verilerinin Modellenmesi Önceki bölümde düzenlenmiş olan eğitim setine Naive Bayes algoritması C# yazılım dili ile kodlanarak ve RapidMiner aracı ile modellenerek test setine uygulanmıştır. Düzenlenmiş veri setleri Şekil 3.22 ve Şekil 3.27’deki şekillerde görülmektedir. 3.3.1. Eğitim seti (Naive Bayes) Düzenlenmiş eğitim veri seti hakkında bilgiler Karar Ağacı algoritması başlığı altında verilmiştir. RapidMiner aracının eğitim setine uygulanması (Naive Bayes) 52 Şekil 3.32. RapidMiner’da Naive Bayes model tasarımı Algoritmanın uygulandığı işlem aşamasında eğitim ve test verilerin yüklendiği modül read excel modülleridir. Select Attribute modülü algoritmada kullanılacak nitelikleri belirleyen modüldür. Apply modeli ise algoritmada öğrenilen modeli veri seti üzerine uygular [36]. C# ile kodlanan Naive Bayes algoritması ve eğitim setine uygulanması Ek-1’de kodlar verilmektedir. Microsoft Visual C# 2008’de derlenen kodlardan oluşan arayüz Şekil 3.33’de gösterilmektedir. 53 Şekil 3.33. Naive Bayes uygulaması arayüz görüntüsü Eğitim setine göre düzenlen Naive Bayes algoritmasına şekildeki gibi girilen değerler (eth, dst, yaş, mdh) sonucunda değişkenin hangi sınıf etiketine ait olduğu görülmektedir. Olasılıkları hesaplandığında P(X|Ci)*P(Ci) değeri yüksek olan sınıf etiketi değerinin kız (male) olduğu anlaşılmaktadır. Test seti uygulanmış hali bir sonraki bölümde anlatılmıştır. Ortadaki bölüm ise eğitim verilerini göstermektedir. 3.3.2. Test seti (Naive Bayes) 99 satıra sahip test verileri önceki bölümlerde bahsedilen Şekil 3.27’de gösterilmektedir. Test setinin RapidMiner aracında ve C#’ta programlama dili ile sınandığında hata/başarı oranları bir sonraki başlıklar altında incelenecektir. RapidMinerdaki algoritmaya uygulanan test seti sonuçları (Naive Bayes) Eğitim seti üzerinden uygulanan algoritma sonuçlarında test verilerini (99 veri) sınadığımızda model başarımını değerlendirme ölçütlerinden hata 54 oranının Şekil 3.34’de görüldüğü gibi yaklaşık %16 olduğu, başarı oranının ise yaklaşık %83 olduğu anlaşılmaktadır. Şekil 3.34. RapidMiner’daki test seti hata-başarı oranı (Naive Bayes) Gerçek sınıf Tahmin edilen sınıf C(i|j) Sınıf=erkek(male) Sınıf=kadın(female) Sınıf=erkek(male) C(erkek|erkek) a 68 C(kadın|erkek) b 4 Sınıf=kadın(female) C(erkek|kadın) c 12 C(kadın|kadın) d 15 Şekil 3.35. Karışıklık matrisi-RapidMiner Test sonucunda ulaşılan sonuçların başarım bilgileri karışıklık matrisi ile ifade edilebilir. Karışıklık matrisinde satırlar test kümesindeki örneklere ait gerçek sayıları, kolonlar ise modelin tahminlemesini ifade eder. Karışıklık matrisi 55 üzerinden anma, kesinlik ve F-ölçütü hesaplandığında aşağıdaki sonuçlar bulunmaktadır. Anma değeri= = 68 = 0,94 72 a a+b a Kesinlik değeri= a+c 68 = 0,85 = 80 2a F-ölçütü= 2a+b+c 136 = = 0,89 152 C# program dili ile kodlanan algoritmaya uygulanan test seti sonuçları (Naive Bayes) Eğitim seti üzerinden uygulanan algoritma sonuçlarında test verilerini (99 veri) sınadığımızda model başarımını değerlendirme ölçütlerinden hata oranının Şekil 3.36’da görüldüğü gibi yaklaşık %17 olduğu başarı oranının ise yaklaşık %82 olduğu anlaşılmaktadır. 56 Şekil 3.36. C# program dili ile kodlanan algoritmaya uygulanan test seti hatabaşarı oranı Gerçek sınıf Tahmin edilen sınıf C(i|j) Sınıf=erkek(male) Sınıf=kadın(female) Sınıf=erkek(male) C(erkek|erkek) a 56 C(kadın|erkek) b 16 Sınıf=kadın(female) C(erkek|kadın) c 1 C(kadın|kadın) d 26 Şekil 3.37. Karışıklık matrisi-Kodlama Test sonucunda ulaşılan sonuçların başarım bilgileri karışıklık matrisi ile ifade edilebilir. Karışıklık matrisinde satırlar test kümesindeki örneklere ait gerçek sayıları, kolonlar ise modelin tahminlemesini ifade eder. Karışıklık matrisi üzerinden anma, kesinlik ve F-ölçütü hesaplandığında aşağıdaki sonuçlar bulunmaktadır. 57 Anma değeri= = 56 = 0,77 72 a a+b a Kesinlik değeri= a+c 56 = = 0,98 57 2a F-ölçütü= 2a+b+c = 112 = 0,86 129 58 4. SONUÇ Bu tez çalışmasında veri madenciliği tekniklerinden Apriori, Karar Ağacı ve Naive Bayes algoritmaları ile gerçek ağ verisi üzerinde veri madenciliği süreçleri uygulanarak ne tür bilgiler elde edebileceğimizi ve bu bilgiler üzerinde karşılaştırma yapılarak model başarımını değerlendirme ölçütlerine göre dereceleri karşılaştırılmıştır. Sırasıyla bakacak olursak; Apriori algoritması uygulama modelinde 3 gün kendi içinde kıyaslandığında; Çarşamba, Cuma ve Pazartesi günü için çıkan kurallar incelendiğinde Çarşamba günü için önce yahoomynet ve arama motoru (yandex, google vs.) sitelerine giren bir kişi sonrasında %97, 297 olasılıkla TÜBİTAK (webmail, anasayfa) sitelerine girmektedir. Sıklık derecesi de (Rule Support) %24,324 değerini göstermektedir. Cuma günü için önce dropbox, arama motoru ve sosyal ağ (facebook, twitter, linkedin…) sitelerine giren bir kişi sonrasında %96,774 olasılıkla TÜBİTAK (webmail, anasayfa) sitelerine girmektedir. Sıklık derecesi de (Rule Support) %21,127 değerini göstermektedir. Pazartesi günü için ise gazete ve TÜBİTAK (webmail, anasayfa) sitelerine giren kişi sonrasında %97,561 olasılıkla sosyal ağ (facebook, twitter, linkedin…) sitelerine girmektedir. Sıklık dereceside (Rule Support) %27,778) değerini göstermektedir. Görülüyor ki TÜBİTAK (webmail, anasayfa) sitelerine girmeden önce her 2 (Çrş ve Cuma) günde de kullanıcıların kesinlikle arama motorunu tıkladığı sonucuna varılmıştır. Sıklık derecelerinin yüksekliğinden kuralın kuvvetli olduğu anlaşılmaktadır. Pazartesi günü için bu olasılık sonraki kurallarda ortaya çıkmıştır. En çok girilen web adresinin sosyal ağlar (facebook, twitter, linkedin…), sonrasında TÜBİTAK sonrasında ise arama motoru olduğu tespit edilmiştir. En çok kullanılan arama motorlarının yandex ve google olduğu gözlemlenmiştir. Kullanıcılar tarafından internetin en aktif olarak kullanıldığı zaman dilimi öğleden sonra olduğu görülmüştür. Buna bağlı olarak öğleden sonra iş yapma potansiyeli azalıyor yorumu yapılabilir. 59 İleride yapılacak çalışmalara referans olacak şekilde ilişki durumları incelendiğinde belli yaş gruplarına göre ayrım yapılırsa (genç-orta yaşlı – olgun yaşlı) hangi yaş grubunun efektif çalıştığı belirlenebilir. Hatta kişilerin kim olduklarına bakılarak kişilik özelliklerine göre hangi tip sitelere girdiği analiz edilebilir. Bu bize daha kapsamlı çalışma ile kişilik analizi hakkında tahminlerde bulunulmasında yardımcı olabilir. Karar Ağacı ile Naive Bayes algoritmaları uygulama araçlarına göre kıyaslandığında; Alg. Değerlendirme Uygulama Ortamı Karar Ağacı Değerlendirme Naive Bayes Değerlendirme Başarı Başarı Anma Kesinlik F Ölçütü Anma Kesinlik F Ölçütü Oranı Oranı (%) (%) (%) (%) (%) (%) (%) (%) RapidMiner %71 %86 %77 %81 %83 %94 %85 %89 SPSS %75 %98 %75 %85 X X X X X X X X 82% %77 %98 %86 Kodlama Şekil 4.1. Oluşturulan modellerin başarım ölçütleri Şekil 4.1 incelendiğinde RapidMiner Naive Bayes algoritması model testine ait %83 başarı derecesiyle en iyi sonucu ürettiği söylenebilir. Başarı ölçütü oldukça basit ve önemli bir kriterdir. Bu ölçüte göre RapidMiner aracı ile yapılan Naive Bayes algoritmasını sırasıyla Navie Bayes kodlama, SPSS Karar Ağacı ve RapidMiner Karar Ağacı algoritmaları izlemektedir.Kesinlik ölçütü bakımından Naive Bayes kodlama algoritması iyi sonucu oluşturmuş olup, diğer algoritmalar bu ölçüte göre RapidMiner Naive Bayes, RapidMiner Karar Ağacı, SPSS Karar Ağacı şeklinde sıralanabilir. Ancak kesinlik ölçütü tek başına yorumlanırsa değerlendirme yanlış sonuçlara götürebilir. Bu ölçütü anma ölçütüyle beraber ele almak gerekebilir. Tablodan görüleceği üzere algoritmalar, anma ölçütüne göre SPSS Karar Ağacı, RapidMiner Naive Bayes, RapidMiner Karar Ağacı, Naive Bayes kodlama olarak sıralanabilir. 60 Görüleceği üzere, kesinlik ölçütü ve duyarlılık ölçütü birbiriyle farklı sıralama ortaya koymuştur. Kesinlik ve duyarlık duyarlılık ölçütlerini beraber değerlendirmek için, her iki değerin harmonik ortalaması olan F-Ölçütüne baktığımızda sıralamanın RapidMiner Naive Bayes, kodlama Naive Bayes, SPSS Karar Ağacı ve RapidMiner Karar Ağacı şeklinde olduğunu görüyoruz. Bu sıralamanın yine başarı kriter sıralamasıyla birebir aynı olduğu görülmektedir. Veri madenciliğinde bilgiye erişmede farklı metotlar kullanılmaktadır. Bu metotlara ait pek çok algoritma vardır. Bu algoritmalardan hangisinin daha üstün olduğu üzerine çalışmalar yapılmış ve yapılan bu çalışmalarda farklı sonuçlar elde edilmiştir [37, 38]. Bunun en önemli sebebi, işlem başarımının, kullanılan veri kaynağına, veri üzerinde yapılan önişleme, algoritma parametrelerinin seçimine bağlı olmasıdır [39, 40]. Farklı kişiler tarafından, farklı veri kaynakları üzerinde, farklı parametrelerle yapılan çalışmalarda farklı sonuçlar oluşması doğaldır. Ancak, yaptığım çalışma, “benzer veri kümelerinde belli yöntemlerin daha başarılı olduğu” şeklindeki çıkarıma uygun olarak diğer çalışmalarla benzer sonuç vermiştir. Sonuç olarak örnek kurumun ağ verilerinin kullanıldığı bu çalışmalarda C# programlama dili ve RapidMiner uygulaması ile yapılan Naive Bayes algoritmalarının diğer algoritmalara göre daha iyi sonuç ürettiği sonucuna varılmıştır. Yeni tahminlerde bu sınıflandırıcı ve bu uygulama araçları kullanılabilecek potansiyele sahiptir denilebilir. Gelecekteki çalışmalara referans olacak şekilde daha geniş kapsamlı bir çalışma yapılacak olursa sınıf etiketi cinsiyet üzerinden kadın ve erkek cinslerinin çalışma potansiyellerine bakılarak aynı veriler üzerinden etki analizi yapılabilir. Gelişen çalışmalarla kurumların internet trafikleri tahmin edilebilir ve ağ trafikleri bu tahminlere göre şekillendirilebilir. Buna bağlı olarak çalışanların performansı da değerlendirilebilir. 61 KAYNAKLAR 1. Kalikov, A., ” Veri Madenciliği ve Bir E-Ticaret Uygulaması”, Yüksek Lisans Tezi, Gazi Üniversitesi, Fen Bilimleri Enstitüsü, (2006). 2. Han, J., Kamber, M., “Data Mining: Concepts and Techniques”, Morgan Kaufmann Publishers Inc., San Francisco, 6-9 (2006). 3. Uzun, Ö. ve arkadaşları, “Olasılıksal Sınıflandırıcılar ile Doğum Doğum Öncesinde Trizomi 21 Risk Hesaplaması”, EEE 21st Signal Processing and Communications Applications Conference, (2013). 4. Olgun, O. M., Özdemir, G., “İstatiksel Özellik Temelli Bayes Sınıflandırıcı Kullanarak Kontrol Grafiklerinde Örüntü Tanıma”, Gazi Ü. Müh. Mim. Fak. Der., 27(2), 303-311 (2012). 5. Solmaz, R. ve arkadaşları, “Fonksiyonel Tiroit Hastalığı Tanısında Naive Bayes Sınıflandırıcının Kullanılması”, Ankara Bilişim Konferansı, (2013). 6. Haltaş, A., Alkan, A. “İmmunohistokimyasal Boyalar ile Tiroid Tümörü Teşhisinde Naive Bayes Algoritması Kullanılması”, Ankara Bilişim Konferansı, (2013). 7. Özçakır, F. C., Çamurcu, A. Y., “Birliktelik Kuralı Yöntemi İçin Bir Veri Madenciliği Yazılımı Tasarımı Ve Uygulaması”, İstanbul Ticaret Üniversitesi Fen Bilimleri Dergisi, 6(12), 21-37 (2007). 8. Özçakır, F. C., “Müşteri İşlemlerindeki Birlikteliklerin Belirlenmesinde Veri Madenciliği Uygulaması”, Yüksek Lisans Tezi, Marmara Üniversitesi, Fen Bilimleri Enstitüsü, (2006). 9. Özkan, Y., ”Veri Madenciliği Yöntemleri”, Çölkesen, R., Uğurkaya, C., İstanbul, İstanbul, 37-38 (2008). 10. Öğüt, S., “Veri Madenciliği Kavramı ve Gelişim Süreci”, Veri Madenciliği Paneli, İstanbul, (2005). 11. Akpınar, H., ”Veri Tabanlarında Bilgi Keşfi ve Veri Madenciliği”, İ. Ü. İşletme Fakültesi Dergisi, 29: 1-22 (2000). 12. Han, J., Kamber, M., “Data Mining: Concepts and Techniques”, Morgan Kaufmann Publishers Inc., San Francisco, 640-641 (2006). 62 13. Dolgun, M. Ö., “Büyük Alışveriş Merkezleri İçin Veri Madenciliği Uygulamaları”, Y. Lisans Tezi, Hacettepe Üniversitesi Fen Bilimleri Enstitüsü, Ankara, 25 (2006). 14. Çakır, Ö., “Veri Madenciliğinde Sınıflandırma Yöntemlerinin Karşılaştırılması”, Doktora Tezi, Marmara Üniversitesi Sosyal Bilimler Enstitüsü, İstanbul, 33-34 (2008). 15. Zaiane, O. R. ve arkadaşları, “On Data Clustering Anlaysis: Scalabilitiy, Constraints ve Validation”, Taipei, Taiwan, 28-39 (2002). 16. Altıntaş, T., “Veri Madenciliği Metotlarından Olan Kümeleme Algoritmalarının Uygulamalı Etnik Analizi ”, Y. Lisans Tezi, Sakarya Üniversitesi Fen Bilimleri Enstitüsü, Sakarya, 29-30 (2006). 17. Daniel, T., L., “Discovering Knowledge In Data”, Canada, 180-181 (2005). 18. Agrawal, R., Srikant, R., “Fast algorithms for mining association rules”, In Proc. 20th Int. Conf. Very Large Data Bases, VLDB, San Francisco, USA, pages 487–499 (1994). 19. Frawley, W. J. ve arkadaşları, “Knowledge Discovery Databases: An Overview, in Knowledge Discovery in Databases”, AAAI 58 AI Magazine, 1-27 (1991). 20. Agrawal, R. ve Srikant, R., “Mining Sequential Patterns”, 11th International Conference on Data Engineering, Taipei, Taiwan, 314 (1995). 21. Zhu, H., “On-Line Analytical Mining of Association Rules”, MSc. Thesis, Simon Fraser University, Ottawa, Canada, (1998). 22. Houtsma, M. ve Swami, A., “Set-Oriented Mining for Association Rules in Relational Databases”, Proceedings of the 11th IEEE International Conference on Data Engineering, Taipei, Taiwan, 2534 (1995). 23. Das, A. ve arkadaşları, “Rapid Association Rule Mining”, In Proceedings of the Tenth International Conference on Information and Knowledge Management, ACM Press, Atlanta, GA, USA, 487-499 (2001). 24. Zaki, M. J. ve Hsiao, C. J., “CHARM: An Efficient Algorithm for Closed Itemset Mining”, In 2nd SIAM International Conference on Data Mining (SDM’02), Eds. Grossman, R. L., Han, J., Kumar, V., Mannila, H. ve Motwani, R., Siam, Arlington, VA, USA, 457-473 (2002). 63 25. Gao, W., “A Hierarchical Document Clustering Algoritm”, MSc Thesis, Dalhousie University, Halifax, Nova Scotia, (2004). 26. Sever, H., Oğuz, B., “Eşleştirme Sorguları ve Algoritmalar”, “Veritabanlarında Bilgi Keşfine Formal Bir Yaklaşım”, Cilt 3, 173204 (2002). 27. Agrawal, R., “Database Mining : A Performance Perspective, IEEE Transactions on Knowledge and Data Engineering, 914-925 (1993). 28. Özkan, Y., “Veri Madenciliği Yöntemleri ”, İstanbul, İstanbul, 50-60 (2008). 29. Quinlan, J. R., "Induction of Decision Trees ", Journal of Machine Learning, vol. 1, 81-106 (1986). 30. Quinlan, J. R., “C4.5: Program for Machine Learning”, Morgan Kaufmann Publishers, San Mateo, CA, 302 (1993). 31. Akbulut, S., “Veri Madenciliği Teknikleri İle Bir Kozmetik Markanın Ayrılan Müşteri Analizi Ve Müşteri Segmentasyonu”, Yüksek Lisans Tezi, Gazi Üniversitesi Fen Bilimleri Enstitüsü, (2006). 32. Bidgoli, A. M., Boraghi, M., “A Language Independent Text Segmentation Technique Based on Naive Bayes Classifier”, International Conference on Signal and Image Processing, Chennai 11-16 (2010). 33. Krishna, P. R., De, K. S., “Naive-Bayes Classification using FuzzyApproach”, Intelligent Sensing and Information Processing, 61-64 (2005). 34. Lee, C. H. ve arkadaşları, “Calculating Feature Weights in Naive Bayes with Kullback-Leibler Measure”, 11th IEEE International Conference on Data Mining, 1146-1151 (2011). 35. İnternet: IBM, http://www-03.ibm.com/software/products/tr/tr/spssmodeler/, 2014. 36. İnternet: Veri Okyanusuna Yolculuk, http://mcoshtan.blogspot.com/2012/11/rapidminerda-decision-treeuygulamas.html, 2014. 37. Wilson, R. L., Sharda, R. “Bankruptcy Prediction Using Neural Networks”, Elsevier Science B. V., 11(5), 545-557 (1994). 64 38. Lin, M. ve arkadaşları, “Kernel-Based Discriminant Technique for Educational Placement”, Journal of Educational and Behavioral Statistics, 29, 219-240 (2004). 39. Hand, D. J. “Classifier Technology and the Illusion of Progress” Statist. Sci., 21(1), 1-14 (2006). 40. Michie, D., Spiegelhalter, D. J., Taylor, C. C. “Machine Learning, Neural and Statistical Classification”, Ellis Horwood Upper Saddle River, USA, 240-245 (1994). 65 EKLER 66 Ek-1. C# programlama dilinde yazılan kodlar Kodlar; using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; System.Data.OleDb; namespace veri_madenciligi { public partial class frmNav : Form { public frmNav() { InitializeComponent(); } //--------------------Sınıf Değerlerini Hesaplamak için Kullanılan Değişkenler public static double UNS_oranF = 0, UNS_oranM = 0;//sınıf oranlarını hesaplar public static int UNS_sayacF = 0, UNS_sayacM = 0;//veriler içersinde sınıf sayılarını tutmak için //--------------------ETH Niteliğine ait Değerleri Hesaplamak için kullanılan Değişkenler public static double ETH_oranF, ETH_oranM; public static int ETH_sayacF = 0, ETH_sayacM = 0; //--------------------DST Niteliğine ait Değerleri Hesaplamak için kullanılan Değişkenler public static double DST_oranF, DST_oranM; public static int DST_sayacF = 0, DST_sayacM = 0; //--------------------YAS Niteliğine ait Değerleri Hesaplamak için kullanılan Değişkenler public static double YAS_oranF, YAS_oranM; public static int YAS_sayacF = 0, YAS_sayacM = 0; //--------------------MDH Niteliğine ait Değerleri Hesaplamak için kullanılan Değişkenler public static double MDH_oranF, MDH_oranM; public static int MDH_sayacF = 0, MDH_sayacM = 0; //--------------------public static double female, male; public static double sonucF, sonucM; 67 Ek-1. (Devam) C# programlama dilinde yazılan kodlar private void frmNav_Load(object sender, EventArgs e) { string dosya_yolu = "Kitap1.xlsx"; OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + dosya_yolu + "; Extended Properties=Excel 12.0"); baglanti.Open(); string sorgu = "select * from [Egitim$] "; OleDbDataAdapter data_adaptor = new OleDbDataAdapter(sorgu, baglanti); baglanti.Close(); DataTable dt = new DataTable(); data_adaptor.Fill(dt); dataGridView1.DataSource = dt; } private void button1_Click(object sender, EventArgs e) { try { if (ETHtextBox.Text == "" || DSTcomboBox.SelectedIndex == 0 || YAStextBox.Text == "" || MDHcomboBox.SelectedIndex == 0) { MessageBox.Show("Giriş Değerlerini boş geçemezsiniz!"); TEMİZLE(); } else { int MDH = Convert.ToInt32(MDHcomboBox.SelectedIndex); int ETH = Convert.ToInt32(ETHtextBox.Text); int YAS = Convert.ToInt32(YAStextBox.Text); int DST = Convert.ToInt32(DSTcomboBox.SelectedIndex); UNS_oranM = 0; UNS_oranF = 0; UNS_sayacM = 0; UNS_sayacF = 0; ETH_oranM = 0; ETH_oranF = 0; ETH_sayacM = 0; ETH_sayacF = 0; YAS_oranM = 0; YAS_oranF = 0; YAS_sayacM = 0; YAS_sayacF = 0; 68 Ek-1. (Devam) C# programlama dilinde yazılan kodlar DST_oranM = 0; DST_oranF = 0; DST_sayacM = 0; DST_sayacF = 0; MDH_oranM = 0; MDH_oranF = 0; MDH_sayacM = 0; MDH_sayacF = 0; female = 0; male = 0; sonucM = 0; sonucF = 0; int N = dataGridView1.RowCount - 1; //--------------------------------Sınıfların kaçar tane olduklarını hesapla for (int i = 0; i < dataGridView1.RowCount - 1; i++) { if (dataGridView1.Rows[i].Cells[4].Value.ToString() == "F") { UNS_sayacF++; } } for (int i = 0; i < dataGridView1.RowCount - 1; i++) { if (dataGridView1.Rows[i].Cells[4].Value.ToString() == "M") { UNS_sayacM++; } } Oranlarını hesapla Olasılığını Hesapla //--------------------------------------UNS_oranF = (double)UNS_sayacF / (double)N; UNS_oranM = (double)UNS_sayacM / (double)N; //--------------------------ETH Niteliğinin for (int i = 0; i < dataGridView1.RowCount - 1; i++) { if (dataGridView1.Rows[i].Cells[0].Value.ToString() == ETHtextBox.Text.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "F") 69 Ek-1. (Devam) C# programlama dilinde yazılan kodlar ETH_sayacF++; if (dataGridView1.Rows[i].Cells[0].Value.ToString() == ETHtextBox.Text.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "M") ETH_sayacM++; } Olasılığını Hesapla //--------------------------DST Niteliğinin for (int i = 0; i < dataGridView1.RowCount - 1; i++) { if (dataGridView1.Rows[i].Cells[1].Value.ToString() == DSTcomboBox.SelectedIndex.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "F") DST_sayacF++; if (dataGridView1.Rows[i].Cells[1].Value.ToString() == DSTcomboBox.SelectedIndex.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "M") DST_sayacM++; } Olasılığını Hesapla //--------------------------YAS Niteliğinin for (int i = 0; i < dataGridView1.RowCount - 1; i++) { if (dataGridView1.Rows[i].Cells[2].Value.ToString() == YAStextBox.Text.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "F") YAS_sayacF++; if (dataGridView1.Rows[i].Cells[2].Value.ToString() == YAStextBox.Text.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "M") YAS_sayacM++; } Olasılığını Hesapla //--------------------------MDH Niteliğinin for (int i = 0; i < dataGridView1.RowCount - 1; i++) { if (dataGridView1.Rows[i].Cells[3].Value.ToString() == MDHcomboBox.SelectedIndex.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "F") MDH_sayacF++; 70 Ek-1. (Devam) C# programlama dilinde yazılan kodlar if (dataGridView1.Rows[i].Cells[3].Value.ToString() == MDHcomboBox.SelectedIndex.ToString() && dataGridView1.Rows[i].Cells[4].Value.ToString() == "M") MDH_sayacM++; } //-------------------------------------ETH_oranF = ((double)ETH_sayacF + 1) / ((double)UNS_sayacF + 4); ETH_oranM = ((double)ETH_sayacM + 1) / ((double)UNS_sayacM + 4); //-----------------------------------------------------DST_oranF = ((double)DST_sayacF + 1) / ((double)UNS_sayacF + 4); DST_oranM = ((double)DST_sayacM + 1) / ((double)UNS_sayacM + 4); //----------------------------------------------------YAS_oranF = ((double)YAS_sayacF + 1) / ((double)UNS_sayacF + 4); YAS_oranM = ((double)YAS_sayacM + 1) / ((double)UNS_sayacM + 4); //-----------------------------------------------------MDH_oranF = ((double)MDH_sayacF + 1) / ((double)UNS_sayacF + 4); MDH_oranM = ((double)MDH_sayacM + 1) / ((double)UNS_sayacM + 4); //-----------------------------------------------------P(X|Ci) female = (ETH_oranF) * (DST_oranF) * (YAS_oranF) * (MDH_oranF); male = (ETH_oranM) * (DST_oranM) * (YAS_oranM) * (MDH_oranM); //------------------------------------------------------P(X|Ci)*P(Ci) sonucF = ((double)female) * ((double)UNS_oranF); label3.Text = sonucF.ToString(); sonucM = ((double)male) * ((double)UNS_oranM); label5.Text = sonucM.ToString(); //----------------------En buyuk deger double son = EnBuyukDegeriBul(sonucF, sonucM); label2.Text = son.ToString(); if ((double)son == (double)sonucF) label1.Text = "Female(F)"; if ((double)son == (double)sonucM) label1.Text = "Male(M)"; } } 71 Ek-1. (Devam) C# programlama dilinde yazılan kodlar ex.Message); catch (Exception ex) { MessageBox.Show("Bir hata oluştu! Hata:" + } TEMİZLE(); } public double EnBuyukDegeriBul(double sonucF, double sonucM) { double enbuyuk = sonucF; if ((double)sonucM > (double)enbuyuk) enbuyuk = sonucM; return (double)enbuyuk; } private void label3_Click(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { TEMİZLE(); } public void TEMİZLE() { ETHtextBox.Text = ""; DSTcomboBox.SelectedIndex = 0; YAStextBox.Text = ""; MDHcomboBox.SelectedIndex = 0; label1.Text label2.Text label3.Text label5.Text = = = = ""; ""; ""; ""; } private void button3_Click(object sender, EventArgs e) { Form4 fr4 = new Form4(); fr4.Show(); } private void ETHtextBox_KeyPress(object sender, KeyPressEventArgs e) { //if (char.IsLetter(e.KeyChar)) //{ // e.Handled = true; //} //else //{ 72 Ek-1. (Devam) C# programlama dilinde yazılan kodlar // //} e.Handled = false; } private void DSTcomboBox_KeyPress(object sender, KeyPressEventArgs e) { //if (char.IsLetter(e.KeyChar)) //{ // e.Handled = true; //} //else //{ // e.Handled = false; //} } private void YAStextBox_KeyPress(object sender, KeyPressEventArgs e) { //if (char.IsLetter(e.KeyChar)) //{ // e.Handled = true; //} //else //{ // e.Handled = false; //} } private void MDHcomboBox_KeyPress(object sender, KeyPressEventArgs e) { //if (char.IsLetter(e.KeyChar)) //{ // e.Handled = true; //} //else //{ // e.Handled = false; //} } private void PEGtextBox_KeyPress(object sender, KeyPressEventArgs e) { //if (char.IsLetter(e.KeyChar)) //{ // e.Handled = true; //} //else 73 Ek-1. (Devam) C# programlama dilinde yazılan kodlar //{ // //} } } } e.Handled = false; 74 ÖZGEÇMİŞ Kişisel Bilgiler Soyadı, adı : ATAK, Fatih Uyruğu : T.C. Doğum tarihi ve yeri : 26.12.1982 Ankara Medeni hali : Evli Telefon : 0 (535) 862 34 85 e-mail : fatih.atak@tubitak.gov.tr Eğitim Derece Eğitim Birimi Mezuniyet tarihi Lisans Gazi Üniversitesi/ Elektronik-Bilg. Eğitimi Böl. 2007 Lise İskitler Tek. ve End. Mes. Lis. 2001 İş Deneyimi Yıl 2009- Yer TÜBİTAK Görev Özel Kalem Müdürlüğü/Başkan Asistanı Yabancı Dil İngilizce Hobiler Tenis, Bilgisayar teknolojileri, Basketbol