Makine Öğrenmesi — 3: KNN & CART
Makine öğrenmesi denince akılda farklı şeyler canlandığını ve bu farklılığın nedenlerine Makine Öğrenmesi başlığının önceki yazılarında değinilmişti. Makine Öğrenmesi temelde artık bilinen bir kavram olsa da farklı yöntemleri, algoritmaları ve uygulamaları ile uçsuz biz noktaya doğru yol alabiliyor. Bu yazıda Makine Öğrenmesi algoritmalarından, K En Yakın Komşu (K Nearest Neighbors veya KNN) ve Sınıflandırma ve Regresyon Ağaçları (Classification and Regression Trees veya CART) uygulamaları yer buluyor.
Serinin diğer yazılarındaki gibi konunun Python uygulamaları bu yazıda yazı içerisinde değil, en altta ayrı olarak link halinde Jovian üzerinden verilmiştir.
K En Yakın Komşu — K Nearest Neighbors (KNN)
KNN en temel ifade ile gözlemlerin birbirlerine olan benzerlikleri üzerinden tahmin yapan hem regresyon hem sınıflandırma için kullanılabilen bir denetimli öğrenme algoritmasıdır. Örüntü tanıma, veri madenciliği ve saldırı tespitinde yoğun uygulama alanı vardır. Parametrik bir algoritma olmadığı için gerçek hayat senaryolarında yaygın olarak kullanılır. Regresyon problemlerinde en yakın K komşunun ortalaması, sınıflandırma problemlerinde ise en sık temsil edilen etiketi kullanır. İşlem yapılırken komşulara ağırlık atamak başarıyı artıran bir teknik olabilir, bı sayede daha yakın komşuların etkisi daha yüksek olacaktır.
Uzaklık Metrikleri
Makine öğrenmesinde kullanılan farklı uzaklık tipleri vardır. Bunlardan en yaygını Öklid, Manhattan, Minkowski, Chebychev, Kosinüs Benzerliği, Hamming gibi yöntemlerdir.
- Öklid Uzaklığı: En yaygın metriktir ve iki nokta arasındaki gerçek uzaklığı ölçer
- Manhattan Uzaklığı: İki nokta arasındaki koordinat farklarının mutlak değerlerinin toplamı olarak hesaplanır. Özellikle kategorik veriler için kullanışlı bir metriktir.
- Minkowski Uzaklığı: İki nokta arasındaki uzaklığı, noktalar arasındaki x ve y eksenindeki koordinat farklarının mutlak değerlerinin toplamının birinci veya üçüncü derece kuvveti olarak hesaplar. Öklid uzaklığı için p=2 ve Manhattan uzaklığı için p=1 olur.
- Chebychev Uzaklığı: İki nokta arasındaki en fazla uzaklığı ölçer. Örneğin, iki nokta arasındaki en fazla uzaklık, x eksenindeki fark veya y eksenindeki fark olabilir. Herhangi bir veri türü için kullanılabilir ve genellikle kategori verileri arasındaki uzaklıkları ölçmek için kullanılır.
- Kosinüs Benzerliği: İki vektör arasındaki açıyı ölçer. Kosinüs Benzerliği, iki vektör arasındaki açının kosinüsünü kullanarak hesaplanır. Özellikle metin veya sözlük gibi dokümanlar arasındaki benzerliği ölçmek için kullanılır.
- Hamming Uzaklığı: Binary veriler arasındaki farkların sayısını bulur. Genellikle kategori verileri arasındaki farkları ölçmek için kullanılır.
K’nin Belirlenmesi
K bir sayıyı ifade eder ve bu değer kaç komşunun kontrol edileceğini tanımlar. 1 ise en yakın tek komşusu, 3 ise en yakın üç komşusu gibi ifade edilir. Farklı değerler farklı sonuçlar vereceğinden (overfit ve underfit dahil) k belirlenirken dengeliyici olmak önemlidir. Fazla aykırı değer ve gürültü içeren veriler daha yüksek k değerleriyle daha iyi performans gösterecektir. Bu gibi durumlardan yola çıkarak k seçiminin büyük ölçüde veri ile bağlantılı olduğu söylenebilir. K değerinin tek sayı olması önerilir ve çapraz doğrulama (Cross-Validation) en uygun k seçimi için yardımcı olacaktır.
Sınıflandırma ve Regresyon Ağaçları — Classification And Regression Trees (CART)
Karar ağaçlarının gelişmiş yöntemleri birçok makine öğrenmesi yarışmasındaki en yüksek performanslı modelleri oluştururlar. CART bir karar ağacı algoritmasıdır ve bu yöntemlerin temelini oluşturmaktadır. CART’ta temel fikir belirli girdi özelliklerinin değerlerine göre homojen küçük alt kümelere bölmektir. Bu bölme işleminin sonucunda oluşan ağaç yapısı yeni veriler ile tahmin yapmak için kullanılır.
CART Terimleri
- Kök Düğüm (Root Node): Ağacın en üst düğümüdür.
- Yaprak Düğüm (Leaf Node): Ağacın en alt düğümleri, tahmin yapılan noktalarıdır.
- Karar Düğümleri (Decision Node): Verileri belirli kriterlere göre bölen düğümlerdir.
- Ana Düğüm (Parent Node): Bir düğümün üst düğümüdür.
- Alt Düğüm (Child Node): Bir düğümün alt düğümüdür.
- Dal (Branch): Karar düğümlerinden oluşan yoldur.
- Karar Sınırı (Decision Boundary): Verileri bölen kriterlerin belirlendiği noktalardır.
- Kirleticilik (Imputiry): Bir düğüm içindeki veriler arasındaki farklılık derecesidir.
- Budama (Pruning): Ağacın belirli dallarını kesme işlemidir.
Özellik Seçimi
Karar ağaçlarında özellik seçimi oldukça önemlidir. En önemli özellikleri kullanarak veriler arasındaki ilişkileri ve veri setinin nasıl bölündüğünü anlamak daha kolay hale gelir. Özellik seçimi için kullanılan yöntemler arasında Korelasyon Temelli Özellik Seçimi (Correlation Based Feature Selection), Rastgele Ormanlar (Random Forest) and Özyinelemeli Özellik Eleme (Recursive Feature Elimination) gibi metodlar yer alır.
Bölme Yöntemleri
Karar ağaçlarında verileri bölmek için farklı yöntemler vardır. Bunlar eşit frekans, eşit aralık gibi temellere dayanabilir. En iyi bölme yöntemi olarak bölünen verilerdeki homojenlik korunmasıyla elde edilir. Bu yöntem kullanılırken Gini İndeksi veya Entropi Metriği kullanılabilir.
Gini İndeksi
CART algoritması, veri kümesini bir karar ağacına bölmek için Gini Safsızlığını kullanır ve bunu Gini indeksi kriteri yardımıyla alt düğümler için en iyi homojenliği arayarak yapar. Gini her bir sınıfın karesel olasılıkların toplamını saklar. Gini endeksi 0 ile 1 arasında değişir. Değer 0 olduğunda tüm veriler aynı sınıftadır. Değer 1 olduğunda ise veriler arasındaki farklılık en yüksektir. Gini indeksi kullanıldığında, karar ağacı oluştururken, daha az homojen olan düğümler daha önce bölünür. Bu, verilerin daha iyi sınıflandırılmasını sağlar. CART yöntemi Gini indeksi kullanır, veri seti oluştuğunda en az Gini indeksine sahip düğümleri böler ve ağacı oluşturur.
Entropi Metriği
Entropi, Gini gibi veriler arasındaki düzensizliği, farklılık derecesini ölçer. Gini gibi değeri 0 olduğunda tüm verileri aynı sınıfta, değer 1 olduğunda ise veriler arasındaki farklılığı en yüksek seviyede sayar. Gini ve Entropi arasında bazı farklılıklar vardır.
- Entropi kullanıldığında daha az düzenli olan düğümler önce bölünür. Gini indeksi kullanıldığında ise daha az homojen olan düğümler önce bölünür.
- Gini indeksi daha çok kullanımda olurken Entropi ise bazı sınırlı durumlarda kullanılır.
- Gini indeksi için her sınıfın nümerik değerlerinin kareleri toplamının tersi kullanılırken Entropi için her sınıf için logaritmik değerin alınması yapılır.
CART Avantajları ve Dezavantajları
Avantajları
- Anlaşılırlık: Ağaç yapısı, verilerin nasıl bölündüğü ve hangi özelliklerin kullanıldığı açıkça görülebilir.
- Yorumlama: Verilerin nasıl karar verildiği görülebilir. Ağacın nasıl çalıştığı anlaşılır ve daha iyi anlamak için kullanılır.
- Çoklu Değişken Modelleri: CART ağaçları çoklu değişken modelleri oluşturmak için kullanılabilir. Özellikler arasındaki ilişkiler ve veri setinin nasıl bölündüğünü anlamak için kullanışlıdır.
- İki Değerli Sınıflandırma: CART iki değerli (binary) sınıflandırma için kullanılabilir ve çok etkili olabilir.
Dezavantajları
- Aşırı Uyum: CART yöntemi eğitim verileri ile çok iyi başarı sağlayabilirken aşırı uyuma düşebilir.
- Lineer Olmayan İlişkiler: CART yöntemi, veriler arasındaki ilişkilerin lineer olmasını gerektirir. Bu nedenle, lineer olmayan ilişkileri modellemek için başka yöntemler kullanılması gerekir.
- Duyarlılık: Veri setinin örneklemleme yapısına ve kullanılan bölme kriterlerine duyarlıdır. Bu nedenle, veri seti ve bölme kriterleri değiştiğinde, ağacın yapısı ve tahminler de değişebilir.
- Sadece Sayısal Veriler: Sadece sayısal verilerle çalışabilir, kategorik verileri doğrudan kullanamaz. Kategorik verilerin kullanımı için önceden dönüştürme yapmak gerekir.
- Kaynaklar: Büyük veri setlerinde bilgisayar kaynaklarını çok fazla tüketebilir.
Aşırı Öğrenmeyi Engellemek
- Budama (Pruning) işlemi ağacın boyutunun azaltılması ve modelin daha genelleştirilmesini sağlar.
- Çapraz Doğrulama (Cross-Validation): Eğitim ve testte farklı veri kombinasyonları kullanılarak test işlemi gerçekleştirilir.
- Düzenleme (Regularization): Ağacın büyüklüğünü sınırlamak için kullanılır. Budama işlemi gibi ağacın daha genel bir yapıya bürünmesini sağlar.
- Gelişmiş Yöntemler: Bagging, Random Forest, AdaBoost gibi daha gelişmiş yöntemleri kullanmak.