Model karmaşıklığı ve aşırı öğrenme

Python'da Machine Learning İş Akışları Tasarlama

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Model karmaşıklığı nedir?

RandomForestClassifier() ek argümanlar alır; örn. max_depth:

help(RandomForestClassifier)
Help on class RandomForestClassifier in module sklearn.ensemble.forest:
...
 |  max_depth : integer or None, optional (default=None)
 |      The maximum depth of the tree. If None, then nodes are expanded until
 |      all leaves are pure or until all leaves contain less than
 |      min_samples_split samples.
Python'da Machine Learning İş Akışları Tasarlama
m2 = RandomForestClassifier(
    max_depth=2)
m2.fit(X_train, y_train)

m2.estimators_[0]

Derinliği 2 olan bir karar ağacı.

m4 = RandomForestClassifier(
    max_depth=4)
m4.fit(X_train, y_train)

m4.estimators_[0]

Derinliği 4 olan bir karar ağacı.

Python'da Machine Learning İş Akışları Tasarlama

Standart uygulama veriyi eğitim, test (veya geliştirme) ve doğrulama (veya ayrılmış) olarak bölmektir.

Python'da Machine Learning İş Akışları Tasarlama

Çapraz doğrulamada eğitim-test bölmesi birçok kez yapılır. Veri kümesi N parçaya ayrılır; her seferinde farklı N-1 parça eğitim, kalan bir parça test için kullanılır.

Python'da Machine Learning İş Akışları Tasarlama

Çapraz doğrulama

cross_val_score() ile doğruluğu değerlendirin:

from sklearn.model_selection import cross_val_score

cross_val_score(RandomForestClassifier(), X, y)
array([0.7218 , 0.7682, 0.7866])
numpy.mean(cross_val_score(RandomForestClassifier(), X, y))
0.7589
Python'da Machine Learning İş Akışları Tasarlama

Model karmaşıklığını ayarlama

GridSearchCV() ile ağaç derinliğini ayarlayın:

from sklearn.model_selection import GridSearchCV
param_grid = {'max_depth':[5,10,20]}
grid = GridSearchCV(RandomForestClassifier(), param_grid)
grid.fit(X,y)
grid._best_params
{'max_depth': 10}
Python'da Machine Learning İş Akışları Tasarlama

Örnek içi doğruluk, maksimum derinlik 3 için 0.7'den başlar ve derinlik 5'ten 30'a çıkarken neredeyse 1.0'a yükselir.

Python'da Machine Learning İş Akışları Tasarlama

Örnek dışı doğruluk da 0.7'den başlar, derinlik 10 için 0.75'te zirve yapar ve daha büyük derinliklerde yeniden 0.7'ye döner.

Python'da Machine Learning İş Akışları Tasarlama

Derinlik 10'dan sonrası kırmızıyla gösterilir; aşırı öğrenme gerçekleşmektedir.

Python'da Machine Learning İş Akışları Tasarlama

Daha karmaşık her zaman daha iyi değildir!

Python'da Machine Learning İş Akışları Tasarlama

Preparing Video For Download...