Menu
CoddyTech

Eksik ve Aşırı Öğrenme

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 32 / 58.

Makine öğrenmesinin en büyük tuzağıyla karşılaştın: k = 1 ve derin ağaçları ezberledin. Bu bölüm tuzağa adını koyuyor ve şöyle grafiklerle sona eriyor:

Derinliğe göre bir ağacın eğitim ve doğrulama doğruluğu: eğitim 1.0'a doğru yükselirken doğrulama doğruluğu 3. derinlikte zirve yapıp düşer. Kesikli çizgi seçilen derinliği, kırmızı yıldız ise testteki tek skoru olan 0.82'yi gösterir.

Tuzak: Farklı miktarlarda sulanmış 15 fesleğen bitkisi ve hasatlarına uydurulmuş üç eğri:

Günlük su miktarına göre, gri noktalarla gösterilen 15 eğitim bitkisinin ve siyah karelerle gösterilen 5 test bitkisinin yaprak hasatları. Düz mavi çizgi tümseği yakalayamaz, 3. derece yeşil eğri onu izler, 12. derece kırmızı eğri ise noktalar arasında çılgınca salınır

1. derece fazla basit: yetersiz öğrenme. 12. derece, her eğitim noktasından geçerek aralarında gidip gelir: aşırı öğrenme; ezberler, öğrenmez.

np.polyval(coefs, x) bir eğrinin yüksekliklerini verir. Eğitim ve test RMSE değerleri, gram cinsinden:

for degree in [1, 3, 12]:
    coefs = np.polyfit(water_train, grams_train, degree)
    train_err = np.sqrt(mean_squared_error(grams_train, np.polyval(coefs, water_train)))
    test_err = np.sqrt(mean_squared_error(grams_test, np.polyval(coefs, water_test)))
    print(degree, round(train_err), round(test_err))

Şunu yazdırır:

1 156 138
3 15 19
12 9 173

Aşırı uyumun işareti: küçük eğitim hatası, büyük test hatası.

challenge icon

Görev

Orta

Bir rüzgâr çiftliği, bir türbinin gücünü rüzgâr hızına göre modeller. Başlangıç kodu 24 ölçümü böler ve max_degree değerini okur.

  1. 1'den max_degree değerine kadar her derece için eğitim satırları üzerinde bir eğri uydur; eğitim ve test RMSE değerlerini tam kW cinsinden yazdır.
  2. Test hatası eğitim hatasının iki katından fazla olan ilk dereceyi ya da No overfitting up to degree ve max_degree değerlerini yazdır.

Başka bir türbin ve 7 için:

Degree 1: train 117 kW, test 172 kW
Degree 2: train 115 kW, test 182 kW
Degree 3: train 64 kW, test 85 kW
Degree 4: train 63 kW, test 79 kW
Degree 5: train 47 kW, test 67 kW
Degree 6: train 47 kW, test 65 kW
Degree 7: train 23 kW, test 85 kW
Overfitting starts at degree 7

Kendin dene

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

max_degree = int(input())

# Aşağıdaki satırları değiştirmeyin: bir rüzgâr türbininin rüzgâr hızı (m/s) ve gücü (kW)
speed = np.array([3.8, 4.3, 5.1, 5.6, 5.6, 6.7, 6.8, 7.2, 7.8, 8.5, 8.9, 9.1,
                  10.2, 10.9, 11.4, 11.9, 12.2, 12.4, 12.6, 13.2, 13.9, 14.4, 15.5, 16.5])
power = np.array([0, 85, 179, 22, 17, 126, 255, 273, 419, 545, 612, 665,
                  913, 1120, 1114, 1227, 1299, 1400, 1293, 1329, 1396, 1493, 1461, 1552])
speed_train, speed_test, power_train, power_test = train_test_split(
    speed, power, test_size=0.25, random_state=0)

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimli Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi