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:
Tuzak: Farklı miktarlarda sulanmış 15 fesleğen bitkisi ve hasatlarına uydurulmuş üç eğri:
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 173Aşırı uyumun işareti: küçük eğitim hatası, büyük test hatası.
Görev
OrtaBir 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'den
max_degreedeğ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. - Test hatası eğitim hatasının iki katından fazla olan ilk dereceyi ya da
No overfitting up to degreevemax_degreedeğ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 7Kendin 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
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
1İlk Modeliniz
Örneklerden ÖğrenmeEğitim ve Test KümeleriUydurma ve Tahmin EtmeBir Modeli PuanlamaÖzet: Tohum Sınıflandırıcı4Lojistik Regresyon
Evet-Hayır TahminleriKarar EşiğiKanıt Olarak AğırlıklarBirden Fazla SınıfÖzet: Spam Filtresi7Aşırı Öğrenme
Eksik ve Aşırı ÖğrenmeÖğrenme EğrileriDüzenlileştirmeDoğrulama KümeleriÖzet: Bir Ağacı Ayarlama2En Yakın Komşular
k-NN Nasıl Karar Verirk'yi SeçmekKarar SınırlarıKomşular İçin ÖlçeklemeÖzet: Şarap Komşuları5Sınıflandırıcıları Değerlendirme
Karmaşıklık MatrisiKesinlik ve DuyarlılıkF1 SkoruDengesiz SınıflarROC EğrileriÖzet: Tarama Testi8Çapraz Doğrulama
K-Katlı DoğrulamaModelleri Adil Bir Şekilde KarşılaştırmaIzgara AramasıÖzet: Kaykay Tamiri11Proje: Penguen Türleri
Penguenlerle TanışınVerileri HazırlayınBir Model SeçinEn İyisini AyarlayınModeli Yayına AlınKendi başına pratik yap: Online Python derleyicisi