Przegląd hiperparametrów

Strojenie hiperparametrów w Pythonie

Alex Scriven

Data Scientist

Czym jest hiperparametr

Hiperparametry:

  • Parametry ustawiane przez użytkownika przed procesem modelowania (jak pokrętła starego radia)
    • Hiperparametry też się „strojuje"!
  • Algorytm nie uczy się tych wartości

Stare radio z pokrętłami

Strojenie hiperparametrów w Pythonie

Hiperparametry w Random Forest

Utwórz prosty estymator Random Forest i wyświetl go:

rf_clf = RandomForestClassifier()
print(rf_clf)

RandomForestClassifier(n_estimators='warn', criterion='gini', max_depth=None, max_features='auto', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_jobs=None, oob_score=False, random_state=None, verbose=0,bootstrap=True, class_weight=None, warm_start=False)

Więcej informacji: http://scikit-learn.org

Strojenie hiperparametrów w Pythonie

Pojedynczy hiperparametr

Weźmy parametr n_estimators.

Typ danych i wartość domyślna:

n_estimators : integer, optional (default=10)

Definicja:

Liczba drzew w lesie.

Strojenie hiperparametrów w Pythonie

Ustawianie hiperparametrów

Ustaw hiperparametry podczas tworzenia estymatora:

rf_clf = RandomForestClassifier(n_estimators=100, criterion='entropy')
print(rf_clf)
RandomForestClassifier(n_estimators=100, criterion='entropy',
            max_depth=None, max_features='auto', max_leaf_nodes=None,
            min_impurity_decrease=0.0, min_impurity_split=None,
            min_samples_leaf=1, min_samples_split=2,
            min_weight_fraction_leaf=0.0, n_jobs=None,
            oob_score=False, random_state=None, verbose=0,bootstrap=True,
            class_weight=None, warm_start=False)
Strojenie hiperparametrów w Pythonie

Hiperparametry w regresji logistycznej

Znajdź hiperparametry regresji logistycznej:

log_reg_clf = LogisticRegression()

print(log_reg_clf) LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, max_iter=100, multi_class='warn', n_jobs=None, penalty='l2', random_state=None, solver='warn', tol=0.0001, verbose=0, warm_start=False)

Ten algorytm ma mniej hiperparametrów do optymalizacji!

Strojenie hiperparametrów w Pythonie

Ważność hiperparametrów

 

Niektóre hiperparametry są ważniejsze od innych.

Niektóre nie wpływają na wydajność modelu:

Dla klasyfikatora Random Forest:

  • n_jobs
  • random_state
  • verbose

Nie wszystkie hiperparametry warto optymalizować

Strojenie hiperparametrów w Pythonie

Random Forest: kluczowe hiperparametry

 

Najważniejsze hiperparametry:

  • n_estimators (wysoka wartość)
  • max_features (różne wartości)
  • max_depth i min_sample_leaf (ważne przy przeuczeniu)
  • (opcjonalnie) criterion

Pamiętaj: to tylko wskazówki

Strojenie hiperparametrów w Pythonie

Jak znaleźć istotne hiperparametry?

 

Przydatne zasoby:

  • Artykuły naukowe
  • Blogi i tutoriale z zaufanych źródeł (np. DataCamp!)
  • Dokumentacja modułu Scikit-Learn
  • Doświadczenie
Strojenie hiperparametrów w Pythonie

Czas na ćwiczenia!

Strojenie hiperparametrów w Pythonie

Preparing Video For Download...