Makine Öğrenmesinde Regresyon ve Sınıflandırma Modelleri ile Model Performansını Optimize Etmenin Temelleri
Regresyon, sürekli sayısal verileri tahmin etmek için kullanılan bir makine öğrenmesi tekniğidir. Bu yöntemde amaç, bağımsız değişkenler arasındaki ilişkiyi analiz ederek bağımlı değişkenin değerini tahmin etmektir. Örneğin, ev fiyatlarını tahmin etmek, bir şirketin gelecekteki gelirlerini öngörmek veya hava sıcaklıklarını tahmin etmek regresyon problemlerine örnek olarak verilebilir. En yaygın regresyon tekniklerinden bazıları doğrusal regresyon, lojistik regresyon ve çoklu regresyondur.
Sınıflandırma, verilerin belirli kategorilere veya sınıflara ayrılması için kullanılan bir makine öğrenmesi yöntemidir. Burada amaç, verilen veriyi analiz ederek doğru sınıfa atamaktır. Sınıflandırma problemlerine örnek olarak e-postaların spam olup olmadığını belirlemek, müşteri davranışlarına göre satın alma olasılığını tahmin etmek veya görsel tanıma sistemlerinde nesneleri tanımlamak verilebilir. Sınıflandırmada kullanılan yaygın algoritmalar arasında Karar Ağaçları, Destek Vektör Makineleri (SVM) ve Naive Bayes (Bayes teoremine dayanan, özelliklerin birbirinden bağımsız olduğunu varsayarak sınıflandırma yapan olasılıksal bir algoritma) bulunur.
fit() yöntemi, makine öğrenmesi modellerinin eğitilmesi için kullanılır. Model, eğitim verilerini ve hedef değerleri kullanarak kendini bu verilere göre ayarlar ve öğrenir. Örneğin, bir regresyon veya sınıflandırma modelinde, fit() çağrıldığında model, eğitim verileriyle öğrendiği kuralları oluşturur.
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
plt.scatter(X_test, y_test, color='blue', label='Gerçek Değerler')
plt.plot(X_test, predictions, color='red', label='Tahmin Edilen Değerler')
plt.xlabel('Özellik')
plt.ylabel('Hedef')
plt.title('Doğrusal Regresyon Modeli')
plt.legend()
plt.show()
fit() yöntemi, eğitim verileriyle (X_train ve y_train) modeli eğitiyor. score() yöntemi, modelin performansını değerlendirmek için kullanılır. Bu yöntem, modelin eğitim veya test verileri üzerinde ne kadar iyi performans gösterdiğini ölçer. Örneğin, sınıflandırma problemlerinde doğruluk oranı, regresyon problemlerinde ise R-kare değeri gibi ölçümlerle sonuç verir.
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression
import numpy as np
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
train_score = model.score(X_train, y_train)
test_score = model.score(X_test, y_test)
print(f"Modelin Eğitim Seti R-kare Değeri: {train_score:.2f}")
print(f"Modelin Test Seti R-kare Değeri: {test_score:.2f}")
fit() yöntemi ile eğitiliyor. score() yöntemi, hem eğitim hem de test setleri üzerinde modelin R-kare (R²) değerini hesaplıyor. R-kare değeri, modelin veri üzerindeki tahmin doğruluğunu gösterir. 1’e ne kadar yakınsa, modelin o kadar iyi olduğunu belirtir. predict() yöntemi, eğitilmiş bir modelin, yeni veya görülmemiş veriler üzerinde tahmin yapmasını sağlar. Model, `fit() ile öğrendiği kurallara dayanarak verilen girdilere karşılık gelen çıktıları tahmin eder. Örneğin, bir sınıflandırma modelinde hangi sınıfa ait olduğunu, bir regresyon modelinde ise beklenen sayısal değeri tahmin eder.
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
plt.scatter(X_test, y_test, color='blue', label='Gerçek Değerler')
plt.scatter(X_test, predictions, color='red', label='Tahminler', marker='x')
plt.xlabel('Özellik')
plt.ylabel('Hedef')
plt.title('Doğrusal Regresyon Modeli Tahminleri')
plt.legend()
plt.show()
print("Gerçek Değerler:", y_test[:5])
print("Tahmin Değerleri:", predictions[:5])
fit() yöntemi ile eğitiliyor. predict() yöntemi, test setindeki verilere karşılık gelen tahminleri yapıyor. Makine öğrenmesi modelleri geliştirilirken doğru dengeyi sağlamak çok önemlidir. Bu bağlamda, underfitting, overfitting ve balanced fitting terimleri, bir modelin veriyi nasıl öğrendiğini ve bu öğrenmenin modelin performansını nasıl etkilediğini ifade eder:
Underfitting, modelin eğitim verilerini yeterince iyi öğrenememesi ve dolayısıyla düşük performans göstermesi durumudur. Model, veriler arasındaki ilişkileri ve desenleri yakalayamadığı için hem eğitim hem de test verisi üzerinde kötü sonuçlar verir. Genellikle modelin karmaşıklığının yetersiz olduğu, çok az veriyle veya çok basit bir modelle çalışıldığı durumlarda ortaya çıkar. Bu tür modeller genellikle doğru tahmin yapamaz.
Overfitting, modelin eğitim verilerini aşırı derecede öğrenmesi, hatta ezberlemesi durumudur. Model, eğitim verisindeki gürültü ve rastgelelikleri de öğrenerek, bu verilere çok iyi uyum sağlar; ancak, yeni ve görülmemiş veriler üzerinde genellikle kötü performans gösterir. Overfitting, modelin karmaşıklığının gereğinden fazla olduğu, çok fazla parametreye sahip modellerin kullanıldığı veya çok az veriyle eğitildiği durumlarda meydana gelir.
Balanced fitting, modelin hem eğitim hem de test verileri üzerinde iyi performans gösterdiği, veriyi aşırı öğrenmeden veya yetersiz öğrenmeden optimum şekilde öğrendiği durumu ifade eder. Dengeli bir model, verinin genel desenlerini doğru bir şekilde yakalar ve genelleme yapma yeteneğine sahiptir. Bu, iyi bir model seçimi, doğru miktarda eğitim verisi kullanımı ve uygun hiperparametre ayarlamaları ile sağlanır.
Bu kavramlar, modelin başarısını artırmak ve doğru tahminler yapmak için modelin karmaşıklığını ve eğitim sürecini optimize etmenin önemini vurgular.