istanbul teknik üniversitesi fen edebiyat fakültesi

advertisement
İSTANBUL TEKNİK ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ
MATEMATİK MÜHENDİSLİĞİ PROGRAMI
K-MEANS KÜMELEME VE K-NN SINIFLANDIRMA
ALGORİTMALARININ ÖĞRENCİ NOTLARI VE HASTALIK
VERİLERİNE UYGULANMASI
BİTİRME ÖDEVİ
Hilal ÖZKAN
090080049
Tez Danışmanı: Yar. Doç. Dr. Ahmet KIRIŞ
OCAK 2013
ÖNSÖZ
Bu çalışmayı hazırlarken her türlü yardımı ve desteği fazlasıyla sağlayan, hiçbir
şekilde esirgemeyen saygıdeğer hocam Sayın Yar. Doç. Dr. Ahmet KIRIŞ’a, Sayın
Dekanımız Prof. Dr. Emanullah HIZEL’e, üniversite hayatımda bana yol gösteren
Sayın Hocalarım Dr. Sait KOFOĞLU, Yar. Doç. Dr. Mehmet Ali KARACA, Yar.
Doç. Dr. Recep KORKMAZ ve Dr. Eti MİZRAHİ’ye, bana daima destek olan, güç
veren sevgili arkadaşım E. Merve KARADAĞ’a, yaşantım boyunca her zaman
olduğu gibi bu zorlu süreçte de yanımda olan, bana sevgi, güven ve her türlü maddi
manevi desteği veren annem Psk. Filiz ÖZKAN’a, babam Doç. Dr. Ömer ÖZKAN’a
ve sadece odamı değil çok şeyimi paylaştığım canım kardeşim Z. Reyhan ÖZKAN’a
en içten teşekkürlerimi sunarım.
Hilal ÖZKAN
Ocak, 2013
OCAK 2013
ii
İÇİNDEKİLER
Sayfa
ÖZET
1
1. GİRİŞ
2
2. K-MEANS KÜMELEME ALGORİTMASI
3
2.1. Tanım ve Tarihçe
3
2.2. K-means Algoritmasının Adımları
4
2.3. Algoritmanın Akış Şeması
5
2.4. k Sayısının Kümelemeye Etkisi
6
2.5. Uzaklık Ölçütleri
7
2.5.1. Öklid Uzaklık Ölçütü
7
2.5.2. Manhattan Uzaklık Ölçütü
7
2.5.3. Minkowski Uzaklık Ölçütü
8
2.5. Uygulama Alanları
8
3. K-NN SINIFLANDIRMA ALGORİTMASI
3.1. Tanım ve Tarihçe
9
9
3.2. K-NN Algoritmasının Adımları
10
3.3. k Sayısının Sınıflandırmaya Etkisi
12
3.4. Uygulama Alanları
13
4. UYGULAMA: ÖĞRENCİ HARF NOTLARININ BELİRLENMESİ
14
5. UYGULAMA: KALP HASTALIĞI TEŞHİSİ
18
6. EKLER
22
6.1. K-means Algoritmasının Kodları
22
6.2. K-NN Algoritmasının Kodları
25
KAYNAKLAR
27
iii
iv
ÖZET
Öğrenci harf notlarının belirlenmesi için farklı algoritmalar kullanılmaktadır.
Sapması düşük algoritmaların daha etkili olduğunu ve adil sonuçlar ortaya
koyduğunu söylemek mümkündür.
Tıp alanında geçmiş teşhis ve tedavi kayıtları, gelecek çalışmalara ışık tutmaktadır.
Bu doğrultuda geçmiş kayıtların bilgisayar programları tarafından analiz edilmesi
etkili tedaviyi destekleyici bir unsur oluşturmaktadır.
Bu çalışmada kümeleme algoritmalarından K-means algoritması ve sınıflandırma
algoritmalarından K-NN algoritması anlatılmış, bu iki algoritma kullanılarak öğrenci
harf notlarının belirlenmesi ve kalp hastalığının teşhisi için hazırlanan uygulamalar
Mathematica programı ile gerçekleştirilmiştir.
1
1. GİRİŞ
İnsanoğlu hayatta karsılaştığı zorlukları yenebilmek için önceki tecrübelerine, bilgi
birikimlerine ihtiyaç duyar. Bu yüzden tarih boyunca bunları saklayacak ve
gerektiğinde kullanmayı sağlayacak teknikler geliştirmeye çalışmıştır. İlk çağlarda
mağara duvarlarına resim seklinde kaydettiği verileri, ilerleyen çağlarda kâğıdın
icadı ile birlikte kitaplara dökmüştür.
Geleneksel veri kaydetme aracı olan kâğıdın yerini gün geçtikçe hızlanan ve
ucuzlayan elektronik kayıt ortamlarına bırakması ile birlikte, yeryüzünde çok büyük
veri yığınları oluşmaya başlamıştır. Yaşadığımız her saniye bu yığınlara yenileri
eklenmektedir.
Veri kendi basına bir değer ifade etmez, bir amaca yönelik olarak işlendiğinde bilgiyi
oluşturur. Yakın geleceğin, geçmişten çok fazla farklı olmayacağı varsayıldığında,
geçmiş veriden çıkarılmış olan kurallar gelecekte de geçerli olacak ve ilerisi için
doğru tahmin yapmayı sağlayacaktır [5].
Fakat her veriden bilgi sağlamak mümkün olmayabilir. Veriden bilgi edinebilmek
yani “veriden öğrenmek” için bazı koşulların sağlanması gerekmektedir. Bunlar

Bir örüntü mevcuttur.

Matematiksel olarak ifade edilemiyordur.

Örnek veri kümesi vardır.
şeklinde sıralanabilir [20].
Bilginin edinilebilmesi için öncelikle üzerinde çalışılacak örnek veri kümesine
ihtiyaç vardır. Fakat bu veri kümesi bir örüntü içermiyor, rastgele verilerden
oluşuyorsa bir algoritma geliştirmek mümkün değildir. Matematiksel formüller ile
kesin çözüme ulaşılan sorunlarda ise eski veriler kullanılarak bir çıkarımda
bulunmaya gerek kalmaz.
Bu bitirme projesinde harf notları ve kalp hastalığı verileri kullanılarak iki farklı
uygulama geliştirilmiştir. İlk uygulama, üç farklı sınavdan aldıkları notlar belli olan
öğrencilerin harf notlarını adil bir şekilde belirlemeye yöneliktir. İkinci uygulamada
ise veri kümesi hasta ve sağlıklı olarak ikiye ayrılmış, daha sonrasında bir kişinin
hangi grupta yer alacağı belirlemek amaçlanmıştır.
2
2. K-MEANS ALGORİTMASI
2.1 Tanım ve Tarihçe
K-means algoritmasının ana fikri 1957’de Hugo Steinhaus tarafından ortaya atılsa da
[3] “K-means” terim olarak ilk defa 1967 yılında James MacQueen tarafından
kullanılmıştır [4]. 50 yıldan fazla bir süre önce ortaya çıkan en eski kümeleme
algoritmalarından biri olmasına rağmen, K-means algoritması günümüzde kümeleme
için kullanılan en yaygın gözetimsiz öğrenme yöntemlerinden biridir [6].
Algoritmasının temelinde n tane veriyi k tane birbirinden ayrık küme oluşturacak
şekilde gruplara ayırmak yatar. K-means’in atama mekanizması her verinin sadece
bir kümeye ait olabilmesine izin verir [8]. Birbirine yakın veriler aynı kümede yer
alırken birbirinden uzak veriler farklı kümelerde yer alırlar. Algoritmanın amacı;
gerçekleştirilen gruplama işleminin sonunda küme içi benzerlikleri maksimum,
kümeler arası benzerlikleri ise minimum hale getirmektir. Küme benzerliği, kümenin
ağırlık merkezi olarak kabul edilen bir nesne ile kümedeki diğer nesneler arasındaki
uzaklıkların ortalama değeri ile ölçülmektedir [1-2]. Kümeleme, verilerin en yakın
veya benzer oldukları küme merkezleri etrafına yerleştirilmesi ile gerçekleştirilir.
Algoritmaya K-means adı verilmesinin sebebi, algoritmanın başlangıcında sabit bir
küme sayısına ihtiyaç duyulmasıdır. k ile gösterilen küme sayısı, verilerin
birbirlerine olan yakınlıklarına göre oluşacak grup sayısını ifade eder. Kümeleme
işleminden önce bilinen k, kümeleme işlemi bitene kadar değeri değişmeyen sabit bir
pozitif tam sayıdır [5].
K-means algoritmasının performansını k küme sayısı, başlangıç olarak seçilen küme
merkezlerinin değerleri ve benzerlik ölçümü kriterleri etkiler [7]. Küme
merkezlerinin değerlerine bağlı olarak, özelikle de bu değerlerin rastgele seçilmesi
durumunda, bir ya da birden fazla küme boş kalabilir [9]. Ayrıca bu algoritma
çakışan kümelerde iyi sonuç vermez. K-means’in dezavantajlarından biri de, sadece
sayısal verilerde kullanılabilir olmasıdır. Algoritmayı kategorik verilere doğrudan
uygulamak mümkün değildir. Kullanılması için kategorik verilerin sayısal verilere
dönüştürülmesi gerekmektedir.
3
2.2 K-means Algoritmasının Adımları
Kümeleme
işlemine
başlamadan
önce,
bütün
verilerin
sayısal
değerlere
dönüştürülmesi ve verinin kaç kümeye ayrılacağının yani k sayısının belirlenmesi
gerekir. Algoritmanın ilk adımında, bu k adet kümenin merkezleri için sayılar atanır.
Atanan bu ilk küme merkezlerinin değerleri rastgele olabileceği gibi, algoritmanın
daha iyi bir sonuç vermesi açısından farklı yöntemlerle de seçilebilir.
Bir sonraki adım ise, veride bulunan her elemanın ilk küme merkezlerine olan
uzaklıklarını hesaplamaktır. Hesaplanan uzaklıklar sonucu, her eleman en yakın
olduğu kümeye yerleştirilir. Oluşan kümelerdeki elemanların ortalaması alınır ve bu
sayı yeni küme merkezi olarak belirlenir. Verideki her elemanın yeni küme
merkezlerine olan uzaklıkları hesaplanır ve en yakın olduğu kümeye yerleştirilir. Bu
işlem küme merkezleri değişmeyene ya da belirlenen çevrim sayısına ulaşılana kadar
tekrarlanır.
K-means algoritmasının işlem basamakları şu şekilde özetlenebilir:
1. Adım: İlk küme merkezleri belirlenir. Küme merkezleri rastgele seçilebilir ya
da bu işlem için farklı bir yöntem belirlenir.
2. Adım: Her nesnenin seçilen merkez noktalara olan uzaklığı hesaplanır. Elde
edilen sonuçlara göre tüm elemanlar k adet kümeden kendilerine en yakın
olan kümeye yerleştirilir.
3. Adım: Oluşan kümelerin yeni merkez noktaları o kümedeki tüm elemanların
ortalama değeri ile değiştirilir.
4. Adım: Merkez noktalar değişmeyene kadar ya da belirlenen çevrim sayısı
tamamlanana kadar 2. ve 3. adımlar tekrarlanır.
4
2.3 Algoritmanın Akış Şeması
Başla
k tane küme merkezi belirle
i=1
i. elemanı seç
i. elemanı en yakın olduğu küme merkezine ata
i= i+1
HAYIR
Tüm elemanlar seçildi
mi?
EVET
Kümelerin yeni merkez noktalarını o kümedeki tüm
elemanların ortalama değeri ile değiştir
Merkez noktaları sabit kaldı
mı? / Belirlenen çevrim
sayısına ulaşıldı mı?
EVET
Bitir
5
HAYIR
2.4 k Sayısının Kümelemeye Etkisi
K-means algoritmasında kümeleme işleminden önce seçilen k sayısının önemi Şekil
2.1’de gösterilmiştir. Örnekteki verilerin dağılımı Şekil 2.1 (a)’da görülmektedir. k
sayısının 2 seçilmesi durumunda kümeleme sonucu oluşacak kümeler Şekil 2.1
(b)’de gösterilmiş, küme merkezlerinin son halleri üçgen simgelerle temsil edilmiştir.
Şekil 2.1 (c)’de ise k sayısının 3 seçilmesi sonucu ortaya çıkacak durum verilmiştir.
Şekillerde açıkça görüldüğü gibi başlangıçta seçilen k sayısı kümeleme işleminin
sonucunu değiştirmektedir.
Şekil 2.1: K-means kümeleme algoritması
K-means ve benzeri kümeleme algoritmaları k sayısının belirlenmesi konusunda bir
çözüm sunmazlar. Ancak birçok durumda, özel bir k değerinin belirlenmesi gerekli
olmaz. Analiz aşamasında k değerinin tespiti için ön çalışma yapılır. Tahmini bir
değer
kullanılarak
kümeleme
algoritması
çalıştırılır
ve
alınan
sonuçlar
değerlendirilir. Değerlendirme sonucunda beklenen kümeleme görülmez ise, başka
bir k değeri kullanılarak tekrar kümeleme algoritması çalıştırılır veya veriler üzerinde
değişiklik yapılabilir. Algoritmanın her çalıştırılması sonrasında, ortaya çıkan
kümelerin etkinliğini hesaplamak için, küme içindeki kayıtların arasındaki ortalama
uzaklık ile kümeler arası ortalama uzaklık karşılaştırılır. Hesaplamada başka
yöntemler de kullanılabilir. Bu yöntemler algoritmaya dâhil edilebilir. Ancak ele
alınan uygulama açısından sonucun yararlılığının belirlenmesi için kümeler mutlaka
daha öznel temelde değerlendirilmelidir [10].
6
2.5 Uzaklık Ölçütleri
Bir veri setinde yer alan birimlerin kümelenmesi işlemi bu birimlerin birbirleriyle
olan
benzerlikleri
ya
da
birbirlerine
olan
uzaklıkları
kullanılarak
gerçekleştirilmektedir. Değişkenlerin kesikli ya da sürekli olmalarına ya da
değişkenlerin nominal, ordinal, aralık ya da oransal ölçekte olmalarına göre hangi
uzaklık ölçüsünün ya da hangi benzerlik ölçüsünün kullanılacağına karar verilir [11].
K-means kümeleme algoritmasında her elemanın küme merkezlerine uzaklığını
ölçmek için farklı yöntemler kullanılabilir. En yaygın olarak kullanılan Öklid uzaklık
ölçütüdür. Öklid uzaklık ölçütüne ek olarak, Manhattan uzaklık ölçütü ve Minkowski
uzaklık ölçütü de sık kullanılan yöntemler arasındadır. Her uzaklık ölçütü şu şartları
sağlar:

d  i, j  0 ; Uzaklık negatif olamaz.

d  i,i   0 ; Her elemanın kendisine olan uzaklığı sıfırdır.

d  i, j  d  j,i  ; Uzaklık fonksiyonu simetriktir.

d  i, j  d  i, h  + d  h, j ; Üçgen Eşitsizliği: İki eleman arasındaki uzaklık
bu iki elemanın üçüncü bir elemana olan uzaklıkları toplamından küçük
olamaz.
2.5.1 Öklid Uzaklık Ölçütü
Öklid uzaklığı ve Öklid uzaklığının karesi formülleri ile standartlaştırılmış verilerle
değil, işlenmemiş verilerle hesaplama yapılır. Öklid uzaklıkları kümeleme analizine
sıra dışı olabilecek yeni nesnelerin eklenmesinden etkilenmezler. Ancak boyutlar
arasındaki ölçek farklılıkları Öklid uzaklıklarını önemli ölçüde etkilemektedir. Öklid
uzaklık formülü en yaygın olarak kullanılan uzaklık hesaplama formülüdür.

d  i, j  x i1  x j1  x i2  x j2 
 x ip  x jp

2.5.2 Manhattan Uzaklık Ölçütü
Manhattan
uzaklığı
boyutlar
arasındaki
ortalama
farka
eşittir.
Bu
ölçüt kullanıldığında farkın karesi alınmadığı için sıra dışılıkların etkisi azalır.
Manhattan uzaklık ölçütü kullanılarak iki birim arasındaki uzaklık
7

d  i, j  x i1  x j1  x i2  x j2 
 x ip  x jp

formülü ile hesaplanır. Bu ölçü de birimler arasındaki mutlak uzaklık kullanılır.
Manhattan uzaklık ölçütüne, “city block uzaklık ölçütü” adı da verilir.
2.5.3 Minkowski Uzaklık Ölçütü
Minkowski uzaklık ölçüsü genel bir formüldür. Formülde yer alan m değerinin
alacağı farklı değerlere göre yeni formüller türetir. Minkowski uzaklık ölçüsü
kullanılarak iki birim arasındaki uzaklık
m
m
d  i, j   x i1  x j1  x i2  x j2 

m 1m
 x ip  x jp 

formülü ile hesaplanır.
Minkowski uzaklık ölçüsündeki m değeri büyük ve küçük farklara verilen ağırlığı
değiştirir. m=1 değerini alırsa, formül, Manhattan uzaklık ölçütünün formülüne, m=2
değerini alırsak, formül Öklid uzaklık ölçütü formülüne dönüşür [11].
2.6 Uygulama Alanları
K-means kümeleme algoritmasının uygulama alanı oldukça geniştir. Bunlardan
bazıları şu şekilde sıralanabilir:

Pazarlama: Müşteri özelliklerini ve geçmiş alışveriş kayıtlarını içeren geniş
bir veri havuzunda benzer tutumdaki müşterilerin tespiti

Biyoloji: Özniteliklerinden yola çıkarak bitki ve hayvanların sınıflandırılması

Sigorta: Yüksek ortalama talep maliyetine sahip sigorta poliçesi sahiplerinin
belirlenmesi, sahtekarlıkların tespiti

Şehir Planlama: Ev tiplerine bağlı olarak ev topluluklarının gruplanması,
değer ve coğrafik yer

Deprem Çalışmaları: Gözlemlenen deprem merkez üssüleri yardımıyla
tehlikeli bölgelerin belirlenmesi [12]

Medikal: Kalp hastalığı verilerinden yararlanarak kişinin kalp hastası ya da
sağlıklı olarak gruplandırılması

Eğitim: Sayısal not verileri kullanılarak öğrencinin harf notunun belirlenmesi.
8
3.
K-NN ALGORİTMASI
3.1 Tanım ve Tarihçe
ABD Hava Kuvvetleri Hava Hekimliği Okulu’nun 1951 yılındaki yayınlanmamış bir
raporunda Fix ve Hodges tarafından patent tanıma alanında kullanılmak üzere
parametrik olmayan bir yöntem tanıtılmış ve o zamandan itibaren bu yöntem KNearest
Neighbor
algoritması
olarak
adlandırılmıştır.
K-Nearest
Neighbor
algoritması daha sonra 1967’de Cover ve Hart tarafından geliştirilmiştir. Geliştirilen
sınıflandırma algoritması sayesinde, yeni kabul yaklaşımları (Hellman, 1970), Bayes
hata oranının geliştirilmesi (Fukunaga & Hostetler, 1975), uzaklık ağırlıklı
yaklaşımlar (Dudani, 1976; Bailey & Jain, 1978), esnek hesaplama yöntemleri
(Bermejo & Cabestany, 2000) ve bulanık yöntemler (Jozwik, 1983; Keller et al,
1985) de dâhil pek çok yeni araştırma ortaya çıkmıştır [15].
Kısaca K-NN olarak ifade edilen K-Nearest Neighbor (K-En Yakın Komşu)
sınıflandırma algoritmasının temelinde “birbirine yakın olan nesneler muhtemelen
aynı kategoriye aittir” mantığı yatar. Algoritmanın amacı, yeni bir nesneyi
özelliklerinden
faydalanarak
önceden
sınıflandırılmış
örnekler
yardımıyla
sınıflandırmaktır [19]. Hangi sınıfa ait olduğu bilinmeyen nesne sınama örneği,
önceden sınıflandırılmış nesneler ise öğrenme örnekleri olarak adlandırılır. K-NN
algoritmasında sınama örneğinin öğrenme örneklerine olan uzaklıkları hesaplanır ve
en yakınındaki k adet örnek çoğunlukla hangi sınıfa aitse sınama örneğinin de o
sınıfa ait olduğu düşünülür.
Şekil 3.1 K-NN Sınıflandırma Algoritması [16]
9
Şekil 3.1’de K-NN algoritmasının mantığı görsel olarak ifade edilmiştir. Burada
dikkat edilmesi gereken k sayısına bağlı olarak sınıflandırmanın farklı sonuçları
olabileceğidir. Bu konudan k Sayısının Sınıflandırmaya Etkisi başlığı altında detaylı
olarak bahsedilecektir.
K-Nearest Neighbor algoritması kolay anlaşılabilir bir algoritma olduğu için
uygulaması basittir. Sayısal veriler üzerinde uygulanması kategorik verilere oranla
daha kolaydır. Ayrıca gürültüye sahip veriler için de olumlu sonuçlar ortaya koyar.
Fakat algoritmada kullanılacak verilerin saklanması hafızada fazla yer kaplar. KNN’in bir diğer dezavantajı da yeni bir nesneyi sınıflandırırken diğer nesnelere olan
uzaklığının hesaplanması ve karşılaştırılmasının zaman almasıdır.
K-Nearest Neighbor algoritmasını kullanmanın avantajları ve dezavantajları şu
şekilde özetlenebilir.
Avantajları;

Gürültüye sahip öğrenme verilerinde de güçlü sonuçlar ortaya koyması,

Öğrenme verilerinin çok olması durumunda etkili sonuç vermesidir.
Dezavantajları;

k sayısının belirlenmesinin gerekliliği,

Uzaklığa bağlı bir sınıflandırma yöntemi olduğu için hangi uzaklık ölçütünün
kullanılacağına dair bir kesinlik olmaması,

Sınama örneğinin öğrenme örneklerine olan uzaklıkları tek tek hesaplanacağı
için hesaplama zamanının ve masrafının fazla olmasıdır [18].
3.2 K-NN Algoritmasının Adımları
Sınıflandırma işlemine başlamadan önce, bütün verilerin sayısal değerlere
dönüştürülmesi ve en yakın kaç tane komşuya bakılacağının yani k sayısının
belirlenmesi gerekir. Bir örneğin sınıflandırılması için sınıfı bilinen örnekler seçilir.
Sınama örneğinin sınıfını belirlerken öğrenme örnekleri kümesindeki örneklere olan
uzaklıkları hesaplanır ve en yakın k tane örnek seçilir. Uzaklık hesaplanırken Öklid,
Manhattan, Minkowski gibi farklı uzaklık ölçütlerinden yararlanmak mümkündür
fakat çoğunlukla Öklid uzaklık ölçütü kullanılır. Daha sonra, seçilen k tane örnek
10
arasında hangi sınıfa ait örnek sayısı en fazlaysa sınama örneği de bu sınıfa aittir
denir.
Şekil 3.2 K-NN ile Pozitif-Negatif Teşhisi[16]
Şekil 3.2’de pozitif ve negatif olarak iki kümeye ayrılmış veri yardımıyla bilinmeyen
nesnenin sınıflandırılmasına bir örnek verilmiştir. Nesnenin en yakın üç komşusu
pozitif kümesinde yer aldığı için kendisinin de pozitif olduğu çıkarımında
bulunulabilir.
Öğrenme kümesindeki örnekler xi , sınama örneği xq ile gösterilmek üzere K-NN
yöntemini, yakın olan örneklerin ağırlığını artırarak w 
1
formülü ile
d ( xq , xi ) 2
uzaklık ağırlıklı K-NN yöntemi haline getirmek de mümkündür.
K-NN sınıflandırma algoritmasının işlem basamakları şu şekilde özetlenebilir:
1. Adım: Sınama örneğinin öğrenme örneklerine olan uzaklıkları hesaplanır.
2. Adım: En yakın olan k tane örnek seçilir.
3. Adım: Hangi sınıfa ait örnek sayısı en fazlaysa sınama örneği de bu sınıfa
atanır.
11
3.3 k Sayısının Sınıflandırmaya Etkisi
Şekil 3.3.1 k Sayısının Sınıflandırmaya Etkisi
Şekil 3.3.1’de K-NN algoritmasının mantığı görsel olarak ifade edilmiştir. Şekil 3.3.1
(a)’da k sayısı 1 seçilerek en yakın bir komşu A sınıfına dâhil olduğu için
sınıflandırılmak istenen nesnenin de A sınıfına ait olduğu sonucuna ulaşılmıştır.
(b)’de ise k sayısı 3 seçildiğinde en yakın üç komşudan ikisinin B, birinin ise A
grubuna dâhil olduğu görülmüş ve sınıflandırılmak istenen nesnenin B sınıfına ait
olduğu sonucuna ulaşılmıştır.
Şekil 3.3.2 K-NN ile Sınıflandırma
Şekil 3.3.2’de görüldüğü gibi xq örneği;

1-en yakın komşuya göre (k=1) pozitif,

5-en yakın komşuya göre (k=5) negatif olarak sınıflandırılır [18].
12
k sayısına bağlı olarak sınıflandırmanın farklı sonuçlar verebileceği bu örnekte de
görülmüştür.
3.4 Uygulama Alanları
K-Nearest Neighbor algoritmasının veri madenciliği, istatistiksel patern tanıma,
görüntü işleme ve pek çok alanda kullanılan bir yöntemdir [19]. Algoritmanın bazı
uygulamaları aşağıdaki gibidir.

Kredi başvurusu değerlendirme

Kredi kartı harcamasının sahtekârlık olup olmadığına karar verme

Hastalık teşhisi

Ses tanıma

Karakter tanıma

Gazete haberlerini konularına göre ayırma

Kullanıcı davranışları belirleme [17]

El yazısı tanıma

Uydu görüntüsü tanısı

EKG örüntülerinin incelenmesi [19].
13
4.
UYGULAMA: ÖĞRENCİ HARF NOTLARININ BELİRLENMESİ
Bu bölümde öğrencilerin bir derste yapılan 3 farklı sınavdan aldığı notlardan bir veri
oluşturulmuştur. Öğrencilerin bu 3 sınavdan aldıkları notlar baz alınarak K-means
kümeleme algoritması yardımıyla yıl sonu başarı notları belirlenmiştir. Sonrasında
ise K-NN algoritması yardımıyla başlangıçta kümelemeye dahil olmayan bir
öğrencinin hangi harf notunu alacağı saptanmıştır.
250 öğrencinin 3 farklı sınav notlarından oluşan veri aşağıdaki gibidir.
14
İlk küme merkezlerini rastgele seçmek yerine algoritmanın verimliliğini artırmak için
bir yol geliştirilmiştir. Öncelikle not listesinin uzunluğu hesaplanmış ve ardından
kümelenecek eleman sayısı olan k = 8 (AA, BA, BB, CB, CC, DC, DD, FF) ‘e
bölünmüştür. Bu bölüm sonucunda çıkan sayı tam sayıya yuvarlanmış ve notlar
listesinde 8 küme oluşturulmuştur. Bu 8 kümenin ayrı ayrı aritmetik ortalamaları
alınıp elde edilen sayılar ilk küme merkezleri olarak atanmıştır.
1. KUME MERKEZLERI = {{13.6613, 12.4194, 12.7581}, {20.3226, 18.8387,
18.3226}, {32.9032, 32.5806, 27.6129}, {42.4194, 44.871, 40.871}, {53.3871,
57.4516, 54.5484}, {63.8387, 68.7742, 65.5806}, {77.7742, 81.6129, 79.7742},
{83.8871, 85.8065, 84.8871}}
Bu ortalamalara -yani ilk küme merkezlerine- göre, notlar listesinin tüm
elemanlarının 8 ayrı küme merkezine olan uzaklıkları Öklid uzaklık ölçütü ile
hesaplanmış ve notlar listesinin 3 sınav notlarından oluşan her bir elemanı,
uzaklığının minimum olduğu kümeye dâhil edilmiştir. Burada göz önünde
bulundurulması gereken nokta, 3 sınav notunun harf notuna etkisinin eşit kabul
edilmiş olmasıdır. Sınav notlarına farklı ağırlıklar verilmek istenirse Öklid uzaklık
ölçütünde
d  i, j  w1  x i1  x j1   w 2  x i2  x j2  
2
2
 w p  x ip  x jp 
2
formülü
kullanılmalıdır. Burada geçen w i ( i  1,2,...,p ) değerleri her sınav notunun ağırlığını
temsil etmektedir.
Daha sonra oluşturulan her bir kümenin aritmetik ortalaması alınmış ve bu
ortalamalar yeni küme merkezleri olarak atanmıştır. Sonraki aşamada her kümenin
içi boşaltılmış, her elemanın yeni küme merkezlerine olan uzaklıkları tekrar
hesaplanarak, uzaklığının minimum olduğu kümeye dâhil edilmiş ve tekrar yeni
küme merkezleri oluşturulmuştur. Maksimum iterasyon sayısı 20 olarak belirlense de
kümeleme işlemi 8. adımda tamamlanmıştır. En iyi sonucun küme merkezleri
{{9.1764,10,14.852},
{45.292,45.292,50.682},
{25.363,19.045,20.09},
{48.642,80.571,18.071},
{33.945,35.189,27.702},
{56.857,57.964,71.964},
{73.771,72.171,67.571}, {87.641,90.359,87.692}}
olarak bulunmuştur. Bu kümeleme sonucu oluşan sapma değeri 1396.20 olarak
hesaplanmıştır.
15
Ancak K-means algoritması başlangıç ortalamalarına bağlı olarak farklı sonuçlar
verebilmektedir. Daha iyi sonuçların elde edilebilmesi için başlangıç ortalamalarına
kullanıcının belirlediği bir aralık dâhilinde keyfi ekleme-çıkarma yapılmıştır. Keyfi
ekleme-çıkarma aralığı 10 olarak belirlenmiştir. Bu işlem 20 kez tekrarlanarak
birbirinden farklı 20 başlangıç ortalaması elde edilmiştir.
Bu işlemler sonrasında hangi başlangıç ortalamasının daha iyi sonuç verdiğini
görebilmek adına her bir adımda standart sapmalar hesaplanmış ve standart sapma
değeri en küçük olan kümeleme en iyi sonuç kabul edilmiştir.
En iyi sonucun küme merkezleri
{{16.784,17.224,22.171},
{19.495,18.585,14.624},
{23.422,29.176,25.438},
{43.675,41.434,36.697},
{60.280,49.827,48.152},
{62.05,66.455,73.571},
{76.201,79.61,83.104}, {83.464,90.045,76.983}}
olarak bulunmuştur. Programda maksimum iterasyon sayısı 5 seçildiği için, bu
başlangıç koşulları ile 5 iterasyon sonucunda oluşan sapma değeri 1334.31 olarak
hesaplanmıştır. Bu sayı eski sapma değerinden düşük olduğu için algoritmanın
verimliliğinin arttığı gözlemlenmiştir.
Ayrıca Mathematica programının içerdiği FindClusters fonksiyonu ile de notlar
verisi 8 kümeye ayrılmış, bu ayrışım sonucunda oluşan sapma değeri 1340.17 olarak
hesaplanmıştır. K-means algoritmasının daha iyi bir sonuç verdiği görülmektedir.
Program bir de FF harf notuna bir sınır getirilerek çalıştırılmıştır. {10, 12, 15}
değerlerinin altında kalan notlar programda işleme sokulmamış, doğrudan FF olarak
belirlenmiştir. Bu durumda ise en iyi sonucun küme merkezleri
{{31.1,28.376,35.34},
{26.69,39.462,31.383},
{49.87,52.041,51.057},
{60.521,57.794,63.687},
{69.163,73.79,61.288},
{72.248,88.466,85.627},
{90.817,88.317,84.996}}
olarak bulunmuştur. Bu kümeleme sonucu oluşan sapma değeri 978.38 olarak
hesaplanmıştır. Buradan da görüldüğü gibi kümeleme işleminde kullanılacak veriye
bir sınır getirmek algoritmanın verimliliğini artırmaktadır.
Sonrasında kümelenmiş veri üzerinde K-NN algoritması ile veriye dahil olmayan
birkaç öğrenci notunun hangi kümeye dahil olacağı hesaplanmıştır. İlk öğrencinin
16
sınav notları {75, 75, 60} olarak seçilmiş, en yakın olduğu 10 komşu ile BB harf
notunu alacağı saptanmıştır.
Bu işlem 3 farklı öğrenci için de yapılmıştır. Notları {50, 55, 30} olan öğrencinin
BB, {68, 73, 80} olan öğrencinin BA, {80, 87, 92} olan öğrencinin ise AA notunu
alması gerektiği hesaplanmıştır.
Burada dikkat edilmesi gereken, algoritmanın son halinde 7 grup oluşturulmuş
olması ve {10, 12, 15} notunun altında kalan FF harf notlu öğrencilerin kümelemeye
dahil edilmemiş olmasıdır. K-NN ile öğrencinin harf notu saptanmaya başlanmadan
önce FF grubuna dahil olup olmadığı kontrol edilmelidir. Aksi durumda algoritma
yanlış sonuç verecektir.
Bu uygulama sonucunda K-means kümeleme algoritmasının öğrenci harf notlarını
belirlemek için kullanılabilecek etkili bir algoritma olduğu belirlenmiştir.
17
5.
UYGULAMA: KALP HASTALIĞI TEŞHİSİ
Kalp hastalığı dünyadaki başlıca ölüm sebeplerinden biridir. Dünya Sağlık
Örgütü’nün raporuna göre kalp hastalığı, yüksek ve düşük gelirli ülkelerde önde
gelen ölüm sebepleri arasında ilk sıradadır [13]. Geçmiş yıllara ait hasta verileri
yardımıyla kalp hastalığının teşhisi için farklı verimliliklere sahip çeşitli algoritmalar
geliştirilmiştir.
Bu çalışmada öncelikle K-means kümeleme yöntemi yardımıyla kişiler hasta ve
sağlıklı olmak üzere 2 gruba ayrılmış sonrasında K-NN sınıflandırma algoritması ile
veride yer almayan başka bir kişinin kalp hastası olup olmadığı teşhis edilmiştir.
Çalışmada kullanılan Cleveland Kalp Hastalığı Verisi (Cleveland Heart Disease Data
- CHDD) California Üniversitesi Makine Öğrenimi Veri Havuzu’ndan (UCI Machine
Learning Repository) alınmıştır. http://archive.ics.uci.edu/ml/datasets/Heart+Disease
bağlantısından veriye ulaşılabilir. Veri kümesi 76 nitelik içermektedir fakat şimdiye
kadar yapılan çalışmaların hepsinde bunlardan sadece 13’ü kullanılmıştır. Bu 13
niteliğin 4’ü sürekli, 9’u nominaldir. Kullanılan nitelikler aşağıdaki tablodaki gibidir.
1
YAŞ
2
CİNSİYET
3
4
5
6
7
8
9
10
11
12
13
1: ERKEK
0: KADIN
1: TİPİKAL ANJİN
2: ATİPİKAL ANJİN
GÖĞÜS AĞRISI TİPİ
3: NON-ANJİNAL AĞRI
4: SEMPTOMSUZ
DİNLENME HALİNDE KAN BASINCI (mm Hg)
KOLESTROL
1: >120
AÇLIK KAN ŞEKERİ
0: <120
0: NORMAL
DİNLENME HALİNDE
1: ST-T DALGASI ABNORMALİTESİ
KARDİYOGRAFİK SONUÇ
2: SOL VENTRİKÜL HİPERTROFİSİ
MAKSİMUM KALP ATIŞ HIZI
1: EVET
EGZERSİZ SONUCU ANJİN
0: HAYIR
DİNLENME SONRASI EGZERSİZ SONUCU ORTAYA ÇIKAN ST
DEPRESSION DEĞERİ
1: YUKARI EĞİMLİ
ST BÖLGESİ EĞİMİ
2: DÜZ
3: AŞAĞI EĞİMLİ
FLOROSKOPİ İLE BOYANAN ANA DAMAR SAYISI (0-3)
3: NORMAL
KAN RAHATSIZLIĞI
6: KRONİK
7: AKUT
18
Veride yer alan kalp hastası olma ya da olmama bilgisi ise algoritmanın doğruluğunu
test etmek için kullanılmıştır.
14
KALP HASTALIĞI
0: DAMAR DARALMASI < %50
1: DAMAR DARALMASI > %50
Cleveland Kalp Hastalığı Verisi 303 satırdan oluşsa da 6 satır eksik bilgi içerdiği için
çalışmada 297 satırdan yararlanılmıştır. 297 satırın 160’ı (%53.87’si) sağlıklı
bireyleri, 137’si (%46.13’ü) ise çeşitli derecelerde kalp hastalığına sahip bireyleri
içermektedir.
Niteliklerin dağılımı mavi renk sağlıklı, kırmızı renk hasta bireyleri gösterecek
şekilde aşağıda verilmiştir.
Şekil 5.1 Cleveland Kalp Hastalığı Verisinde niteliklerin dağılımı [14]
Uygulamaya başlamadan önce daha iyi bir sonuç vermesi için Cleveland Kalp
Hastalığı Verisi normalize edilmiştir. Bireyler hastalıklı ve sağlıklı olarak ikiye
ayrılacağı için k sayısı 2 olarak seçilmiştir. Öğrenci Harf Notlarının Belirlenmesi
uygulamasında ilk küme merkezlerinin belirlenmesi için geliştirilen yöntem burada
da kullanılmıştır.
1. KUME MERKEZLERI =
19
{{1.70904,1.51351,1.69215,1.69285,1.52656,1.25,1.25253,1.73721,1.25,1.26725,1.5
152,1.25,1.57143},
{2.80603,2.67568,2.79476,2.79524,2.68437,2.5,2.50169,2.82481,2.5,2.5115,2.6768,
2.5,2.71429}}
olarak bulunmuştur.
Daha iyi sonuçların elde edilebilmesi için başlangıç ortalamalarına kullanıcının
belirlediği bir aralık dâhilinde keyfi ekleme-çıkarma yapılmıştır. Keyfi eklemeçıkarma aralığı 10 olarak belirlenmiştir. Bu işlem 20 kez tekrarlanarak birbirinden
farklı 20 başlangıç ortalaması elde edilmiştir.
Bu işlemler sonrasında hangi başlangıç ortalamasının daha iyi sonuç verdiğini
görebilmek adına her bir adımda standart sapmalar hesaplanmış ve standart sapma
değeri en küçük olan kümeleme en iyi sonuç kabul edilmiştir.
En iyi sonucun küme merkezleri
{{0.73254,0.83823,0.986766,0.868969,0.406885,0.846725,0.312739,0.822397,0.035
7823,0.656089,0.736774,0.129896,0.945556},
{0.516809,0.785961,0.434826,0.723922,0.837698,0.0643809,0.38759,0.578262,0.30
4528,0.180985,0.916345,0.778737,0.695027}}
olarak bulunmuştur.
Programda maksimum iterasyon sayısı 5 seçildiği için, bu başlangıç koşulları ile 5
iterasyon sonucunda oluşan sapma değeri 68.86 olarak hesaplanmıştır. Mathematica
programının içerdiği FindClusters fonksiyonu ile de notlar verisi 2 kümeye
ayrıldığında oluşan sapma değeri 73.20 olarak hesaplanmıştır. Yani bu uygulamada
da K-means algoritmasının daha iyi bir sonuç verdiği gözlemlenmiştir.
K-means algoritmasıyla sınıflandırılmış veri kullanılarak sınama verisi olarak seçilen
{0.81, 1, 0.25, 0.72, 0.41, 1, 1, 0.74, 0, 0.37, 1, 0, 0.86} değerlerine sahip kişinin
kalp hastası olup olmadığı K-Nearest Neighbor algoritması ile test edilmiştir. k
sayısına 5, 20, 50, 100, 200 gibi farklı değerler atanarak program çalıştırılmış ve KNN algoritması kişiyi her seferinde sağlıklı olarak sınıflandırılmıştır.
k sayısının seçimi, bazı durumlarda ise farklı sonuçlar verebilmektedir. Bir diğer
uygulamada sınama verisi olarak {0.74, 0, 1, 0.65, 0.23, 0, 0, 0.57, 1, 0.19, 0.67,
0.33, 1} değerlerine sahip kişi seçilmiştir. k sayısı 169 seçildiğinde K-NN
20
algoritması kişiyi sağlıklı olarak, 168 seçildiğinde ise kişiyi hasta olarak
sınıflandırmıştır.
21
6. EKLER
6.1 K-means Algoritmasının Kodları
ortilkV[list_,kumesay_]:=Block[{el1,el2,el3,el4},
el1=Length[list];
el2=Sort[list];
el3=Floor[el1/kumesay];
Do[
el4[i]=Sum[el2[[j]],{j,(i-1) el3+1,i el3}]/Max[{el3,10^(-10)}];
,{i,1,kumesay-1}];
el4[kumesay]=Min[Max[Sum[el2[[j]],{j,(kumesay-1) el3+1,el1}]/Max[{(el1(kumesay-1) el3),10^(-10)}],5],90];
Return[Table[N[el4[i]],{i,1,kumesay}]]]
ortilkM[list_,kumesay_]:=Block[{el1,uz1,el2},
el1=Transpose[list];
uz1=Length[el1];
el2=Transpose[Table[ortilkV[el1[[i]],kumesay],{i,1,uz1}]];
el2[[kumesay]]=(el2[[kumesay-1]]+el2[[kumesay]])/2;
el2[[1]]=(el2[[1]]+el2[[2]])/2;
Return[el2]]
UzBV[vec1_,vec2_]:=Block[{uz1,top,dis},
uz1=Length[vec1];
top=Sum[(vec1[[i]]-vec2[[i]])^2,{i,1,uz1}];
dis=N[Sqrt[top]];
Return[dis]]
ayirM[list_,ortlist_]:=Block[{kumesay,el0,el1,el2,orts,el3,el4,el5,el6,ortn,send,sart},
kumesay=Length[ortlist];
el0=list;
el1=Length[el0];
Do[el2[i]={},{i,1,kumesay}];
orts=ortlist;
Do[el3=el0[[i]];
22
el4=Table[UzBV[el3,orts[[j]]],{j,1,kumesay}];
el5=Min[el4];
el6=Position[el4,el5][[1,1]];
AppendTo[el2[el6],el3]
,{i,1,el1}];
Do[If[Length[el2[i]]==0,AppendTo[el2[i],el2[i+1][[1]]];el2[i+1]=Drop[el2[i+1],
{1}]],{i,1,kumesay-1}];
If[Length[el2[kumesay]]==0,AppendTo[el2[kumesay],el2[kumesay1][[Length[el2[kumesay-1]]]]];el2[kumesay-1]=Drop[el2[kumesay1],{Length[el2[kumesay-1]]}]];
ortn=Table[N[Sum[el2[i][[j]],{j,1,Length[el2[i]]}]/Max[{Length[el2[i]],10^(10)}],4],{i,1,kumesay}];
send=Table[{el2[i],ortn[[i]]},{i,1,kumesay}];
Return[send]]
sapmaM[list_]:=Block[{el0,uz0,el1,el2,el3,el4,uz1,sap,topsap},
el0=list;
uz0=Length[el0];
Do[el1[i]=el0[[i]];
el2[i]=Length[el1[i]];
el3[i]=N[Sum[el1[i][[j]],{j,1,el2[i]}]/Max[{el2[i],10^(-10)}]];
el4[i]=Sqrt[Sum[(el1[i][[j]]-el3[i])^2,{j,1,el2[i]}]];
uz1=Length[el4[i]];
sap[i]=Sum[el4[i][[j]],{j,1,uz1}]
,{i,1,uz0}];
topsap=N[Sum[sap[i],{i,1,uz0}]];
Return[topsap]]
kumelemeM[list_,kumesay_,ortl_,maxit_]:=Block[{el0,el1,sart,ort0,kumsap,kume,ku
me1,i,orts},
el0=Sort[list];
el1=Length[el0];
sart=True;
ort0=ortl;
kume[0]=ayirM[el0,ort0];
i=0;
While[sart,
23
kume1=Table[kume[i][[j,1]],{j,1,kumesay}];
kumsap[i]=sapmaM[kume1]; Print[StringForm["``. adim KUMELEME = `` \n
SAPMA= `` ",i,kume[i],kumsap[i]]] ;
orts[i]=Table[kume[i][[j,2]],{j,1,kumesay}];
kume[i+1]=ayirM[el0,orts[i]];
sart=kume[i+1]!= kume[i] && i<maxit;
i=i+1];
Return[{kume[i],kumsap[i-1]}]]
RANDKUMM[list_,kumesay_,randsay_,randara_,maxit_]:=Block[{el0,el1,uz1,el2,el
3,el4,el5,el6,el7,hata,minh,sonuc},
el0=list;hata=10^(10);
el1=ortilkM[el0,kumesay];
el3=Transpose[el0];
uz1=Length[el3];
el2={el1};
Do[
Do[el4[i]=Min[el3[[i]]];el5[i]=Max[el3[[i]]],{i,1,uz1}];
Do[Do[el6[i,j]=Random[Real,{Max[{el4[j],el1[[i]]randara}],Min[{el5[j],el1[[i]]+randara}]}],{j,1,uz1}],{i,1,kumesay}];
el2=AppendTo[el2,Table[el6[i,j],{i,1,kumesay},{j,1,uz1}]]
,{i,1,randsay}];
Do[
Print[StringForm["``. BASLANGIC ORTALAMALARI =`` \n",i,el2[[i]]]];
el7[i]=kumelemeM[el0,kumesay,Sort[el2[[i]]],maxit];
If[el7[i][[2]]<hata,hata=el7[i][[2]];minh=i;sonuc=el7[i]],{i,1,randsay}];
Print[StringForm[" \n \n **** SONUC ****
\n \n En iyi sonucun baslangic ortalamalari =``
\n \n Sapmasi=``
\n \n GRUPLAR ve ORTALAMALARI ",el2[[minh]],hata]];
Return[sonuc]]
NOTKUMEM[list_,Fsinir_,kumesay_,randsay_,randara_,maxit_]:=Block[{el0,el1,el
2,uz1,el3,el4,sart},
el0=Sort[list];
el1=Length[el0];
24
el2={};el3={};
uz1=Length[Fsinir];
Do[
el4=el0[[i]];
sart=True;
Do[If[el4[[i]]<=Fsinir[[i]],sart=False],{i,1,uz1}];
If[sart,AppendTo[el2,el4],AppendTo[el3,el4]],{i,1,el1}];
Return[{el3,RANDKUMM[el2,kumesay-1,randsay,randara,maxit]}]]
gruplarM=NOTKUMEM[notlarM,{10,12,15},8,20,10,5]
6.2 K-NN Algoritmasının Kodları
UzBVY[vec1_,vec2_]:=Block[{uz1,top,dis},
uz1=Length[vec1]-1;
top=Sum[(vec1[[i]]-vec2[[i]])^2,{i,1,uz1}];
dis=N[Sqrt[top]];
Return[dis]]
KNM[gruplist_,new_,k_]:=Block[{el0,uz0,el1,el2,uz1,el3,el4,el5,uz2,uz3,el6,uz4,el7,
el8},
el0=gruplist;
uz0=Length[el0];
el1={};
Do[el2=el0[[i]];
uz1=Length[el2];
Do[el3=el2[[j]];
el4=Insert[el3,i,-1];
AppendTo[el1,el4],{j,1,uz1}],{i,1,uz0}];
el5=new;
uz2=Length[el1];
uz3=Length[el1[[1]]];
Do[
el6=el1[[i]];
uz4[i]={UzBVY[el6,el5],el6[[uz3]]};
,{i,1,uz2}];
25
el7=Sort[Table[uz4[i],{i,1,uz2}]];
el8=Table[el7[[i]],{i,1,k}];
Return[el8]]
grlistM=Table[gruplarM[[2,1,i,1]],{i,1,Length[gruplarM[[2,1]]]}]
KNNM[knlist_,new_,k_]:=Block[{uz0,el0,sart,el1,el2,uz1,say,max,yer0,yer1,sinno},
uz0=k;
el0=KNM[knlist,new,k];
sart=True;
While[sart,
el1=Table[el0[[i,2]],{i,1,uz0}];
el2=Union[el1];
uz1=Length[el2];
say=Table[Count[el1,el2[[i]]],{i,1,uz1}];
max=Max[say];
yer0=Position[say,max];
sart=Length[yer0]!=1;
uz0=uz0-1];
yer1=yer0[[1,1]];
sinno=el2[[yer1]];
Return[sinno]]
26
KAYNAKLAR
[1] Han J., Kamber M., 2001. Data Mining Concepts and Techniques, Morgan
Kauffmann Publishers Inc.
[2] Berkhin P., 2002. Survey of Clustering Data Mining Techniques, San Jose,
California, USA, Accrue Software Inc.
[3] Steinhaus, H., 1957. "Sur la division des corps matériels en parties".Bull. Acad.
Polon. Sci. 4 (12): 801–804.
[4] MacQueen, J. B., 1967. "Some Methods for classification and Analysis of
Multivariate Observations". 1. Proceedings of 5th Berkeley Symposium on
Mathematical Statistics and Probability. University of California Press. pp. 281–297.
[5] Dinçer E., 2006. Veri Madenciliğinde K-means Algoritması ve Tıp Alanında
Uygulanması, pp. 1, 55-64.
[6] Jain, A.K., 2009. Data clustering: 50 years beyond K-means. Pattern
Recognition Lett.
[7] Kırmızıgül Çalışkan, S., Soğukpınar, İ. “KxKNN: K-means ve K En Yakın
Komşu Yöntemleri ile Ağlarda Nüfuz Tespiti”, 2. Ağ ve Bilgi Güvenliği
Sempozyumu, Girne, 16-18 Mayıs 2008.
[8] Yıldız, K., Çamurcu, Y., Doğan, B. “Veri Madenciliğinde Temel Bileşenler
Analizi ve Negatifsiz Matris Çarpanlarına Ayırma Tekniklerinin Karşılaştırmalı
Analizi”, Akademik Bilişim Konferansı, Muğla, 10-12 Şubat 2010.
[9] Naldi, M.C, Campello, R.J.G.B, Hruschka, E.R, Carvalho, A.C.P.L.F., 2009.
Efficiency issues of evolutionary K-means. Applied Soft Computing.
[10] Fırat, E., 2012. Öğrenci Harf Notlarının K-means Kümeleme Algoritması ile
Belirlenmesi, p.16.
[11] Url-1 <http://www.ist.yildiz.edu.tr/dersler/dersnotu/Kum-Analiz.doc>, alındığı
tarih 23.12.2012.
[12] Url-2 <http://home.dei.polimi.it/matteucc/Clustering/tutorial_html>,
tarih 24.12.2012.
alındığı
[13] Shouman, M., Turner, T., Stocker, R. “Applying k-Nearest Neighbour in
Diagnosing Heart Disease Patients” International Journal of Information and
Education Technology, Vol. 2, No. 3, Haziran 2012.
[14] Jain, T., 2012. Heart Disease Prediction Tool. Proje Sunumu.
[15] Peterson, L.E., 2009. K-nearest neighbor. Scholarpedia, 4(2):1883.
[16] Gündüz Öğüdücü, Ş., 2007. Veri Madenciliği Farklı Sınıflandırma Yöntemleri.
Proje Sunumu.
[17] Gündüz Öğüdücü, Ş., 2008. Veri Madenciliği Temel Sınıflandırma Yöntemleri.
Proje Sunumu.
[18] Albayrak, S., 2007. Sınıflama ve Kümeleme Yöntemleri. Proje Sunumu.
[19] Teknomo, K., 2012. K Nearest Neighbors Tutorial. Online Edition.
27
[20] Abu-Mostafa, Y. S. “Learning From Data”, İTÜ Bilim, Sanat ve Teknoloji
Seminerleri, İstanbul, 25 Aralık 2012.
28
Download