MATEMATİK MÜHENDİSLİĞİ BÖLÜMÜ



Benzer belgeler
YZM 5257 YAPAY ZEKA VE UZMAN SİSTEMLER DERS#6: GENETİK ALGORİTMALAR

Fonksiyon Optimizasyonunda Genetik Algoritmalar

GENETİK ALGORİTMALAR. Araş. Gör. Nesibe YALÇIN BİLECİK ÜNİVERSİTESİ

Zeki Optimizasyon Teknikleri

GENETİK ALGORİTMALAR BÜŞRA GÜRACAR

Genetik Algoritmalar. Bölüm 1. Optimizasyon. Yrd. Doç. Dr. Adem Tuncer E-posta:

Makine Öğrenmesi 2. hafta

METASEZGİSEL YÖNTEMLER. Genetik Algoritmalar

GENETİK ALGORİTMA ÖZNUR CENGİZ HİLAL KOCA

YZM 3217 YAPAY ZEKA DERS#10: KÜMELEME

Genetik Algoritmalar (GA) Genetik Algoritmalar Đçerik Nesin Matematik Köyü E rim Ç lı l ş ı ta t yı Nisan, 2012 Mustafa Suphi Erden

Gezgin Satıcı Probleminin İkili Kodlanmış Genetik Algoritmalarla Çözümünde Yeni Bir Yaklaşım. Mehmet Ali Aytekin Tahir Emre Kalaycı

Serdar BİROĞUL YÜKSEK LİSANS TEZİ (ELEKTRİK EĞİTİMİ) GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ ANKARA

GENETĠK ALGORĠTMALAR ĠLE HAFTALIK DERS PROGRAMININ HAZIRLANMASI

Makine Öğrenmesi 3. hafta

VERİ MADENCİLİĞİ (Karar Ağaçları ile Sınıflandırma) Yrd.Doç.Dr. Kadriye ERGÜN

GENETİK ALGORİTMALARA GİRİŞ (II) BİNARİ KODLANMIŞ GA

Web Madenciliği (Web Mining)

VERİ MADENCİLİĞİ (Kümeleme) Yrd.Doç.Dr. Kadriye ERGÜN

ALGORİTMA VE PROGRAMLAMA I

Uzaktan Algılama Uygulamaları

Web Madenciliği (Web Mining)

Zeki Optimizasyon Teknikleri

İLERİ ALGORİTMA ANALİZİ GENETİK ALGORİTMA

GENETİK ALGORİTMALARA GİRİŞ (V)

Büyük Veri İçin İstatistiksel Öğrenme (Statistical Learning for Big Data)

GENETİK ALGORİTMALARA GİRİŞ (II) BİNARİ KODLANMIŞ GA

(AYIRIM) DENLİ. Emre KUZUGÜDENL. Doç.Dr.Serdar CARUS

OPTİMİZASYON TEKNİKLERİ. Kısıtsız Optimizasyon

YAPAY SİNİR AĞLARI. Araş. Gör. Nesibe YALÇIN BİLECİK ÜNİVERSİTESİ

GENETİK ALGORİTMALARA GİRİŞ (III)

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu

İstatistik ve Olasılık

Google Maps ve Genetik Algoritmalarla GSP Çözümü İçin Öneri

SAYISAL ÇÖZÜMLEME. Sayısal Çözümleme

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

GridAE: Yapay Evrim Uygulamaları için Grid Tabanlı bir Altyapı

3.2. DP Modellerinin Simpleks Yöntem ile Çözümü Primal Simpleks Yöntem

GENETİK ALGORİTMA İLE RÜZGAR TÜRBİNİ KANAT SAYISI SEÇİMİ

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

VERİ MADENCİLİĞİ (Sınıflandırma Yöntemleri) Yrd.Doç.Dr. Kadriye ERGÜN

K En Yakın Komşu Methodu (KNearest Neighborhood)

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

AST416 Astronomide Sayısal Çözümleme - II. 6. Monte Carlo

BULANIK MANTIK VE SİSTEMLERİ BAHAR DÖNEMİ ÖDEV 1. Müslüm ÖZTÜRK Bilişim Teknolojileri Mühendisliği ABD Doktora Programı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

AYRIK YAPILAR ARŞ. GÖR. SONGÜL KARAKUŞ- FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ, ELAZIĞ

Esnek Hesaplamaya Giriş

TOPLAM KALİTE YÖNETİMİ

28/04/2014 tarihli LYS-1 Matematik-Geometri Testi konu analizi SORU NO LYS 1 MATEMATİK TESTİ KAZANIM NO KAZANIMLAR 1 / 31

Fonksiyon Minimizasyonunda Simulated Annealing Yöntemi

Mekatronik Mühendisliği Uygulamalarında Yapay Zekâ. Ders 1- Yapay Zekâya Giriş. Erhan AKDOĞAN, Ph.D.

PARÇACIK SÜRÜ OPTİMİZASYONU BMÜ-579 METASEZGİSEL YÖNTEMLER YRD. DOÇ. DR. İLHAN AYDIN

2. (v+w+x+y+z) 8 ifadesinin açılımında kaç terim vardır? 3. log 5 0, olduğuna göre sayısı kaç basamaklıdır?

DERS 2 : BULANIK KÜMELER

T.C. KIRIKKALE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ YAPAY SİNİR AĞLARI. Doç.Dr. Necaattin BARIŞÇI FİNAL PROJESİ

PERGEL YAYINLARI LYS 1 DENEME-6 KONU ANALİZİ SORU NO LYS 1 MATEMATİK TESTİ KAZANIM NO KAZANIMLAR

ERCİYES ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTUSÜ BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİMDALI. I. GENEL BİLGİLER Ders Adı

Zeki Optimizasyon Teknikleri

BIP116-H14-1 BTP104-H014-1

ALGORİTMA VE PROGRAMLAMA I

Kümeler arası. Küme içi. uzaklıklar. maksimize edilir. minimize edilir

ALTIN ORAN ARAMA (GOLDEN SECTION SEARCH) METODU

Şekil 7.1 Bir tankta sıvı birikimi

THE EFFECT OF PRODUCT NUMBER ON SOLVING THE JOP-SHOP SCHEDULING PROBLEM BY USING GENETIC ALGORITHM

BLM-431 YAPAY ZEKA. Ders-5 Bilgili Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Gezgin Satıcı Probleminin Karınca Kolonisi ve Genetik Algoritmalarla Eniyilemesi ve Karşılaştırılması

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

İskambil Kağıtları. Bir İskambil kağıdı

YÖNEYLEM ARAŞTIRMASI - III

BLM-431 YAPAY ZEKA. Ders-4 Bilgisiz Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

Alıştırma 1: Yineleme

VERİ MADENCİLİĞİ (Karar Ağaçları ile Sınıflandırma) Yrd.Doç.Dr. Kadriye ERGÜN

Dr. Fatih AY Tel: fatihay@fatihay.net

C Dersleri Bölüm 3 : Program akışı

Algoritmalar ve Karmaşıklık

Veri Yapıları Laboratuvarı

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

KARINCA KOLONİ ALGORİTMASI BMÜ-579 Meta Sezgisel Yöntemler. Yrd. Doç. Dr. İlhan AYDIN Fırat Üniversitesi, Bilgisayar Mühendisliği Bölümü

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

EMM4131 Popülasyon Temelli Algoritmalar (Population-based Algorithms) Genetik Algoritma

BÖLÜM III: Şebeke Modelleri. Şebeke Kavramları. Şebeke Kavramları. Şebeke Kavramları. Yönlü Şebeke (Directed Network) Dal / ok

Geniş Bantlı Log-Periyodik Anten Dizgelerinin Genetik Algoritmalar Kullanılarak Tasarlanması

Tabakalı Kompozit Bir Malzemenin Genetik Algoritma Yöntemiyle Rijitlik Optimizasyonu

Tanımlar, Geometrik ve Matemetiksel Temeller. Yrd. Doç. Dr. Saygın ABDİKAN Yrd. Doç. Dr. Aycan M. MARANGOZ. JDF329 Fotogrametri I Ders Notu

TÜRKİYE CUMHURİYETİ DEVLETİNİN temellerinin atıldığı Çanakkale zaferinin 100. yılı kutlu olsun.

KİNETİK MODEL PARAMETRELERİNİN BELİRLENMESİNDE KULLANILAN OPTİMİZASYON TEKNİKLERİNİN KIYASLANMASI

10. SINIF KONU ANLATIMI 6 MAYOZ BÖLÜNME-3

ISSN: El-Cezerî Fen ve Mühendislik Dergisi Cilt: 3, No: 2, 2016 ( )

Fatih University- Faculty of Engineering- Electric and Electronic Dept.

BİYOİSTATİSTİK Örnekleme ve Örnekleme Yöntemleri Yrd. Doç. Dr. Aslı SUNER KARAKÜLAH

Türev Uygulamaları ÜNİTE. Amaçlar. İçindekiler. Yazar Prof.Dr. Vakıf CAFEROV

Özyineleme (Recursion)

ERCİYES ÜNİVERSİTESİ KİMYA ANABİLİM DALI

İleri Diferansiyel Denklemler

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Zeki Optimizasyon Teknikleri

Transkript:

İSTANBUL TEKNİK ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ MATEMATİK MÜHENDİSLİĞİ BÖLÜMÜ K-MEANS KÜMELEME ALGORİTMASININ GENETİK ALGORİTMA KULLANILARAK GELİŞTİRİLMESİ BİTİRME ÖDEVİ Yunus YÜNEL Tez Danışmanı: Yar. Doç. Dr. Ahmet KIRIŞ MAYIS 2010

İSTANBUL TEKNİK ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ MATEMATİK MÜHENDİSLİĞİ BÖLÜMÜ K-MEANS KÜMELEME ALGORİTMASININ GENETİK ALGORİTMA KULLANILARAK GELİŞTİRİLMESİ BİTİRME ÖDEVİ Yunus YÜNEL 090050008 Teslim Tarihi: 27.05.2010 Tez Danışmanı: Yar. Doç. Dr. Ahmet KIRIŞ MAYIS 2010

ÖNSÖZ Bu çalışmayı hazırlarken, benden yardımını ve desteğini hiçbir zaman esirgemeyen Sayın Hocam Yar. Doç. Dr. Ahmet KIRIŞ a, okul hayatımda bana destek olan tüm değerli arkadaşlarıma, hayatım boyunca bana sevgi, güven veren ve her türlü desteği esirgemeyen annem, babam ve kardeşime en içten teşekkürlerimi sunarım. Mayıs, 2010 Yunus YÜNEL iii

İÇİNDEKİLER ÖZET... vi Değişken Listesi...vii 1. GİRİŞ... 1 2. K-MEANS KÜMELEME ALGORİTMASI... 2 2.1. Tanım ve Tarihçe... 2 2.2. Algoritma ve Akış Şeması... 2 2.3. Program: K-Means Clustering... 4 2.3.1. 100 adet verinin gruplandırılması... 4 2.3.2. 3 özellikli 100 adet verinin gruplandırılması... 5 3. GENETİK ALGORİTMA... 8 3.1. Tanım ve Tarihçe... 8 3.2. Algoritma ve Akış Şeması... 9 3.2.1. Uygunluk (Fitness)... 9 3.2.2. Seçilim (Selection)... 9 3.2.3. Çaprazlama (Crossover)... 10 3.2.4. Mutasyon (Mutation)... 10 3.2.5. Akış şeması... 11 3.3. Program: Genetik Algoritmanın K-Means Algoritmasına Uygulanması (GA-Clustering)... 12 4. GENETİK K-MEANS ALGORİTMASI... 14 4.1. Algoritma ve Akış Şeması... 14 4.2. Program: KGA-Clustering... 14 5. UYGULAMA: DERSLERDE ALDIKLARI NOTLARA GÖRE ÖĞRENCİLERİN SINIFLANDIRILMASI... 18 5.1. Tek Dersten Aldıkları Notlara Göre Gruplama... 18 5.1.1. KMeans Clustering... 18 5.1.2. GA-Clustering... 19 5.1.3. KGA-Clustering... 19 5.2. Üç Dersten Aldıkları Notlara Göre Gruplama... 19 iv

5.2.1. KMeans Clustering... 19 5.2.2. GA-Clustering... 19 5.2.3. KGA-Clustering... 20 5.3. Beş Dersten Aldıkları Notlara Göre Gruplama... 20 5.3.1. KMeans Clustering... 20 5.3.2. GA-Clustering... 20 5.3.3. KGA-Clustering... 20 6. EKLER VE DATALAR... 22 6.1. EK-1: K-Means Clustering Algoritmasının kodları... 22 6.2. EK-2: GA-Clustering Algoritmasının Kodları... 23 6.3. EK-3: KGA-Clustering Algoritmasının Kodları... 30 6.4. DATA-1: KMeans Clustering Algoritmasında Kullanılan Veri... 30 6.5. DATA-2: KMeans Clustering Algoritmasında Kullanılan Veri... 31 6.6. DATA-3: GA-Clustering ve KGA-Clustering Algoritmalarında Kullanılan Veri 31 KAYNAKLAR... 32 v

ÖZET Bu çalışmada sınıflandırma algoritmalarından biri olan K-Means Clustering algoritmasının, genetik algoritma operatörleri kullanılarak daha iyi sonuçlar vermesi amaçlanmıştır. K-Means Clustering algoritmasının en büyük dezavantajı olan yerel optimumlara takılma problemi, genetik operatörlerle (çaprazlama, mutasyon, seçilim ve seçkinlik) çözülmeye çalışılmıştır. Kullanılan algoritmalar öğrencilerin 5 dersten aldıkları notlardan oluşan bir veriye uygulanmıştır. vi

Değişken Listesi m : Bir verinin özellik sayısı (number of attributes) n : Toplam veri sayısı dataset : Veri uzayı matrisi nxm k : Oluşturulacak sınıf (cluster) sayısı z : ClusterCenter matrisi kxm, genetik algoritmada bireye (individual) karşılık. NN : Bir nesildeki birey sayısı pop : Nesil, NN tane z matrisi içeren tensör NNxkxm clusters : lg : Cluster ların içeriğini tutan tensör. kx xm (Her cluster farklı sayıda veri tutabileceği için sayısı belirsiz) İstenilen değere ulaşmazsa fonksiyonun en fazla kaç nesil çalışacağını belirtir. (length of generation) generations : lg tane pop tensörü içeren tensör lgxnnxkxm Bireylerin uygunluk (fitness) değerlerini içeren matris lgxnn fitnesses : tempfitnesses : (fitnesses[[a[[b a. nesildeki b. bireyin fitness değerini verir.) KMeansForPopulation fonksiyonu içinde bireylerin geçici fitness değerlerini tutan vektör. NN boyutundadır. totalfitness : Nesildeki bireylerin toplam fitness ı orderedpop : pop tensöründeki bireylerin fitness larına göre sıralanmış halini ve fitness değerini tutar. NNx2 (orderedpop[[nn[[1 vii

nesli, orderedpop[[nn[[2 fitness ı) elitno : Bir sonraki nesle direk geçecek en iyi elemanların sayısı matchingpool : Crossover işlemindeki eşleme için bireyleri tutan tensör (NNelitNo)xkxm l : İkili (binary) sistemdeki bit sayısı binarymatching Pool : matchingpool daki bireylerin crossover ve mutasyon uygulanabilmesi ikili sisteme çevrilmiş hallerini tutan vektör. (NN-elitNo) boyutundadır. pc : Çaprazlama olasılığı (proportion of crossover) pm : Mutasyon olasılığı (proportion of mutation) binarypop : Crossover dan çıkıp mutasyona girmek üzere olan bireyler. binarypop2 : Mutasyondan çıkan bireyler. temppop1 : Elitism fonksiyonundan gelen bireyleri tutar. temppop2 : ElitSearch fonksiyonundan gelen bireyleri tutar. temppop3 : Crossover ve Mutasyon işlemlerinden sonra BinaryToIndividual fonksiyonundan gelen bireyleri tutar. pop2 : temppop1, temppop2 ve temppop3 ü birleştirir. viii

1. GİRİŞ İnsanlar tarihin başlangıcından beri kullandıkları eşyaları kümeleme ya da gruplama ihtiyacı duymuşlardır. Bu kümeleme ve gruplama bazen eşyaların özelliklerine göre yapılmış, bazen de özellikleri göz ardı edilerek rastgele yapılmıştır. Özelliklerine göre yapılan gruplamalarda, aynı grupta olan öğelerin baz alınan özelliklere göre benzer, farklı grupta olan öğelerin baz alınan özelliklere göre farklı olması amaçlanmıştır. Örneğin, Yunan filozof Aristoteles canlıları yaşama ortamlarını (hava, kara, su) baz alarak sınıflandırmıştır [1. Algoritmaların gelişmesiyle kümeleme algoritmaları (clustering algorithms) türemiştir. Bu algoritmaların verimliliği algoritmanın uygulandığı veriye göre değişir. Fakat her tür veri için kabul edilebilir sonuçlar veren algoritma K-Means kümeleme algoritmasıdır [2. Bu algoritmanın dezavantajı uygunluk fonksiyonunda yerel optimumlara ulaştıktan sonra takılıp kalması ve genel optimumlara ulaşamamasıdır. Bu projede K-Means kümeleme algoritmasının yerel optimumlara takılma probleminin genetik algoritma kullanılarak giderilmesi amaçlanmıştır. Algoritmaların sonuçlarını görmek için örnek olarak öğrencilerin bazı derslerden aldıkları notlara göre kümeleme yapılmıştır. Öğrenci verileri rastgele seçilmiştir. Kümeleme yaparken sırasıyla K-Means, GA Clustering ve KGA - Clustering olmak üzere üç farklı algoritma kullanılmıştır. 1

2. K-MEANS KÜMELEME ALGORİTMASI 2.1. Tanım ve Tarihçe K-Means kümeleme algoritması n tane verinin k tane grup oluşturacak şekilde gruplandırılması esasına dayanır. Bu gruplama sırasında elemanların grup merkezine uzaklıklarını belirten bir metrik tanımlanır. Birbirine yakın veriler aynı grupta yer alırken birbirinden uzak veriler farklı gruplarda yer alırlar. K-Means terimi ilk olarak 1967 de James MacQueen tarafından kullanılsa da algoritmanın ana fikri 1956 da Hugo Steinhaus tarafından ortaya atılmıştır [3. Bazı kümeleme algoritmaları bazı verilerde daha iyi sonuçlar vermesine rağmen K- Means kümeleme algoritması her çeşit veride kabul edilebilir sonuçlar verir. Algoritmanın en büyük dezavantajı yerel optimumlarda kalarak genel optimumlara ulaşamamasıdır. 2.2. Algoritma ve Akış Şeması Bütün veriler sayısal değerlere dönüştürülür. Algoritma başlangıçta rastgele ya da belirli yöntemlerle seçilen k tane küme merkezi belirler. Sonra her elemanı hangi sınıf merkezine daha yakınsa onun sınıfında olacak şekilde sınıflara yerleştirir. Oluşan sınıflardaki elemanların normlarının ortalama değerlerini alır ve bu değerleri yeni sınıf merkezleri olarak belirler. Sonra her elemanı yeniden hangi sınıf merkezine yakınsa onun sınıfında olacak şekilde gruplar. Eski sınıf merkezleri yeni sınıf merkezlerine eşit olana ya da belirlenen çevrim sayısına ulaşana kadar algoritma bu işlemleri tekrarlar. Algoritmayı adım adım yazılırsa; 1. n tane veri ( ) arasından k tane küme merkezi ( ) seçilir. 2. Bir veri bir sınıf merkezine diğer sınıf merkezlerinden daha yakınsa o sınıfa yerleştirilir. 2

sınıfına yerleştir. ise ve ise verisini 3. Yeni sınıf merkezlerini sınıfın içindeki bütün elemanların ortalamasını alarak oluşturulur. burada sınıfının eleman sayısıdır. 4. Yeni sınıf merkezleri eski sınıf merkezlerine eşitse algoritmadan çık. Değilse yeni sınıf merkezlerini esas alarak 2. adıma dön. ise çık. Akış şeması çizilirse: leri oluştur., ve Hayır Evet Çık. 3

2.3. Program: K-Means Clustering 2.3.1. 100 adet verinin gruplandırılması EK-1 deki kodda yer alan fonksiyonlar kullanılarak K-Means Algoritmasının sonuçları görülebilir. Örnek olarak 0 ile 1000 arasındaki rastgele 100 veriyi K-Means algoritmasıyla 10 gruba bölünecektir. DATA-1 de belirlenen veriler data ismindeki vektöre atılır. Daha sonra rastgele 10 tane küme merkezi seçilir. Programda bu işlem RandomClusterCentersSelect fonksiyonuyla yapılır. Programda IsClusterCenterValid fonksiyonunu çağrılarak herhangi iki sınıf merkezinin aynı olmaması garantilenir. z = RandomClusterCentersSelect[10, 1 {{610}, {981}, {332}, {412}, {84}, {304}, {17}, {481}, {517}, {70}} data da bulunan 100 veri tek tek incelenerek 10 sınıf merkezinden hangisine daha yakınsa onun sınıfına atılır. Veriler sınıflara atıldıktan sonra sınıfların ortalamaları alınır ve bu ortalamalar yeni sınıf merkezleri olarak belirlenir. Bu işlem eski sınıf merkezleri, yeni sınıf merkezlerine eşit olana kadar tekrarlanır. Programda ise seçilen sınıf merkezleri ve belirlenen veri KmeansAlgorithm fonksiyonuna parametre olarak gönderilir. Fonksiyon veriyi KMeans Clustering algoritmasının adımlarını uygulayarak 10 sınıfa ayırır. Rastgele belirlenen veriler ve sınıf merkezleri için ilk adımın sonucu aşağıdaki gibidir: Sınıflar {729},{765},{599},{738},{733},{633},{630},{639},{643},{757},{712},{750},{65 8}, {784} {678} {685} {975},{846},{953},{899},{876},{918},{973},{868},{961},{809},{896},{913},{82 4}, Sınıf Merkezleri 695.813 893.208 {371},{337},{330},{368},{346},{363},{351},{353},{337},{350},{353} 350.818 {394},{380},{420} 398. {132},{157},{148},{115},{107} 131.8 {220},{285},{246},{309},{240},{256},{195},{205},{302},{284},{210},{232},{21 245.769 1} {43},{20},{8},{14},{17},{36} 23. {476},{451},{484},{487},{456} 470.8 {521},{521},{512},{504},{558},{503},{526},{512},{541},{546},{522},{529},{55 5}, 526.786 {51},{49},{72} 57.3333 4

Algoritmanın bütün adımları tamamlandığında ise sonuç aşağıdaki gibidir: Sınıflar Sınıf Merkezleri {729}, {765}, {738}, {733}, {633}, {630}, {639}, {643}, {757}, {712}, {750}, {658}, {784}, {678}, {685} 702.267 {975}, {846}, {953}, {899}, {876}, {918}, {973}, {868}, {961}, {809}, {896}, {913}, {824}, {843}, {962}, {947}, {799}, {818}, {894}, {985}, {888}, {944}, 893.208 {803}, {843} {337}, {330}, {346}, {309}, {351}, {353}, {337}, {350}, {302}, {353} 336.8 {371}, {368}, {394}, {363}, {380}, {420} 382.667 {132}, {157}, {148}, {115}, {107} 131.8 {220}, {285}, {246}, {240}, {256}, {195}, {205}, {284}, {210}, {232}, {211} 234.909 {20}, {8}, {14}, {17}, {36} 19. {476}, {451}, {484}, {487}, {456} 470.8 {521}, {521}, {512}, {504}, {558}, {599}, {503}, {526}, {512}, {541}, {546}, {522}, {529}, {555}, {525} 531.6 {43}, {51}, {49}, {72} 53.75 2.3.2. 3 özellikli 100 adet verinin gruplandırılması Yukarıda tek özellikli veriler için uygulanan adımlar, üç özellikli veriler için tekrar edilir. Farkı uzunluk hesabının vektörel olarak, yani iki veri arasındaki uzunluk hesaplanarak yapılmasıdır. DATA-2 de belirlediğimiz veriler data2 ismindeki 100x3 boyutlu matrise atılır. Daha sonra rastgele 10 tane küme merkezi seçilir. Programda bu işlem RandomClusterCentersSelect fonksiyonuyla yapılır. Programda IsClusterCenterValid fonksiyonunu çağrılarak herhangi iki sınıf merkezinin normunun aynı olmamasını garantilenir. z = RandomClusterCentersSelect[10, 3 {{84, 485, 167}, {235, 681, 503}, {313, 238, 782}, {336, 853, 988}, {819, 602, 798}, {163, 918, 331}, {832, 969, 272}, {251, 478,73}, {298, 562, 872}, {460, 690, 824}} data2 de bulunan 100 vektör tek tek incelenerek her birinin sınıf merkezlerine olan uzaklığı (vektörlerin farklarının normu), 10 sınıf merkezinden hangisinde daha küçükse veri o sınıfa atılır. Veriler sınıflara atıldıktan sonra sınıfların ortalamaları hesaplanır ve bu ortalamalar yeni sınıf merkezleri olarak belirlenir. Bu işlem eski sınıf merkezleri, yeni sınıf merkezlerine eşit olana kadar tekrarlanır. Programda ise seçilen sınıf merkezleri ve belirlenen veri KMeansAlgorithm fonksiyonuna parametre olarak gönderilir. Fonksiyon veriyi KMeans Clustering algoritmasının adımlarını uygulayarak 10 sınıfa ayırır. 5

Belirlenen veriler ve sınıf merkezleri için ilk adımın sonucu aşağıdaki gibidir: Sınıflar Sınıf Merkezleri {176,238,376},{75,315,38},{7,644,273},{102,625,3} {90, 455.5, 172.5} {421,908,480},{244,766,439},{20,743,510},{143,611,499},{107,479,530}, {237.556, 722.889, {358,720,454},{1,758,643},{453,622,405},{391,899,511} 496.778} {282,42,818},{614,243,805},{394,62,703},{833,39,831},{625,193,774}, {473, 177.067, {439,201,591},{138,178,845},{483,377,542},{671,167,369},{344,70,407}, 649.6} {91,273,502},{560,264,567},{427,115,517},{532,321,985},{662,111,488} {12,979,780},{75,937,873},{213,964,820} {100, 960, 824.333} {832,332,465},{990,436,368},{740,433,584},{953,67,943},{921,345,445}, {805,217,456},{999,89,734},{809,145,953},{782,532,980},{729,454,520}, {949,271,836},{698,349,943},{907,391,658},{956,151,227},{827,452,774}, {636,419,930},{922,734,553},{701,272,493},{875,95,433},{666,360,665}, {977,275,455},{955,370,264},{735,443,692} {376,826,321},{340,809,184},{123,890,540},{31,983,59},{364,972,438}, {249,812,245} {704,506,281},{552,962,126},{941,730,136},{952,689,131},{671,939,215}, {975,805,254},{775,594,308},{562,820,64},{932,780,239},{827,826,314}, {934,725,465},{733,827,212},{544,797,193},{944,963,576},{720,578,343}, {630,920,133} {508,33,19},{243,679,173},{466,410,276},{391,101,188},{187,565,74}, {559,698,126},{340,444,92},{267,7,281},{299,686,156},{462,793,6}, {622,258,148},{567,460,223},{648,527,192} {841.913, 331.826, 624.826} {247.167, 882, 297.833} {774.75, 778.813, 249.375} {427.615, 435.462, 150.308} {329,372,948},{73,440,813},{367,410,968},{34,426,720},{172,548,965}, {183, 472.571, {186,538,690},{120,574,796} 842.857} {628,811,747},{572,858,524},{565,709,657},{409,749,792} {543.5, 781.75, 680} Algoritmanın bütün adımları tamamlandığında ise sonuç aşağıdaki gibidir: Sınıflar {176,238,376},{75,315,38},{187,565,74},{7,644,273},{91,273,502}, {102,625,3} {244,766,439},{123,890,540},{20,743,510},{143,611,499},{107,479,530}, {1,758,643} {282,42,818},{614,243,805},{394,62,703},{625,193,774},{439,201,591}, {483,377,542},{671,167,369},{344,70,407},{560,264,567},{427,115,517}, {662,111,488} {12,979,780},{75,937,873},{213,964,820} {100, 960, 824.333} {832,332,465},{740,433,584},{953,67,943},{833,39,831},{921,345,445}, {805,217,456},{999,89,734},{809,145,953},{782,532,980},{729,454,520}, {949,271,836},{698,349,943},{907,391,658},{956,151,227},{827,452,774}, {636,419,930},{701,272,493},{875,95,433},{666,360,665},{977,275,455}, {735,443,692} {376,826,321},{340,809,184},{243,679,173},{552,962,126},{559,698,126}, {31,983,59},{671,939,215},{299,686,156},{562,820,64},{462,793,6}, {249,812,245},{544,797,193},{630,920,133} {704,506,281},{990,436,368},{941,730,136},{952,689,131},{975,805,254}, {775,594,308},{932,780,239},{827,826,314},{922,734,553},{934,725,465}, {733,827,212},{955,370,264},{944,963,576},{720,578,343},{648,527,192} 6 Sınıf Merkezleri {106.333, 443.333, 211.} {106.333, 707.833, 526.833} {500.091, 167.727, 598.273} {825.238, 291.952, 667.476} {424.462, 824.923, 153.923} {863.467, 672.667, 309.067} {508,33,19},{466,410,276},{391,101,188},{340,444,92},{267,7,281}, {451.571, 244.714, {622,258,148},{567,460,223} 175.286} {329,372,948},{73,440,813},{367,410,968},{34,426,720},{138,178,845}, {216.778, 423, {172,548,965},{186,538,690},{120,574,796},{532,321,985} 858.889} {628,811,747},{421,908,480},{572,858,524},{565,709,657},{364,972,438}, {462.333, 805.333,

{358,720,454},{453,622,405},{391,899,511},{409,749,792} 556.444} 7

3. GENETİK ALGORİTMA 3.1. Tanım ve Tarihçe Genetik algoritma mevcut çözümler arasında en iyi olanı ya da en iyiye en yakın olanı bulmak için kullanılan arama algoritmasıdır. Çözümler belirlenen bir uygunluk (fitness) fonksiyonu yardımıyla kıyaslanır. Genetik algoritma genellikle optimizasyon problemlerinin çözümünde kullanılır. Genetik algoritmalar evrimsel algoritmalarının bir alt sınıfıdır. Evrimsel algoritmalar biyolojinin evrim teorisinden esinlendikleri için çaprazlama, mutasyon, gen gibi terimler kullanırlar. Evrim için bilgisayar simülasyonların kullanılması üzerine ilk çalışmalar 1954 de Nils Aall Barricelli tarafından yapılmıştır [5. 1960 ların başlarında evrim için bilgisayar simülasyonları biyologlar tarafından oldukça yoğun bir şekilde kullanılmıştır. Hans Bremermann 1960 larda yayınladığı modern genetik algoritmaların temellerini içeren makalelerde genetik algoritmaların sadece biyolojik problemlerin çözümünde değil, optimizasyon problemlerinin çözümünde de kullanılabileceğini belirtmiştir. 1963 de Barricelli basit bir oyun oynanmasının evrimini simüle etmiştir [6. 1960 larda ve 1970 lerin başlarında Rechenberg in grubu kompleks mühendislik problemlerinin çözümünde de evrimsel algoritmaları kullanmışlardır [7. Yapay zeka geliştirilmesi konusunda da yine evrimsel algoritmalar kullanılmıştır. Tüm bunlara rağmen genetik algoritma bir optimizasyon metodu olarak bilinir. 1975 de John Holland ve öğrencileri tarafından yapılan çalışmalarla bir sonraki neslin kalitesi tahmin etmeye çalışılmıştır. 1980 lerin ortalarındaki Pennsylvania daki 1. Uluslararası Genetik Algoritma Konferansına kadar bu çalışmalar teorik olarak kalmıştır. 1980 lerin sonlarında General Elektrik dünyanın ilk Genetik Algoritma ürününü satmıştır. 1989 da ise Axcelis firması genetik algoritma kullanan Evolver isimli dünyanın ikinci, fakat masaüstü bilgisayarlar için ilk ürünü piyasaya sürmüştür. 8

3.2. Algoritma ve Akış Şeması Genetik algoritma problemin en iyi ya da en iyiye en yakın çözümüne ulaşmak için problem çözümlerini bir nesildeki bireyler (kromozom) olarak görür, nesildeki kromozomlardan genetik operatörler yardımıyla yeni bireyler elde eder. Bu bölümde uygulamada kullanılan tanımlar, operatörler ve akış şemasındaki yerleri incelenecektir. 3.2.1. Uygunluk (Fitness) Uygunluk (fitness), çözümleri birbiriyle kıyaslayabilmek için tanımlanmış bir fonksiyondur. Problemde uygunluk fonksiyonunun tanımına göre, elde edilen uygunluk değeri ne kadar büyükse/küçükse çözüm o kadar iyidir. K-Means Clustering algoritması için verilerin içinde bulunduğu sınıfların sınıf merkezlerine olan uzaklıklarının toplamı M olarak gösterilirse, uygunluk fonksiyonu olur. 3.2.2. Seçilim (Selection) Bir sonraki nesil oluşturulurken bireylerin nasıl seçileceğini belirleyen operatördür. Çaprazlama ve Mutasyon operatörlerinin hangi bireylere uygulanacağını belirler. Seçilen bireyler eşleşme havuzu (matching pool) na atılır. Daha sonra eşleşme havuzundaki bireylere gerekli operatörler uygulanır. 3.2.2.1. Rulet tekerleği seçimi (Roulette wheel selection) Rulet tekerleği seçilimi ile bireyler uygunluk (fitness) değerlerinin büyüklüğüyle doğru orantılı bir şekilde seçilme şanslarını arttırırlar. Bir birey kendi uygunluk değerinin nesildeki toplam uygunluk değerine oranı olasılığıyla seçilir. Örneğin nesildeki bir A bireyinin uygunluk değeri 25 ve nesildeki bireylerin toplam uygunluk değerleri 250 iken, A bireyinin eşleşme havuzuna girme olasılığı %10 dur. 9

3.2.2.2. Seçkinlik (Elitism) Seçkinlik operatörü ile bir nesildeki en iyi birey(ler) korunarak bir sonraki nesle aktarılır. Böylelikle yeni neslin en iyi bireyinin uygunluk (fitness) değerinin, eski neslin en iyi bireyinin uygunluk (fitness) değerinden daha iyi ya da eşit olması garantilenir. 3.2.2.3. Seçkin çözümler civarında arama (Elit search) Seçkinlik operatörü ile seçilen çözümlerden ilk ikisinin çaprazlamasından ve ilk çözümün mutasyona uğramasından elde edilen çözümler seçkin çözümlerin ardından bir sonraki nesle aktarılır. 3.2.3. Çaprazlama (Crossover) Eşleşme havuzundan rastgele alınan iki bireyin (kromozomun) belirli bir olasılıkla belirli bir noktadan bölünerek elde edilen parçalarının yer değiştirmesiyle iki yeni bireyin elde edilmesidir. Çaprazlama sonucunda elde edilen bireylerin çözüm uzayında yer alması önemlidir. Örneğin çözüm uzayı 0-10 arasındaki sayılardan oluşuyorsa, 8(1000) ve 7 (0111) sayıları, soldan birinci bit ile soldan ikinci bit arasından ayrılarak çaprazlama yapılırsa; (1/000) X (0/111) => (0/000) X (1/111) Sonuç olarak 0 ve 15 sayıları elde edilir. Fakat 15 sayısı çözüm uzayında yer almaz. Bu durumu engellemek için, çözüm uzayını ikilik sistemde belirli bit sayısının minimum ve maksimum değerleri çözüm uzayının sınırları olan bir fonksiyon tanımlanır. Yukarıdaki örnek için 0 ı 0 a ve 10 u 15 e götüren bir fonksiyon ( ) yardımıyla çaprazlamadan çıkan her elemanının çözüm uzayında olması garantilenir. Bireyler çaprazlamadan çıktıktan sonra fonksiyonun tersi uygulanarak 0 ile 10 arasında bir çözüm elde edilir. 3.2.4. Mutasyon (Mutation) Herhangi bir nesilde bütün bireylerin bir özelliğinin aynı olması durumunda ne kadar çaprazlama yapılırsa yapılsın o özellik hep aynı kalacaktır. Örneğin çözüm uzayı 0-15 aralığı olan bir problemin uygunluk fonksiyonu olsun. İlk nesildeki 10

bireylerimiz de 7 (0111), 4 (0100), 3 (0011) ve 1 (0001) olsun. Ne kadar çaprazlama yapılırsa yapılsın. Çözümlerimizdeki en değerli bit yani soldan birinci bit nesildeki bütün bireylerde 0 olduğu için 0 olarak kalacaktır. Çaprazlamalar sonucu ulaşılabilecek en iyi sonuç 7 dir. Fakat problemin en iyi çözümü 15 dir. Bu durumdan kurtulmak için bazı bitler belirli bir olasılıkla değiştirilir. 3.2.5. Akış şeması Algoritmanın adımları aşağıda verilmiştir; 1. Nesildeki bireyler için K-Means Algoritması çalıştırılır. Çıkan sonuçlarla uygunluk değerleri hesaplanır. Bireyler uygunluk değerlerine göre sıralanır. 2. Seçkinlik operatörü uygulanıyorsa, en iyi çözümleri korumak için en iyi çözümler direk olarak bir sonraki nesle aktarılır. En iyi kaç çözümün bir sonraki nesle aktarılacağı probleme göre değişkenlik gösterir. 3. Kalan bireyler Rulet tekerleği seçilimi ile eşleşme havuzuna aktarılır. 4. Eşleşme havuzundaki bireylere çaprazlama operatörü uygulanır. 5. Çaprazlamadan çıkan bireylere mutasyon operatörü uygulanır. 6. Yeni nesil elde edildikten sonra yukarıdaki adımlar belirlenen nesil sayısı kadar tekrarlanır. 11

3.3. Program: Genetik Algoritmanın K-Means Algoritmasına Uygulanması (GA-Clustering) EK-2 deki kodda yer alan fonksiyonlar kullanılarak, DATA-3 de rastgele belirlenen 0 ile 1000 arasındaki 100 sayı 8 gruba ayrılır. Uygunluk değeri bütün verilerin bulundukları sınıfların merkezlerine olan uzaklıklarının toplamıyla bulunur. Fonksiyonlar aşağıdaki sırayla çağrılır. fitnesses = {}; pop = CreateFirstPopulation[16, 8, 1 tempfitness = KMeansAlgorithmForPopulation[dataSet, pop orderedpop = OrderPop[pop, tempfitness orderedtempfitness = Sort[tempFitness, #1 > #2 & MatrixForm[orderedTempFitness AppendTo[fitnesses, orderedtempfitness For[i = 1, i < 10, i++, Print[i, " nci çevrim" pop = CreateNextPopulation[orderedPop, 2, 10, 0.7, 0.1 tempfitness = KMeansAlgorithmForPopulation[dataSet, pop orderedpop = OrderPop[pop, tempfitness orderedtempfitness = Sort[tempFitness, #1 > #2 & MatrixForm[orderedTempFitness AppendTo[fitnesses, orderedtempfitness If[Length[Union[tempFitness < 8, Break Print[MatrixForm[fitnesses Bir nesilde 16 birey (kromozom) olacak şekilde ilk nesil oluşturulur. KMeansAlgorithmForPopulation fonksiyonu çalıştırılarak uygunluk değerleri hesaplanır. Nesildeki çözümler (bireyler) uygunluk değerlerine göre büyükten küçüğe sıralanır. O anki neslin en iyi 2 çözümü elit olarak bir sonraki nesle aktarılır. Çözümler eşleşme havuzuna atılır. Eşleşme havuzundan mutasyon olasılığı %10, 12

çaprazlama olasılığı %70 olacak şekilde bir sonraki nesil oluşturulur. Çaprazlama ve mutasyon için sayıları ikilik sisteme çevirirken 10 bitlik bir yapı kullanılır. DATA-2 deki veriler için ilk nesil oluşturulur ve uygunluk değerleri hesaplanır. {{572},{907},{839},{465},{761},{323},{90},{739}} 0.000350328 {{207},{855},{488},{859},{99},{93},{810},{332}} 0.000350243 {{920},{775},{867},{229},{939},{299},{197},{405}} 0.000342224 {{688},{456},{268},{527},{188},{331},{90},{848}} 0.000336412 {{199},{521},{728},{340},{73},{602},{800},{509}} 0.000333843 {{960},{886},{463},{109},{671},{507},{958},{182}} 0.000327011 {{337},{357},{328},{799},{497},{434},{176},{796}} 0.000326291 {{587},{366},{678},{193},{487},{143},{733},{104}} 0.000316581 {{422},{966},{411},{84},{523},{521},{412},{109}} 0.000316581 {{801},{417},{799},{93},{583},{777},{649},{621}} 0.00031064 {{117},{132},{543},{374},{900},{237},{997},{58}} 0.000301728 {{83},{76},{212},{719},{360},{464},{306},{422}} 0.000274623 {{218},{577},{105},{84},{620},{150},{301},{462}} 0.000274192 {{568},{291},{30},{45},{295},{378},{531},{768}} 0.000267431 {{538},{940},{200},{914},{448},{981},{802},{721}} 0.000240066 {{485},{88},{49},{525},{54},{483},{627},{512}} 0.000239736 9. nesilde ise nesil ve uygunluk değerleri aşağıdaki değerleri alır: {{538},{940},{200},{913},{73},{602},{800},{509}} 0.000379535 {{203},{966},{411},{465},{898},{323},{90},{743}} 0.000379535 {{538},{940},{201},{913},{73},{602},{800},{509}} 0.000379535 {{218},{969},{839},{84},{523},{964},{306},{379}} 0.000379535 {{538},{940},{200},{913},{73},{602},{800},{509}} 0.000379535 {{538},{940},{200},{913},{73},{602},{800},{509}} 0.000379535 {{197},{891},{974},{465},{886},{323},{112},{509}} 0.000379535 {{578},{966},{411},{465},{886},{323},{112},{509}} 0.000379535 {{197},{891},{978},{340},{73},{602},{800},{509}} 0.000379535 {{197},{954},{978},{340},{73},{602},{800},{509}} 0.00034648 {{197},{907},{839},{84},{523},{964},{306},{379}} 0.0003332 {{203},{966},{411},{84},{522},{351},{800},{509}} 0.000327415 {{218},{969},{978},{340},{73},{602},{779},{634}} 0.000327011 {{197},{905},{200},{914},{73},{602},{800},{509}} 0.000323658 {{197},{907},{978},{340},{73},{602},{779},{634}} 0.000317306 {{197},{654},{200},{914},{73},{602},{800},{509}} 0.000313045 Görüldüğü gibi ilk nesilde en iyi çözümün uygunluk değeri 0.000350328 iken, 9. nesilde en iyi çözümün uygunluk değeri 0.000379535 olmuştur. 13

4. GENETİK K-MEANS ALGORİTMASI KGA Clustering algoritmasında, GA Clustering algoritmasını hızlandırmak için her adımda K-Means Clustering Algoritmasını baştan sona çalıştırmak yerine K- Means algoritmasının ara adımlarının sonuçlarına Genetik Algoritma uygulanır. Bu işlem nesil sayısını arttırır, fakat bir nesilde harcanan işlem yükünü azaltır. 4.1. Algoritma ve Akış Şeması GA Clustering algoritmasındaki K-Means Algoritması eski sınıf merkezleriyle yeni sınıf merkezleri birbirine eşit olana kadar çalışırken, KGA-Clustering algoritmasında K-Means Algoritmasının sadece ilk adımı alınır. Yeni sınıf merkezlerini bulma işlemi sadece bir kere çalışır. Algoritmanın adımları yazılırsa; 1. Nesildeki bireyler için K-Means Algoritmasının ilk adımı çalıştırılır. Çıkan sonuçlarla uygunluk değerleri hesaplanır. Bireyler uygunluk değerlerine göre sıralanır. 2. Seçkinlik operatörü uygulanıyorsa, en iyi birkaç eleman direk olarak bir sonraki nesle aktarılır. 3. Kalan bireyler Rulet tekerleği seçilimi ile eşleşme havuzuna aktarılır. 4. Eşleşme havuzundaki bireylere çaprazlama operatörü uygulanır. 5. Çaprazlamadan çıkan bireylere mutasyon operatörü uygulanır. 6. K-Means bir sonraki adımına geçilerek aynı işlemler tekrarlanır. 4.2. Program: KGA-Clustering EK-3 deki kodda yer alan fonksiyonlar kullanılarak, DATA-3 de belirlenen 0 ile 1000 Arasındaki 100 sayı 8 gruba ayrılır. Sonuçları GA-Clustering ile kıyaslayabilmek için GA Clustering algoritmasında kullanılan veri ve ilk nesil 14

değerleri burada da kullanılmıştır. Uygunluk değeri bütün verilerin bulundukları sınıfların merkezlerine olan uzaklıklarının toplamıyla bulunur. Fonksiyonlar aşağıdaki sırayla çağrılır. fitnesses = {}; pop = {{{572}, {907}, {839}, {465}, {761}, {323}, {90}, {739}}, {{207}, {855}, {488}, {859}, {99}, {93}, {810}, {332}}, {{920}, {775}, {867}, {229}, {939}, {299}, {197}, {405}}, {{688}, {456}, {268}, {527}, {188}, {331}, {90}, {848}}, {{199}, {521}, {728}, {340}, {73}, {602}, {800}, {509}}, {{960}, {886}, {463}, {109}, {671}, {507}, {958}, {182}}, {{337}, {357}, {328}, {799}, {497}, {434}, {176}, {796}}, {{587}, {366}, {678}, {193}, {487}, {143}, {733}, {104}}, {{422}, {966}, {411}, {84}, {523}, {521}, {412}, {109}}, {{801}, {417}, {799}, {93}, {583}, {777}, {649}, {621}}, {{117}, {132}, {543}, {374}, {900}, {237}, {997}, {58}}, {{83}, {76}, {212}, {719}, {360}, {464}, {306}, {422}}, {{218}, {577}, {105}, {84}, {620}, {150}, {301}, {462}}, {{568}, {291}, {30}, {45}, {295}, {378}, {531}, {768}}, {{538}, {940}, {200}, {914}, {448}, {981}, {802}, {721}}, {{485}, {88}, {49}, {525}, {54}, {483}, {627}, {512}}}; tempfitness = KMeansAlgorithmForPopulation[dataSet, pop orderedpop = OrderPop[pop, tempfitness orderedtempfitness = Sort[tempFitness, #1 > #2 & MatrixForm[orderedTempFitness AppendTo[fitnesses, orderedtempfitness For[i = 1, i < 100, i++, Print[i, " nci çevrim" pop = CreateNextPopulation[orderedPop, 2, 10, 0.7, 0.1 tempfitness = KMeansAlgorithmForPopulation[dataSet, pop orderedpop = OrderPop[pop, tempfitness orderedtempfitness = Sort[tempFitness, #1 > #2 & 15

MatrixForm[orderedTempFitness AppendTo[fitnesses, orderedtempfitness If[Length[Union[tempFitness < 8, Break Print[MatrixForm[fitnesses KGA-Clustering algoritmasının GA Clustering algoritmasından tek farkı genetik operatörlerin hangi adımlarda kullanıldığıdır. İlk nesil aşağıdaki uygunluk değerlerini alır: {{572},{907},{839},{465},{761},{323},{90},{739}} 0.000301237 {{199},{521},{728},{340},{73},{602},{800},{509}} 0.000289335 {{688},{456},{268},{527},{188},{331},{90},{848}} 0.000273163 {{960},{886},{463},{109},{671},{507},{958},{182}} 0.0002585 {{117},{132},{543},{374},{900},{237},{997},{58}} 0.000252424 {{207},{855},{488},{859},{99},{93},{810},{332}} 0.000252254 {{587},{366},{678},{193},{487},{143},{733},{104}} 0.000239548 {{337},{357},{328},{799},{497},{434},{176},{796}} 0.00023946 {{568},{291},{30},{45},{295},{378},{531},{768}} 0.000231095 {{422},{966},{411},{84},{523},{521},{412},{109}} 0.000230194 {{538},{940},{200},{914},{448},{981},{802},{721}} 0.000224818 {{920},{775},{867},{229},{939},{299},{197},{405}} 0.00021913 {{801},{417},{799},{93},{583},{777},{649},{621}} 0.000208457 {{218},{577},{105},{84},{620},{150},{301},{462}} 0.00015547 {{83},{76},{212},{719},{360},{464},{306},{422}} 0.000149555 {{485},{88},{49},{525},{54},{483},{627},{512}} 0.000136084 Değerlerde görüleceği üzere ilk neslin en iyi değeri 0.000301237 dir. GA Clustering ile karşılaştırıldığında bu sonucun daha kötü olmasının sebebi K-Means algoritmasının sadece ilk adımının çalıştırılmasıdır. 16

9. nesildeki sonuçlara bakarsak. {{207},{907},{837},{340},{73},{566},{531},{768}} 0.00036517 {{207},{907},{837},{340},{73},{566},{531},{801}} 0.000352361 {{207},{907},{869},{340},{73},{566},{531},{801}} 0.000345412 {{572},{901},{30},{45},{263},{378},{529},{768}} 0.000338877 {{572},{901},{30},{61},{263},{378},{529},{801}} 0.000338877 {{572},{901},{30},{45},{256},{378},{529},{768}} 0.000338877 {{572},{901},{30},{45},{295},{379},{531},{801}} 0.00033518 {{572},{901},{30},{45},{295},{378},{531},{801}} 0.00033518 {{572},{901},{30},{45},{295},{378},{531},{801}} 0.00033518 {{72},{907},{837},{340},{73},{566},{529},{768}} 0.000308934 {{207},{855},{405},{27},{73},{573},{31},{768}} 0.000294998 {{207},{855},{405},{27},{73},{573},{29},{768}} 0.000294998 {{207},{855},{405},{27},{295},{379},{531},{801}} 0.00028673 {{197},{901},{30},{45},{295},{378},{529},{768}} 0.000275102 {{582},{855},{405},{43},{73},{602},{800},{510}} 0.00026939 {{572},{901},{30},{45},{73},{573},{31},{768}} 0.000246711 9. nesildeki en iyi sonuçlar da GA Clustering sonuçlarından daha kötüdür. Sebep yine K-Means algoritmasının tamamı yerine sadece ilk iterasyonunun çalıştırılmasıdır. 85. nesile bakarsak: {{237},{930},{843},{340},{73},{566},{527},{776}} 0.000379535 {{237},{930},{843},{340},{73},{566},{527},{776}} 0.000379535 {{237},{930},{843},{340},{73},{566},{527},{776}} 0.000379535 {{237},{930},{843},{340},{73},{566},{527},{776}} 0.000379535 {{237},{930},{843},{344},{73},{566},{527},{776}} 0.000379535 {{237},{907},{843},{340},{73},{566},{527},{776}} 0.000375993 {{241},{907},{843},{340},{73},{566},{527},{768}} 0.000375993 {{241},{907},{843},{340},{73},{566},{527},{768}} 0.000375993 {{237},{907},{843},{340},{73},{566},{527},{776}} 0.000375993 {{237},{907},{839},{340},{73},{566},{527},{776}} 0.000373364 {{237},{907},{839},{340},{73},{566},{527},{776}} 0.000373364 {{237},{907},{839},{340},{73},{566},{527},{776}} 0.000373364 {{237},{907},{839},{340},{73},{566},{527},{776}} 0.000373364 {{237},{907},{839},{340},{73},{566},{527},{776}} 0.000373364 {{237},{907},{839},{340},{73},{566},{527},{776}} 0.000373364 {{237},{930},{843},{469},{73},{566},{527},{776}} 0.000309222 0.000379535 değerine ulaştığını görebiliriz. 17

5. UYGULAMA: DERSLERDE ALDIKLARI NOTLARA GÖRE ÖĞRENCİLERİN SINIFLANDIRILMASI Bu bölümde öğrencilerin 5 dersten aldıkları notlardan bir data oluşturulmuştur. Öğrenciler, tek dersten, 3 dersten ve 5 dersten aldıkları notlar baz alınarak KMeans Clustering, GA-Clustering ve KGA-Clustering algoritmaları yardımıyla 3 sınıfa (İyi, Orta, Kötü) ayrılmıştır. 5.1. Tek Dersten Aldıkları Notlara Göre Gruplama 5.1.1. KMeans Clustering Bu algoritmayla elde edilen sınıflandırma sonucu ve sınıfların bazı istatistik değerleri aşağıda verilmiştir. KMeans algoritmasıyla elde edilen sınıflandırmanın uygunluk değeri: 0.000419503 İyi sınıf Sınıf merkezi: 86.8062 Eleman sayısı: 129 Orta sınıf Sınıf merkezi: 49.52 Eleman sayısı: 75 Kötü sınıf Sınıf merkezi: 17.7083 Eleman sayısı: 96 18

5.1.2. GA-Clustering İlk neslin en iyi uygunluk değeri: 0.000420638 10. neslin en iyi uygunluk değeri: 0.00042138 100. neslin en iyi uygunluk değeri: 0.00042138 5.1.3. KGA-Clustering İlk neslin en iyi uygunluk değeri: 0.000417309 10. neslin en iyi uygunluk değeri: 0.000421301 100. neslin en iyi uygunluk değeri: 0.00042138 5.2. Üç Dersten Aldıkları Notlara Göre Gruplama 5.2.1. KMeans Clustering Uygunluk değeri: 0.000228936 İyi sınıf Sınıf merkezi: {85.0902,84.0526,86.} Eleman sayısı: 133 Orta sınıf Sınıf merkezi: {45.9429,51.2571,46.7429} Eleman sayısı: 70 Kötü sınıf Sınıf merkezi: {21.433,11.9691,23.} Eleman sayısı: 97 5.2.2. GA-Clustering İlk neslin en iyi uygunluk değeri: 0.00023858 10. neslin en iyi uygunluk değeri: 0.00023858 100. neslin en iyi uygunluk değeri: 0.00023858 19

5.2.3. KGA-Clustering İlk neslin en iyi uygunluk değeri: 0.000173303 10. neslin en iyi uygunluk değeri: 0.000234341 100. neslin en iyi uygunluk değeri: 0.000240805 5.3. Beş Dersten Aldıkları Notlara Göre Gruplama 5.3.1. KMeans Clustering Uygunluk değeri: 0.000177956 İyi sınıf Sınıf merkezi: {86.246,84.0238,86.0238,84.8175,85.3175} Eleman sayısı: 126 Orta sınıf Sınıf merkezi: {52.6508,51.3492,54.5556,56.8571,51.9365} Eleman sayısı: 63 Kötü sınıf Sınıf merkezi: {21.8739,18.973,24.009,22.6667,24.5495} Eleman sayısı: 111 5.3.2. GA-Clustering İlk neslin en iyi uygunluk değeri: 0.000183404 10. neslin en iyi uygunluk değeri: 0.000183404 100. neslin en iyi uygunluk değeri: 0.000184263 5.3.3. KGA-Clustering İlk neslin en iyi uygunluk değeri: 0.000133738 10. neslin en iyi uygunluk değeri: 0.000146283 100. neslin en iyi uygunluk değeri: 0.000180712 20

Yukarıdaki sonuçlardan anlaşılacağı üzere genetik algoritma içeren her iki KMeans sınıflandırma algoritması da (GA-Clustering ve KGA-Clustering) sadece KMeans algoritmasına göre daha iyi sonuçlar vermektedir. 21

6. EKLER VE DATALAR 6.1. EK-1: K-Means Clustering Algoritmasının kodları mindatarange = 0; maxdatarange = 1000; RandomClusterCentersSelect[k_, m_ := Block[{z, i}, i = 0; While[i == 0, z = Table[RandomInteger[maxDataRange, {k, m} i = IsClusterCentersValid[z Return[z IsClusterCentersValid[z_ := Block[{A, i}, A = {}; For[i = 1, i < Length[z + 1, i++, AppendTo[A, Norm[z[[i If[Length[Union[A == Length[z, Return[1, Return[0 KMeansAlgorithm[dataSet_, z_ := Block[{A, clusters, tempz, z1 = z, i, j, minnorm, minindex, step = 0, k = Length[z}, tempz = {}; clusters = {}; While[(z1!= tempz) && (step < 50), step++; tempz = z1; clusters = {}; For[i = 1, i < k + 1, i++, AppendTo[clusters, {} For[i = 1, i < Length[dataSet + 1, i++, minindex = 0; minnorm = 100000; For[j = 1, j < k + 1, j++, If[minNorm > Abs[Norm[z1[[j - Norm[dataSet[[i, minnorm = Abs[Norm[z1[[j - Norm[dataSet[[i minindex = j 22

AppendTo[clusters[[minIndex, dataset[[i For[i = 1, i < k + 1, i++, z1[[i =Sum[clusters[[i[[j, {j, Length[clusters[[i}/Length[clusters[[i Return[clusters 6.2. EK-2: GA-Clustering Algoritmasının Kodları mindatarange = 0; maxdatarange = 1000; RandomDataSelect[n_, m_ := Block[{dataSet}, Print["Datalar rastgele seçildi." dataset = Table[RandomInteger[maxDataRange, {n, m} Return[dataSet RandomClusterCentersSelect[k_, m_ := Block[{z, i}, i = 0; While[i == 0, z = Table[RandomInteger[maxDataRange, {k, m} i = IsClusterCentersValid[z Return[z IsClusterCentersValid[z_ := Block[{A, i}, A = {}; For[i = 1, i < Length[z + 1, i++, AppendTo[A, Norm[z[[i If[Length[Union[A == Length[z, Return[1, Return[0 23

CreateFirstPopulation[NN_, k_, m_ := Block[{pop, i}, pop = {}; For[i = 1, i < NN + 1, i++, AppendTo[pop, RandomClusterCentersSelect[k, m Print["İlk popülasyon oluşturuldu." Return[pop Fitness[clusters_, z_ := Block[{A, i, j}, A = 0; For[i = 1, i < Length[clusters + 1, i++, For[j = 1, j < Length[clusters[[i + 1, j++, A = A + (Abs[Norm[clusters[[i[[j - Norm[z[[i) A = 1/A; Return[A KMeansAlgorithm[dataSet_, z_ := Block[{A, clusters, tempz, z1 = z, i, j, minnorm, minindex, step = 0, k = Length[z}, tempz = {}; clusters = {}; While[(z1!= tempz) && (step < 50), step++; tempz = z1; clusters = {}; For[i = 1, i < k + 1, i++, AppendTo[clusters, {} For[i = 1, i < Length[dataSet + 1, i++, minindex = 0; minnorm = 100000; 24

For[j = 1, j < k + 1, j++, If[minNorm > Abs[Norm[z1[[j - Norm[dataSet[[i, minnorm = Abs[Norm[z1[[j - Norm[dataSet[[i minindex = j AppendTo[clusters[[minIndex, dataset[[i For[i = 1, i < k + 1, i++, z1[[i = Sum[clusters[[i[[j, {j, Length[clusters[[i} / Length[clusters[[i Return[N[Fitness[clusters, z1 KMeansAlgorithmForPopulation[dataSet_, pop_ := Block[{NN = Length[pop, i, tempfitness}, tempfitness = {}; For[i = 1, i < NN + 1, i++, AppendTo[tempFitness, KMeansAlgorithm[dataSet, pop[[i Return[tempFitness OrderPop[pop_, tempfitness_ := Block[{orderedPop, i, NN = Length[pop}, orderedpop = {}; For[i = 1, i < NN + 1, i++, AppendTo[orderedPop, {} For[i = 1, i < NN + 1, i++, AppendTo[orderedPop[[i, pop[[i AppendTo[orderedPop[[i, tempfitness[[i orderedpop = Sort[orderedPop, #1[[2 > #2[[2 & Return[orderedPop 25

Normalization[matchingPool_, l_ := Block[{a, b, c}, a = (2^l - 1); b = (maxdatarange - mindatarange); c = 0 - mindatarange; Return[Floor[a*matchingPool/b + c DeNormalization[tempPop3_, l_ := Block[{a, b, c}, a = (2^l - 1); b = (maxdatarange - mindatarange); c = 0 - mindatarange; Return[Ceiling[(tempPop3 - c)*b/a IndividualToBinary[matchingPool_, l_ := Block[{binaryMatchingPool, tempmatchingpool, t = Length[matchingPool, i}, binarymatchingpool = {}; tempmatchingpool = Normalization[matchingPool, l For[i = 1, i < t + 1, i++, AppendTo[binaryMatchingPool, Flatten[IntegerDigits[tempMatchingPool[[i, 2, l Return[binaryMatchingPool BinaryToIndividual[binaryPop2_, l_, m_ := Block[{tempPop3, node, individual, r, t = Length[binaryPop2, i, j}, temppop3 = {}; For[i = 1, i < t + 1, i++, individual = {}; node = Partition[binaryPop2[[i, l r = Length[node 26

For[j = 1, j < r + 1, j++, AppendTo[individual, FromDigits[node[[j, 2 AppendTo[tempPop3, Partition[individual, m temppop3 = DeNormalization[tempPop3, l Return[tempPop3 Elitism[orderedPop_, elitno_ := Block[{tempPop1, i}, temppop1 = {}; For[i = 1, i < elitno + 1, i++, AppendTo[tempPop1, orderedpop[[i[[1 Return[tempPop1 ElitSearch[tempPop1_, l_, m_ := Block[{elites, temppop2, binarytemppop2, binaryelites, crosselit, mutelit}, elites = {}; temppop2 = {}; binarytemppop2 = {}; AppendTo[elites, temppop1[[1 AppendTo[elites, temppop1[[2 binaryelites = IndividualToBinary[elites, l crosselit = Crossover[binaryElites, 1 mutelit = Mutation[{binaryElites[[1}, 1 AppendTo[binaryTempPop2, crosselit[[1 AppendTo[binaryTempPop2, mutelit[[1 temppop2 = BinaryToIndividual[binaryTempPop2, l, m Return[tempPop2 27

RouletteWheelSelection[orderedPop_, elitno_ := Block[{i, j, totalfitness = 0, orderedpop2, matchingpool, rand}, Print[MatrixForm[orderedPop orderedpop2 = Drop[orderedPop, elitno matchingpool = {}; For[i = 1, i < Length[orderedPop2 + 1, i++, totalfitness += orderedpop2[[i[[2 For[i = 1, i < Length[orderedPop2-1, i++, rand = RandomReal[{0, totalfitness} j = 0; While[rand > 0, j++; rand -= orderedpop2[[j[[2 AppendTo[matchingPool, orderedpop2[[j[[1 Return[matchingPool Crossover[binaryMatchingPool_, pc_ := Block[{i, binarypop, leng, cross, A1, A2, B1, B2, r}, binarypop = {}; leng = Length[binaryMatchingPool[[1 For[i = 1, i < Length[binaryMatchingPool + 1, i += 2, r = RandomReal[ If[pc > r, cross = RandomInteger[{1, leng - 1} A1 = Take[binaryMatchingPool[[i, cross B1 = Take[binaryMatchingPool[[i + 1, cross A2 = Take[binaryMatchingPool[[i + 1, cross - leng B2 = Take[binaryMatchingPool[[i, cross - leng AppendTo[binaryPop, Join[A1, A2 AppendTo[binaryPop, Join[B1, B2, AppendTo[binaryPop, binarymatchingpool[[i AppendTo[binaryPop, binarymatchingpool[[i + 1 28

Return[binaryPop Mutation[binaryPop_, pm_ := Block[{i, binarypop2, leng, point, r}, binarypop2 = binarypop; leng = Length[binaryPop2[[1 For[i = 1, i < Length[binaryPop2 + 1, i++, r = RandomReal[ If[pm > r, point = RandomInteger[{1, leng} If[binaryPop2[[i[[point == 1, binarypop2[[i[[point = 0, binarypop2[[i[[point = 1 Return[binaryPop2 CreateNextPopulation[orderedPop_, elitno_, l_, pc_, pm_ := Block[{m = Length[orderedPop[[1[[1[[1, temppop1, matchingpool, binarymatchingpool, binarypop, binarypop2, temppop2, pop2, temppop3}, temppop1 = Elitism[orderedPop, elitno temppop2 = ElitSearch[tempPop1, l, m matchingpool = RouletteWheelSelection[orderedPop, elitno binarymatchingpool = IndividualToBinary[matchingPool, l binarypop = Crossover[binaryMatchingPool, pc binarypop2 = Mutation[binaryPop, pm temppop3 = BinaryToIndividual[binaryPop2, l, m pop2 = Join[tempPop1, temppop2, temppop3 Return[pop2 29

6.3. EK-3: KGA-Clustering Algoritmasının Kodları Bu algoritmanın GA-Clustering algoritmasından tek farkı KMeansAlgorithm fonksiyonu yerine aşağıdaki KMeansAlgorithmGA fonksiyonu kullanılmasıdır. KMeansAlgorithmGA[dataSet_, z_ := Block[{clusters, z1 = z, i, j, minnorm, minindex, k = Length[z}, clusters = {}; For[i = 1, i < k + 1, i++, AppendTo[clusters, {} For[i = 1, i < Length[dataSet + 1, i++, minindex = 0; minnorm = 100000; For[j = 1, j < k + 1, j++, If[minNorm > Norm[z1[[j - dataset[[i, minnorm = Norm[z1[[j - dataset[[i minindex = j AppendTo[clusters[[minIndex, dataset[[i For[i = 1, i < k + 1, i++, z1[[i = Sum[clusters[[i[[j, {j, Length[clusters[[i}/ Length[clusters[[i Return[N[Fitness[clusters, z1 6.4. DATA-1: KMeans Clustering Algoritmasında Kullanılan Veri data = {{521}, {975}, {729}, {371}, {337}, {846}, {521}, {765}, {953}, {512}, {132}, {504}, {43}, {899}, {558}, {599}, {51}, {503}, {738}, {526}, {512}, {876}, {733}, {20}, {330}, {918}, {220}, {368}, {633}, {973}, {541}, {868}, {285}, {346}, {961}, {246}, {394}, {309}, {809}, {363}, {157}, {380}, {630}, {896}, {639}, {643}, {49}, {913}, {240}, {351}, {824}, {757}, {843}, {546}, {256}, {962}, {353}, {476}, {712}, {750}, {658}, {947}, {148}, {72}, {799}, {337}, {8}, {195}, {420}, {14}, {784}, {818}, {451}, {484}, {350}, {205}, {487}, {115}, {17}, {522}, {678}, {107}, {302}, {685}, {36}, {353}, {284}, {456}, {894}, {210}, {985}, {529}, {888}, {232}, {944}, {803}, {555}, {525}, {211}, {843}}; 30

6.5. DATA-2: KMeans Clustering Algoritmasında Kullanılan Veri data2 = {{376, 826, 321}, {340, 809, 184}, {12, 979, 780}, {704, 506, 281}, {832, 332, 465}, {329, 372, 948}, {73, 440, 813}, {628, 811, 747}, {282, 42, 818}, {614, 243, 805}, {508, 33, 19}, {176, 238, 376}, {243, 679, 173}, {421, 908, 480}, {572, 858, 524}, {244, 766, 439}, {123, 890, 540}, {552, 962, 126}, {990, 436, 368}, {740, 433, 584}, {394, 62, 703}, {565, 709, 657}, {953, 67, 943}, {941, 730, 136}, {833, 39, 831}, {921, 345, 445}, {805, 217, 456}, {20, 743, 510}, {143, 611, 499}, {999, 89, 734}, {809, 145, 953}, {466, 410, 276}, {367, 410, 968}, {34, 426, 720}, {782, 532, 980}, {75, 315, 38}, {625, 193, 774}, {391, 101, 188}, {729, 454, 520}, {439, 201, 591}, {949, 271, 836}, {187, 565, 74}, {952, 689, 131}, {698, 349, 943}, {907, 391, 658}, {559, 698, 126}, {138, 178, 845}, {107, 479, 530}, {7, 644, 273}, {75, 937, 873}, {31, 983, 59}, {671, 939, 215}, {483, 377, 542}, {956, 151, 227}, {975, 805, 254}, {340, 444, 92}, {267, 7, 281}, {827, 452, 774}, {299, 686, 156}, {671, 167, 369}, {172, 548, 965}, {775, 594, 308}, {562, 820, 64}, {364, 972, 438}, {213, 964, 820}, {932, 780, 239}, {827, 826, 314}, {462, 793, 6}, {186, 538, 690}, {344, 70, 407}, {636, 419, 930}, {91, 273, 502}, {922, 734, 553}, {701, 272, 493}, {358, 720, 454}, {120, 574, 796}, {622, 258, 148}, {567, 460, 223}, {934, 725, 465}, {1, 758, 643}, {875, 95, 433}, {249, 812, 245}, {666, 360, 665}, {560, 264, 567}, {977, 275, 455}, {733, 827, 212}, {427, 115, 517}, {102, 625, 3}, {955, 370, 264}, {532, 321, 985}, {453, 622, 405}, {391, 899, 511}, {409, 749, 792}, {735, 443, 692}, {544, 797, 193}, {944, 963, 576}, {662, 111, 488}, {720, 578, 343}, {648, 527, 192}, {630, 920, 133}}; 6.6. DATA-3: GA-Clustering ve KGA-Clustering Algoritmalarında Kullanılan Veri dataset={{387}, {486}, {609}, {47}, {741}, {276}, {480}, {913}, {447}, {196}, {123}, {438}, {770}, {691}, {334}, {654}, {821}, {771}, {979}, {908}, {870}, {874}, {632}, {904}, {614}, {930}, {22}, {6}, {255}, {369}, {401}, {263}, {593}, {26}, {958}, {970}, {0}, {647}, {106}, {830}, {834}, {460}, {786}, {995}, {211}, {341}, {241}, {924}, {345}, {699}, {623}, {873}, {115}, {633}, {260}, {765}, {707}, {179}, {783}, {257}, {876}, {570}, {608}, {898}, {810}, {636}, {362}, {766}, {497}, {372}, {865}, {94}, {829}, {438}, {475}, {715}, {816}, {861}, {603}, {258}, {11}, {595}, {349}, {831}, {574}, {24}, {216}, {648}, {707}, {555}, {607}, {254}, {576}, {707}, {750}, {945}, {975}, {230}, {384}, {702}}; 31

KAYNAKLAR [1 http://tr.wikipedia.org/wiki/bilimsel_sınıflandırma [2 Xu R., Wunsch D. (2009) Clustering [3 http://en.wikipedia.org/wiki/k-means_clustering [4 http://en.wikipedia.org/wiki/genetic_algorithm [5 Barricelli, Nils Aall (1954). "Esempi numerici di processi di evoluzione". Methodos: 45 68. [6 Barricelli, Nils Aall (1963). "Numerical testing of evolution theories. Part II. Preliminary tests of performance, symbiogenesis and terrestrial life". Acta Biotheoretica (16): 99 126. [7 Rechenberg, Ingo (1973). Evolutionsstrategie. Stuttgart: Holzmann-Froboog. [8 Coley David A. (1999), An introduction to Genetic Algorithms for Scientists and Engineers 32