Oppikaa tekoälyä Pythonilla · Oppitunti

Haku ruudukolla ja satunnaishaku

GridSearchCV, RandomizedSearchCV, param_gridin suunnittelu ja uudelleensovitus parhailla parametreilla.

Oppitunti 3/413 vaihetta

Haku ruudukolla ja satunnaishaku on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Miksi hyperparametreja säädetään

Malleilla on hyperparametreja (kuten max_depth tai C), joita ei opita datasta vaan jotka asetetaan ennen koulutusta. Oikeat arvot voivat parantaa suorituskykyä huomattavasti, joten etsimme niitä järjestelmällisesti.

Manuaalinen säätö on altis virheille

Arvojen kokeileminen käsin on hidasta, ja tuloksiin on helppo vaikuttaa tiedostamatta. Automatisoitu haku yhdessä ristiinvalidoinnin kanssa arvioi jokaisen ehdokkaan tasapuolisesti ja löytää parhaan yhdistelmän toistettavasti.

GridSearchCV:n perusteet

GridSearchCV kokeilee jokaista yhdistelmää parametrihilassa ja pisteyttää jokaisen ristiinvalidoinnilla. Se on kattava ja takaa hilan parhaan vaihtoehdon.

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)

Yhdistelmien räjähdysmäinen kasvu

Hilahaun kustannus kasvaa kaikkien vaihtoehtomäärien tulon ja jakojen lukumäärän mukaan. Kolmella parametrilla, joilla kullakin on 5 arvoa, ja 5-jakoisella ristiinvalidoinnilla sovituksia tarvitaan 5*5*5*5 = 625. Hilat käyvät nopeasti kalliiksi.

Pisteytys GridSearchCV:ssä

scoring-parametri valitsee optimoitavan metriikan. Epätasapainoisella datalla valitkaa oletusarvoisen accuracy-metriikan sijaan f1 tai roc_auc.

from sklearn.model_selection import GridSearchCV

gs = GridSearchCV(
    RandomForestClassifier(),
    param_grid,
    cv=5,
    scoring="roc_auc",
)
gs.fit(X, y)

Rinnakkaistaminen n_jobs-parametrilla

Jokainen ehdokassovitus on riippumaton, joten asettamalla n_jobs=-1 voitte suorittaa ne kaikilla suorittimen ytimillä. Tämä lyhentää suurten hilojen suoritusaikaa huomattavasti.

from sklearn.model_selection import GridSearchCV

gs = GridSearchCV(
    RandomForestClassifier(),
    param_grid,
    cv=5,
    n_jobs=-1,
    verbose=1,
)

Parhaiden tulosten tarkastelu

Kun sovitus on valmis, tarkastelkaa voittavan yhdistelmän tietoja kohteesta best_params_, sen ristiinvalidoinnin pistemäärää kohteesta best_score_ ja ennustamiseen valmista uudelleensovitettua mallia kohteesta best_estimator_.

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)

Kaikkien tulosten tarkastelu

cv_results_ on dict (joka sopii erinomaisesti DataFrameksi) ja näyttää jokaisen ehdokkaan pisteet ja sijoituksen. Sen avulla voitte ymmärtää, millä parametreilla on merkitystä ja kuinka vakaita pisteet ovat.

import pandas as pd

results = pd.DataFrame(gs.cv_results_)
print(results[["params", "mean_test_score", "rank_test_score"]].head())

RandomizedSearchCV

Kun hakuavaruus on valtava, RandomizedSearchCV poimii kiinteän määrän satunnaisia yhdistelmiä kaikkien yhdistelmien sijaan. Budjettia hallitaan parametrilla 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)

Miksi satunnaishaku voittaa usein

Monissa ongelmissa vain muutamalla hyperparametrilla on todella merkitystä. Satunnaishaku tutkii näitä tärkeitä ulottuvuuksia tehokkaammin kuin jäykkä hila ja löytää hyviä ratkaisuja huomattavasti pienemmällä kokeilumäärällä.

Hila vai satunnaishaku: ohjeita

Käyttäkää GridSearchCV:tä, kun ehdokkaita on pieni ja diskreetti joukko. Käyttäkää RandomizedSearchCV:tä suurissa tai jatkuvissa hakuavaruuksissa, joissa asetatte n_iter-budjetin. Molemmat sovittavat parhaan mallin automaattisesti uudelleen, kun refit=True.

Pikatesti

Testatkaa hyperparametrihakua koskevat tietonne.

Kertaus

Kertaus: GridSearchCV testaa tyhjentävästi jokaisen yhdistelmän param_grid-parametrissa, ja kustannukset kasvavat räjähdysmäisesti hilan koon mukana. RandomizedSearchCV poimii n_iter yhdistelmää suurista hakuavaruuksista. Asettakaa scoring käyttämällenne metriikalle ja n_jobs=-1 nopeuttamaan hakua. Sovituksen jälkeen tarkastelkaa kohteita best_params_, best_score_ ja best_estimator_.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Haku ruudukolla ja satunnaishaku” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Haku ruudukolla ja satunnaishaku”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Haku ruudukolla ja satunnaishaku”?

GridSearchCV, RandomizedSearchCV, param_gridin suunnittelu ja uudelleensovitus parhailla parametreilla. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Haku ruudukolla ja satunnaishaku”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Ristiinvalidoinnin strategiat
  2. Luokittelumittarit perusteellisesti
  3. Haku ruudukolla ja satunnaishaku
  4. Bayesilainen optimointi Optunalla
← Takaisin: Oppikaa tekoälyä Pythonilla