Logistic Regresyon ve Gradien Düşüşü ile Python’da Uygulama

Giriş: Logistic Regresyon Nedir?

Logistic regresyon, bir bağımsız değişken (veya birden fazla bağımsız değişken) ile bir ikili yanıt değişkeni arasındaki ilişkinin modellenmesinde yaygın olarak kullanılan bir istatistiksel tekniktir. Genellikle sınıflandırma problemlerinde, yani belirli bir verinin iki veya daha fazla sınıfa ait olup olmadığını tahmin etmede kullanılır. Örneğin, e-postaların spam olup olmadığını tahmin etme veya bir hastanın hastalığa sahip olup olmadığını belirleme gibi uygulamalarda yer alır. Bu yazıda, logistic regresyonun temel kavramlarını ele alacak ve Python kullanarak bir örnek uygulama gerçekleştireceğiz.

Logistic regresyon, çizgi modeli yerine sigmoid fonksiyonu kullanarak verileri sınıflandırırken, bağımsız değişkenlerin doğrusal bir kombinasyonunun olasılığını hesaplarken sınırlı bir değer aralığı sunar. Sigmoid fonksiyonu, bir değerin 0 ile 1 arasında olasılık olarak yorumlanmasını sağlar. Bu nedenle, logistic regresyonun çıktısı, bir olayın gerçekleşme olasılığıdır ve bu olasılık değeri belirli bir sınıfa ait olma ihtimalini ifade eder. Bu bakımdan, modelin doğruluğunu değerlendirmek ve optimize etmek için çeşitli metrikler kullanılır.

Logistic regresyon, özellikle veri bilimi ve makine öğrenmesi alanında sıklıkla kullanılan bir algoritmadır. Python gibi güçlü programlama dillerinde, logistic regresyon uygulamak ve sonuçları analiz etmek için birçok kütüphane mevcuttur. Bu yazıda, Python kullanarak logistic regresyon modelimizi nasıl oluşturacağımızı ve gradyan düşüşü algoritmasını nasıl uygulayacağımızı detaylı bir şekilde inceleyeceğiz.

Python’da Logistic Regresyonun Temelleri

Python kullanarak logistic regresyon uygularken, ilk önce bazı kütüphaneleri yüklememiz gerekiyor. NumPy, pandas ve scikit-learn gibi kütüphaneler, veri analizi ve modelleme süreçlerinde sıklıkla kullanılmaktadır. Bu kütüphaneler, veri setini yükleyip hazırlamak, modelimizi tanımlamak ve sonuçları değerlendirmek için gerekli araçları sağlar.

Tüm bu işlemlere başlamadan önce, ihtiyacımız olan kütüphaneleri kurmamız ve veri setimizi hazırlamamız gerekiyor. Öncelikle veri setimizi pandas kütüphanesi ile yükleyip inceleyelim. Örnek bir iris veri seti kullanabiliriz. Bu veri seti, çiçeklerin çeşitli özellikleri ile türleri arasında ilişki kurmak için kullanılacaktır. Veri setini yükledikten sonra, tipik olarak yapılacak ilk adım verinin keşfi ve ön işleme süreçleridir. Bu aşamada eksik değerlerin kontrol edilmesi, değişkenlerin normalleştirilmesi veya standartlaştırılması gibi işlemler gerçekleştirilir.

Aşağıda, logistic regresyon için gerekli kütüphaneleri yüklemek ve veri setini incelemek için geliştirici bir örnek bulunmaktadır:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

# Veri setini yükle
veri_seti = pd.read_csv('iris.csv')

# Veri setinin ilk birkaç satırını görüntüle
print(veri_seti.head())

Gradyan Düşüşü Algoritması ile Logistic Regresyon

Logistic regresyonun öğrenme süreci, gradyan düşüşü algoritması aracılığıyla gerçekleştirilir. Gradyan düşüşü, verilen bir fonksiyonun en küçük değerini bulmak için kullanılan bir optimizasyon yöntemidir. Logistic regresyon için, doğru tahmin yapabilmek adına model parametrelerinin güncellenmesi gereklidir. Bu güncelleme, hatanın (loss) minimize edilmesi için yapılır ve her iterasyonda model daha doğru sonuçlar vermeye başlar.

Modelin eğitim verileri üzerinden iterasyon yaparak parametre değerlerini güncelleyeceğiz. Aşama aşama ilerleyerek, her adımda parametrelerin (ağırlıkların) nasıl güncelleneceğini ve modelin iyileşmesini gözlemleyeceğiz. Genelde gradyan düşüşü algoritmasında öğrenme oranı (learning rate) olarak adlandırılan bir hiperparametre bulunur. Bu öğrenme oranı, parametrelerin ne kadar hızlı güncelleneceğini belirler. Bu değer iyi seçilmezse modelin hızlıca öğrenmesini engelleyebilir veya çok hızlı öğrenip en iyi değeri yakalayamayabilir.

Aşağıda gradyan düşüşü algoritması ile logistic regresyon modelimizi kurarken dikkat edilmesi gereken bazı önemli adımlar yer almakta:

# Modelin oluşturulması
model = LogisticRegression(solver='lbfgs')

# Modelin eğitilmesi
X_train, X_test, y_train, y_test = train_test_split(veri_seti[['feature1', 'feature2']], veri_seti['target'], test_size=0.2)
model.fit(X_train, y_train)

Model Performansını Değerlendirme

Logistic regresyon modelimizi eğittikten sonra, modelimiz üzerinde bazı testler yaparak performansını değerlendirmemiz gerekiyor. Modelimizin doğruluğunu ölçmek için genellikle doğru sınıflandırma oranı (accuracy) kullanılır. Bunun dışında, hata matrisini (confusion matrix) incelemek, false positives ve false negatives durumlarını gözlemlemek açısından faydalıdır.

Modelin sınıflandırma performansını değerlendirmek için scikit-learn kütüphanesinden yararlanabiliriz. Özellikle ROC eğrisi ve AUC gibi ölçümler, modelimizin genel performansı hakkında önemli bilgiler sağlar. Aşağıda modelimizin performansını değerlendirmek için kullanabileceğimiz bazı temel metrikler bulunmaktadır:

from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# Tahminlerin yapılması
predictions = model.predict(X_test)

# Doğruluk oranının hesaplanması
accuracy = accuracy_score(y_test, predictions)
print('Doğruluk Oranı:', accuracy)

# Hata matrisinin oluşturulması
conf_matrix = confusion_matrix(y_test, predictions)
print('Hata Matrisi:
', conf_matrix)

Sonuç: Logistic Regresyon ile Sonuçların İncelenmesi

Logistic regresyon, veri bilimi alanında oldukça önemli bir yere sahiptir. İkili sınıflandırma problemlerinin çözümünde etkin olarak kullanılabilir ve Python ile birlikte oldukça kolay bir şekilde uygulanabilir. Bu yazıda, logistic regresyonun temel kavramlarını, gradyan düşüşü algoritmasının nasıl işlediğini ve modelin performansını değerlendirmenin yollarını inceledik.

Yazının başında tanımladığımız gibi, logistic regresyon özellikle sınıflandırma problemlerinde etkili sonuçlar verir. Ancak, başarılı bir model oluşturmak için veri setinin kalitesi, parametre ayarlamaları ve özellik mühendisliği gibi unsurlar büyük öneme sahiptir. Farklı hiperparametre ayarlarını deneyerek, modelimizin başarısını artırabiliriz.

Ayrıca, Python’da logistic regresyon uygulaması ile ilgili daha karmaşık modeller ve farklı teknikler keşfetmek, bu alanda daha ileri düzeyde bilgiler edinmemize yardımcı olacaktır. Kendi projelerinizde bu yaklaşımları deneyerek, nakoşan yapay zeka ve veri bilimi dünyasında daha fazla bilgi birikimi edinebilirsiniz. Unutmayın, her etkin modelin gerisinde iyi bir veri ve dikkatli bir analiz süreci yatmaktadır!

Scroll to Top