Makine Öğrenmesi
Çizgi grafiği
Çizgi grafiği, zaman içindeki değişimi gösterir.
Çizgi grafiği
Çizgi grafiği sıralı bir değişkene (zaman, epoch, hiperparametre) göre değişimi gösterir. ML'deki en önemli kullanımı öğrenme ve doğrulama eğrileridir:
derinlik = [1, 2, 3, 5, 8]
ax.plot(derinlik, egitim, marker="o", label="eğitim")
ax.plot(derinlik, dogrulama, marker="o", label="doğrulama")
ax.legend()
İki eğrinin ayrıldığı nokta aşırı öğrenmenin başladığı yerdir; grafik bunu tablodan çok daha hızlı gösterir.
Öğrenme eğrisi
learning_curve, eğitim kümesi büyüdükçe skorların nasıl değiştiğini verir. Doğrulama skoru hâlâ artıyorsa daha fazla veri yarar; eğriler birleşmiş ve düşükse daha karmaşık model gerekir:
from sklearn.model_selection import learning_curve
n, tr, va = learning_curve(model, X, y, cv=5, train_sizes=[0.2, 0.5, 1.0])
ax.plot(n, tr.mean(axis=1), label="eğitim")
ax.plot(n, va.mean(axis=1), label="doğrulama")
"Daha çok veri mi, daha iyi model mi?" sorusunun cevabı bu grafiktedir.
Uygulama Öğrenme eğrisi
Iris'te KNeighborsClassifier() için learning_curve çalıştır (cv=5, train_sizes=[0.3, 0.6, 1.0], shuffle=True, random_state=0). Doğrulama ortalamalarını çizgi grafiğine çizip kaydet; eğitim boyutlarını ve doğrulama ortalamalarını (round(3)) alt alta yazdır.
Örnek çözümü göster
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import learning_curve
from sklearn.neighbors import KNeighborsClassifier
X, y = load_iris(return_X_y=True)
n, tr, va = learning_curve(KNeighborsClassifier(), X, y, cv=5, train_sizes=[0.3, 0.6, 1.0], shuffle=True, random_state=0)
fig, ax = plt.subplots()
ax.plot(n, va.mean(axis=1), marker="o")
fig.savefig("ogrenme.png")
print(n)
print(va.mean(axis=1).round(3))
Kendini test et
-
Eğitim eğrisi yükselirken doğrulama eğrisi düşmeye başlıyorsa ne olmaktadır?
- Veri azaldı
- Aşırı öğrenme başlıyor
- Eksik öğrenme
- Model yakınsadı
Cevabı göster
Aşırı öğrenme başlıyor — Model eğitim verisine özgü ayrıntıları öğrenmeye başlamıştır.
-
Noktaları daire işaretiyle göster.
ax.plot(x, y, ____="o")
Cevabı göster
ax.plot(x, y, marker="o")
-
Eğri durumlarını eşleştir.
- Ayrılan eğriler
- Aşırı öğrenme
- Birleşik ve düşük
- Eksik öğrenme
- Doğrulama hâlâ artıyor
- Daha çok veri yarar
- learning_curve
- Veri boyutuna göre skor
Sıradaki ders: Kutu grafiği