Giriş
Kümeleme analizi ve sınıflandırma, veri bilimi ve makine öğrenmesi alanında sıkça karşılaştığımız temel görevlerdir. K-en yakın komşu (KNN) algoritması, bu görevler arasında sıkça tercih edilir. KNN, basitliği ve etkili sonuçları sayesinde özellikle başlangıç düzeyindeki projelerde yaygın olarak kullanılmaktadır. Ancak, bir modelin başarısını artırmak ve en iyi parametreleri bulmak için hiperparametre optimizasyonu yapmak oldukça önemlidir. Bu bağlamda, GridSearchCV kütüphanesi, KNN gibi makine öğrenimi algoritmalarının hiperparametrelerini optimize etmek için muazzam bir araçtır.
Bu yazıda, GridSearchCV’nin ne olduğu, KNN ile birlikte nasıl kullanılacağı, nasıl bir model oluşturabileceğiniz ve sonuçları nasıl iyileştirebileceğiniz konusunda detaylı bir rehber sunacağız. Daha da önemlisi, Python kullanarak basit bir örnek üzerinden uygulayarak bu konseptleri pekiştireceğiz. Unutmayın ki, model performansını artırmak için doğru hiperparametreleri bulmak, başarmak istediğiniz hedefin bel kemiğidir.
KNN Algoritmasına Genel Bakış
K-en yakın komşu algoritması, sınıflandırma ve regresyon problemlerinde kullanılan gözetimli bir öğrenme yöntemidir. Temel mantığı, sınıflandırılacak veri noktalarının en yakın komşularının etiketlerini göz önünde bulundurarak karar vermektir. KNN, her veri noktası için belirlenen ‘K’ sayısı kadar komşusunu bulur ve bu komşular arasındaki çoğunluğa göre tahmin yapar. Örneğin, bir veri noktası için K=3 seçildiğinde, en yakın üç komşunun sınıf etiketlerinin çoğunluğuna göre tahmin gerçekleştirilir.
KNN’nin en önemli avantajları arasında, modelin basitliği ve esnekliği yer alır. Aynı zamanda, verinin hangi alanda olduğu ve boyutunun ne kadar olduğu ile az bir etkisi bulunmaktadır. Fakat, büyük veri setleri ile çalışırken hafıza tüketimi ve hesaplama süresi açısından maliyetli olabilir. Bu nedenle, hiperparametre ayarlamaları yaparak modelin performansını artırmak son derece önemlidir.
GridSearchCV Nedir?
GridSearchCV, Scikit-learn kütüphanesinin sunmuş olduğu bir araçtır ve makine öğrenimi modelinin hiperparametrelerini optimize etmek için kullanılır. Modelin performansını artırmak adına belirli hiperparametre setleri üzerinde çapraz doğrulama yaparak en iyi olanları bulmayı amaçlar. Ayrıca, GridSearchCV ile her bir kombinasyon için model eğitilir ve böylece en uygun kombinasyonun tespiti sağlanır.
GridSearchCV, ilk olarak bir hiperparametre ağı tanımlamanız adına bir parametre ızgarası oluşturmanızı gerektirir. Ardından bu ızga üzerindeki tüm kombinasyonları denediği için oldukça kapsamlı bir yaklaşımdır. Örneğin, KNN için ‘K’ değerini tanımlayarak, hangi K değerinin en iyi sonucu verdiğini bulabilirsiniz. Aynı zamanda, mesafe ölçüm kriterlerinin ve ağırlık düzeninin de üzerinde çalışabilirsiniz.
KNN ve GridSearchCV Kullanarak Uygulamalı Örnek
Şimdi, KNN algoritması ve GridSearchCV kullanarak basit bir örnek gerçekleştirelim. İlk önce gerekli kütüphaneleri yükleyelim ve gerekli verileri hazırlayalım. Aşağıdaki kod parçaları, Python ortamında çalıştırılmak üzere düzenlenmiştir:
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, accuracy_score
Bu örnekte, Iris veri setini kullanacağız. Iris veri seti, çiçek türlerini sınıflandırmak için kullanılan klasik bir veri setidir ve üç farklı çiçek türünü içerir. İlk olarak, verileri yükleyelim ve eğitim-test setlerine ayıralım:
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Eğitim ve test setlerini hazırladıktan sonra, KNN sınıflayıcımızı tanımlayalım. Bunun için farklı K değerlerini ve mesafe ölçüm metotlarını deneyerek kapsamlı bir ızgara oluşturalım:
param_grid = {'n_neighbors': [1, 3, 5, 7, 9], 'metric': ['euclidean', 'manhattan']}
knn = KNeighborsClassifier()
grid_search = GridSearchCV(knn, param_grid, cv=5)
grid_search.fit(X_train, y_train)
Burası, GridSearchCV kullanarak modelin eğitimini gerçekleştirdiğimiz kısım. ‘n_neighbors’ ve ‘metric’ anahtarları yardımıyla, belirlediğimiz tüm kombinasyonlar üzerinde sınama yapmamızı sağlıyor. Modeli eğittikten sonra, hangi parametrelerin en iyi sonucu verdiğini bulabiliriz:
print(f