Wyszukiwanie siatkowe i losowe
GridSearchCV, RandomizedSearchCV, projektowanie param_grid i ponowne dopasowanie dla najlepszych parametrów.
Wyszukiwanie siatkowe i losowe to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Dlaczego dostrajać hiperparametry
Modele mają hiperparametry (takie jak max_depth lub C), których nie uczą się na podstawie danych, lecz które ustawia się przed trenowaniem. Właściwe wartości mogą znacznie poprawić wydajność, dlatego wyszukuje się je w sposób systematyczny.
Ręczne dostrajanie jest podatne na błędy
Ręczne wypróbowywanie wartości jest powolne i łatwo prowadzi do stronniczości. Automatyczne wyszukiwanie połączone z walidacją krzyżową rzetelnie ocenia każdego kandydata i powtarzalnie znajduje najlepszą kombinację.
Podstawy GridSearchCV
GridSearchCV wypróbowuje każdą kombinację z siatki parametrów, oceniając ją za pomocą walidacji krzyżowej. Jest wyczerpujące i gwarantuje znalezienie najlepszego punktu w siatce.
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {
"n_estimators": [100, 200, 300],
"max_depth": [4, 8, None],
}
gs = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
gs.fit(X, y)Eksplozja kombinatoryczna
Koszt przeszukiwania siatkowego rośnie wraz z iloczynem liczby wszystkich opcji pomnożonym przez liczbę podziałów. Trzy parametry z 5 wartościami każdy przy 5-krotnej walidacji krzyżowej dają 5*5*5*5 = 625 dopasowań. Siatki szybko stają się kosztowne.
Ocena w GridSearchCV
Parametr scoring wybiera metrykę, która ma być optymalizowana. W przypadku niezrównoważonych danych należy wybrać f1 lub roc_auc zamiast domyślnej dokładności.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
scoring="roc_auc",
)
gs.fit(X, y)Równoległe działanie z n_jobs
Dopasowanie każdego kandydata jest niezależne, dlatego należy ustawić n_jobs=-1, aby uruchamiać je na wszystkich rdzeniach procesora. Znacznie skraca to czas rzeczywisty obliczeń dla dużych siatek.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
n_jobs=-1,
verbose=1,
)Odczytywanie najlepszych wyników
Po dopasowaniu należy sprawdzić best_params_, aby poznać zwycięską kombinację, best_score_, aby poznać jej wynik walidacji krzyżowej, oraz best_estimator_, aby uzyskać ponownie dopasowany model gotowy do predykcji.
gs.fit(X, y)
print("Best params:", gs.best_params_)
print("Best CV score:", gs.best_score_)
best_model = gs.best_estimator_
best_model.predict(X_new)Analiza wszystkich wyników
cv_results_ to słownik (doskonale nadający się do użycia jako DataFrame), który pokazuje wynik i pozycję każdego kandydata. Należy go użyć, aby zrozumieć, które parametry mają znaczenie i jak stabilne są wyniki.
import pandas as pd
results = pd.DataFrame(gs.cv_results_)
print(results[["params", "mean_test_score", "rank_test_score"]].head())RandomizedSearchCV
Gdy przestrzeń wyszukiwania jest ogromna, RandomizedSearchCV losuje ustaloną liczbę kombinacji zamiast sprawdzać wszystkie. Budżet kontroluje się za pomocą n_iter.
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
param_dist = {
"n_estimators": randint(100, 500),
"max_depth": randint(3, 20),
}
rs = RandomizedSearchCV(
RandomForestClassifier(), param_dist,
n_iter=30, cv=5, random_state=0,
)
rs.fit(X, y)Dlaczego przeszukiwanie losowe często wygrywa
W wielu problemach znaczenie ma naprawdę tylko kilka hiperparametrów. Przeszukiwanie losowe bada te istotne wymiary wydajniej niż sztywna siatka, znajdując dobre rozwiązania przy znacznie mniejszej liczbie prób.
Siatka czy losowość: wskazówki
Należy użyć GridSearchCV dla małego, dyskretnego zbioru kandydatów. RandomizedSearchCV należy wybrać dla dużych lub ciągłych przestrzeni, w których ustawia się budżet n_iter. Oba narzędzia automatycznie ponownie dopasowują najlepszy model, gdy refit=True.
Szybki sprawdzian
Proszę sprawdzić swoją wiedzę na temat wyszukiwania hiperparametrów.
Podsumowanie
Podsumowanie: GridSearchCV wyczerpująco sprawdza każdą kombinację w param_grid, a koszt rośnie wykładniczo wraz z rozmiarem. RandomizedSearchCV losuje n_iter kombinacji dla dużych przestrzeni. Należy ustawić scoring zgodnie z wybraną metryką oraz n_jobs=-1, aby przyspieszyć obliczenia, a po dopasowaniu odczytać best_params_, best_score_ i best_estimator_.
Często zadawane pytania
Czy lekcja „Wyszukiwanie siatkowe i losowe” jest bezpłatna?
Tak — pełny tekst „Wyszukiwanie siatkowe i losowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Wyszukiwanie siatkowe i losowe”?
GridSearchCV, RandomizedSearchCV, projektowanie param_grid i ponowne dopasowanie dla najlepszych parametrów. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wyszukiwanie siatkowe i losowe”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Strategie walidacji krzyżowej
- Dogłębne omówienie metryk klasyfikacji
- Wyszukiwanie siatkowe i losowe
- Optymalizacja bayesowska z Optuna