Vaihtuvuusennuste käyttämällä Amazon SageMakerin sisäänrakennettuja taulukkoalgoritmeja LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Vaihtuvuusennuste käyttämällä Amazon SageMakerin sisäänrakennettuja taulukkoalgoritmeja LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular

Amazon Sage Maker tarjoaa sviitin sisäänrakennetut algoritmit, valmiiksi koulutetut mallitja valmiiksi rakennetut ratkaisumallit auttaa datatieteilijöitä ja koneoppimisen (ML) harjoittajia pääsemään nopeasti alkuun ML-mallien koulutuksessa ja käyttöönotossa. Näitä algoritmeja ja malleja voidaan käyttää sekä ohjattuun että ohjaamattomaan oppimiseen. Ne voivat käsitellä erityyppisiä syöttötietoja, mukaan lukien taulukko, kuva ja teksti.

Asiakkaiden vaihtuvuus on monien yritysten kohtaama ongelma telekommunikaatiosta pankkiin, jossa asiakkaat tyypillisesti menetetään kilpailijoille. Yrityksen edun mukaista on pitää olemassa olevia asiakkaita mieluummin kuin hankkia uusia asiakkaita, koska uusien asiakkaiden houkutteleminen maksaa yleensä huomattavasti enemmän. Matkapuhelinoperaattoreilla on historiallisia ennätyksiä, joissa asiakkaat jatkoivat palvelun käyttöä tai lopulta vaikeutuivat. Voimme käyttää näitä historiallisia tietoja matkapuhelinoperaattorin vaihtumisesta ML-mallin kouluttamiseen. Tämän mallin koulutuksen jälkeen voimme välittää mielivaltaisen asiakkaan profiilitiedot (samat profiilitiedot, joita käytimme mallin kouluttamisessa) mallille ja antaa sen ennustaa, aikooko asiakas vaihtua vai ei.

Tässä postauksessa koulutamme ja otamme käyttöön neljä äskettäin julkaistua SageMaker-algoritmia—LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular — vaihtuvuusennustetietojoukossa. Käytämme SageMaker automaattinen mallin viritys (työkalu hyperparametrien optimointiin) löytääksesi parhaat hyperparametrit kullekin mallille ja vertaillaksesi niiden suorituskykyä holdout-testitietojoukossa valitaksesi optimaalisen.

Voit myös käyttää tätä ratkaisua mallina etsiäksesi huippuluokan taulukkoalgoritmeja ja käyttää hyperparametrien optimointia löytääksesi parhaan kokonaismallin. Voit helposti korvata esimerkkitietojoukon omallasi ratkaistaksesi sinua kiinnostavia todellisia liiketoimintaongelmia. Jos haluat hypätä suoraan SageMaker SDK -koodiin, jonka käymme läpi tässä viestissä, voit katsoa seuraavaa näyte Jupyter-muistikirjasta.

Sisäänrakennettujen SageMaker-algoritmien edut

Kun valitset algoritmin tietyntyyppiselle ongelmalle ja tiedollesi, sisäänrakennetun SageMaker-algoritmin käyttö on helpoin vaihtoehto, koska sillä on seuraavat suuret edut:

  • Matala koodaus – Sisäänrakennetut algoritmit vaativat vähän koodausta aloittaakseen kokeiden suorittamisen. Ainoat syötteet, jotka sinun on annettava, ovat tiedot, hyperparametrit ja laskentaresurssit. Näin voit suorittaa kokeiluja nopeammin ja vähentää tulosten ja koodimuutosten seurantakustannuksia.
  • Tehokkaat ja skaalautuvat algoritmien toteutukset – Sisäänrakennetut algoritmit sisältävät rinnakkaisuuden useiden laskentaesiintymien välillä ja GPU-tuen heti valmiina kaikille soveltuville algoritmeille. Jos sinulla on paljon dataa mallin kouluttamiseen, useimmat sisäänrakennetut algoritmit voivat helposti skaalata kysyntää vastaavaksi. Vaikka sinulla olisi jo esikoulutettu malli, saattaa silti olla helpompaa käyttää sen seurausta SageMakerissa ja syöttää jo tuntemasi hyperparametrit sen sijaan, että siirrät sen ja kirjoitat harjoitusskriptin itse.
  • Läpinäkyvyys – Olet tuloksena olevien malliesineiden omistaja. Voit ottaa tämän mallin ja ottaa sen käyttöön SageMakerissa useille erilaisille päättelymalleille (katso kaikki käytettävissä olevat käyttöönottotyypit) ja helppo päätepisteiden skaalaus ja hallinta, tai voit ottaa sen käyttöön missä tahansa muualla sitä tarvitset.

Tietojen visualisointi ja esikäsittely

Ensin keräämme asiakasvaihtuvuustietojoukon. Se on suhteellisen pieni tietojoukko, jossa on 5,000 21 tietuetta, ja jokainen tietue käyttää XNUMX attribuuttia kuvaamaan tuntemattoman yhdysvaltalaisen matkapuhelinoperaattorin asiakkaan profiilia. Attribuutit vaihtelevat Yhdysvaltain osavaltiosta, jossa asiakas asuu, asiakaspalveluun soittamiensa puheluiden määrään ja päiväpuheluista laskuttaviin kustannuksiin. Yritämme ennustaa, vaihtuuko asiakas vai ei, mikä on binäärinen luokitteluongelma. Seuraavassa on osa ominaisuuksista, jotka näyttävät, ja otsikko on viimeinen sarake.

Seuraavassa on joitain oivalluksia jokaisesta sarakkeesta, erityisesti yhteenvetotilastoista ja valittujen ominaisuuksien histogrammista.

Vaihtuvuusennuste käyttämällä Amazon SageMakerin sisäänrakennettuja taulukkoalgoritmeja LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Sitten esikäsittelemme tiedot, jaamme ne koulutus-, validointi- ja testisarjoiksi ja lataamme tiedot kohteeseen Amazonin yksinkertainen tallennuspalvelu (Amazon S3).

Taulukkoalgoritmien automaattinen mallin viritys

Hyperparametrit ohjaavat taustalla olevien algoritmidemme toimintaa ja vaikuttavat mallin suorituskykyyn. Nämä hyperparametrit voivat olla kerrosten lukumäärä, oppimisnopeus, painon vaimenemisnopeus ja keskeyttäminen hermoverkkopohjaisissa malleissa tai lehtien lukumäärä, iteraatiot ja puun enimmäissyvyys puuryhmämalleissa. Parhaan mallin valitsemiseksi käytämme SageMakerin automaattista mallin viritystä jokaiseen neljään koulutettuun SageMaker-taulukkoalgoritmiin. Sinun tarvitsee vain valita viritettävät hyperparametrit ja kunkin tutkittavan parametrin alue. Lisätietoja automaattisesta mallin virittämisestä on kohdassa Amazon SageMaker Automaattinen mallin säätö: Koneoppimisen käyttäminen koneoppimiseen or Amazon SageMaker automaattinen mallin viritys: Skaalautuva gradienttiton optimointi.

Katsotaanpa, miten tämä toimii käytännössä.

LightGBM

Aloitamme suorittamalla automaattisen mallin virityksen LightGBM:llä ja mukautamme tämän prosessin muihin algoritmeihin. Kuten postauksessa selitetään Amazon SageMaker JumpStart -mallit ja -algoritmit ovat nyt saatavilla API:n kautta, seuraavat artefaktit vaaditaan valmiiksi rakennetun algoritmin kouluttamiseen SageMaker SDK:n kautta:

  • Sen kehyskohtainen konttikuva, joka sisältää kaikki koulutusta ja päätelmiä varten vaadittavat riippuvuudet
  • Valitun mallin tai algoritmin koulutus- ja päättelyskriptit

Haemme ensin nämä esineet, jotka riippuvat model_id (lightgbm-classification-model tässä tapauksessa) ja versio:

from sagemaker import image_uris, model_uris, script_uris
train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
training_instance_type = "ml.m5.4xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(region=None,
                                      framework=None,
                                      model_id=train_model_id,
                                      model_version=train_model_version,
                                      image_scope=train_scope,
                                      instance_type=training_instance_type,
                                      )                                      
# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=train_model_id,
                                        model_version=train_model_version,
                                        script_scope=train_scope
                                        )
# Retrieve the pre-trained model tarball (in the case of tabular modeling, it is a dummy file)
train_model_uri = model_uris.retrieve(model_id=train_model_id,
                                      model_version=train_model_version,
                                      model_scope=train_scope)

Sitten saamme LightGBM:n oletushyperparametrit, asetamme osan niistä valittuihin kiinteisiin arvoihin, kuten vahvistuskierrosten lukumäärään ja validointitietojen arviointimetriikkaan, ja määritämme arvoalueet, joista haluamme etsiä muita. Käytämme SageMaker-parametreja ContinuousParameter ja IntegerParameter tätä varten:

from sagemaker import hyperparameters
from sagemaker.tuner import ContinuousParameter, IntegerParameter, HyperparameterTuner

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=train_model_id,
                                                   model_version=train_model_version
                                                   )
# [Optional] Override default hyperparameters with custom values
hyperparameters["num_boost_round"] = "500"
hyperparameters["metric"] = "auc"

# Define search ranges for other hyperparameters
hyperparameter_ranges_lgb = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

Lopuksi luomme a SageMaker estimaattori, syötä se a HyperarameterTuner, ja aloita hyperparametrien viritystyö painikkeella tuner.fit():

from sagemaker.estimator import Estimator
from sagemaker.tuner import HyperParameterTuner

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
)

tuner = HyperparameterTuner(
            tabular_estimator,
            "auc",
            hyperparameter_ranges_lgb,
            [{"Name": "auc", "Regex": "auc: ([0-9.]+)"}],
            max_jobs=10,
            max_parallel_jobs=5,
            objective_type="Maximize",
            base_tuning_job_name="some_name",
        )

tuner.fit({"training": training_dataset_s3_path}, logs=True)

- max_jobs parametri määrittää kuinka monta työtä yhteensä suoritetaan automaattisessa mallin viritystyössä, ja max_parallel_jobs määrittää, kuinka monta samanaikaista koulutustyötä tulee aloittaa. Määrittelemme myös tavoitteen “Maximize” mallin AUC (käyrän alla oleva pinta-ala). Voit sukeltaa syvemmälle käytettävissä oleviin parametreihin, jotka altistuvat HyperParameterTuner, viitata Hyperparametri Viritin.

Tutustu muistikirjan näyte nähdäksemme, miten edetään tämän mallin käyttöönottamiseksi ja arvioimiseksi testijoukossa.

CatBoost

Hyperparametrien viritysprosessi CatBoost-algoritmissa on sama kuin aiemmin, vaikka meidän on noudettava mallin artefaktit tunnuksella catboost-classification-model ja muuta hyperparametrien aluevalintaa:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["iterations"] = "500"
hyperparameters["eval_metric"] = "AUC"

# Define search ranges for other hyperparameters
hyperparameter_ranges_cat = {
    "learning_rate": ContinuousParameter(0.00001, 0.1, scaling_type="Logarithmic"),
    "iterations": IntegerParameter(50, 1000),
    "depth": IntegerParameter(1, 10),
    "l2_leaf_reg": IntegerParameter(1, 10),
    "random_strength": ContinuousParameter(0.01, 10, scaling_type="Logarithmic"),
}

TabTransformer

TabTransformer-mallin hyperparametrien viritysprosessi on sama kuin aiemmin, vaikka meidän on noudettava mallin artefaktit tunnuksella pytorch-tabtransformerclassification-model ja muuta hyperparametrien aluevalintaa.

Muutamme myös koulutusta instance_type että ml.p3.2xlarge. TabTransformer on äskettäin Amazon-tutkimuksesta johdettu malli, joka tuo syvän oppimisen voiman taulukkotietoihin Transformer-malleja käyttäen. Tämän mallin kouluttamiseksi tehokkaasti tarvitsemme GPU:n tukeman esiintymän. Lisätietoja on kohdassa Tuo syvän oppimisen voima taulukoiden tietoihin.

from sagemaker import hyperparameters
from sagemaker.tuner import CategoricalParameter

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["n_epochs"] = 40  # The same hyperparameter is named as "iterations" for CatBoost
hyperparameters["patience"] = 10

# Define search ranges for other hyperparameters
hyperparameter_ranges_tab = {
    "learning_rate": ContinuousParameter(0.001, 0.01, scaling_type="Auto"),
    "batch_size": CategoricalParameter([64, 128, 256, 512]),
    "attn_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "mlp_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "input_dim": CategoricalParameter(["16", "32", "64", "128", "256"]),
    "frac_shared_embed": ContinuousParameter(0.0, 0.5, scaling_type="Auto"),
}

AutoGluon-Tabular

AutoGluonin tapauksessa emme suorita hyperparametrien viritystä. Tämä johtuu suunnittelusta, koska AutoGluon keskittyy useiden mallien yhdistämiseen järkevällä hyperparametrivalinnalla ja niiden pinoamiseen useisiin kerroksiin. Tämä on tehokkaampaa kuin yhden mallin opettaminen täydellisellä hyperparametrivalikoimalla ja on myös laskennallisesti halvempaa. Katso lisätietoja AutoGluon-Tabular: Vankka ja tarkka AutoML strukturoidulle tiedolle.

Siksi vaihdamme model_id että autogluon-classification-ensemble, ja korjaa vain arviointimetriikan hyperparametri haluamallesi AUC-pisteelle:

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)

hyperparameters["eval_metric"] = "roc_auc"

Soittamisen sijaan tuner.fit(), Me kutsumme estimator.fit() aloittaa yhden koulutustyön.

Koulutettujen mallien vertailu

Kun olemme ottaneet käyttöön kaikki neljä mallia, lähetämme täydellisen testisarjan jokaiseen päätepisteeseen ennustamista varten ja laskemme jokaisen tarkkuuden, F1- ja AUC-mittaukset (katso koodi muistikirjan näyte). Esitämme tulokset seuraavassa taulukossa tärkeän vastuuvapauslausekkeen kera: tulokset ja näiden mallien välinen suhteellinen suorituskyky riippuvat koulutukseen käyttämästäsi tietojoukosta. Nämä tulokset ovat edustavia, ja vaikka tiettyjen algoritmien pyrkimys toimia paremmin perustuu olennaisiin tekijöihin (esimerkiksi AutoGluon yhdistää älykkäästi sekä LightGBM- että CatBoost-mallien ennusteet kulissien takana), suorituskyvyn tasapaino saattaa muuttua erilaisen tilanteen vuoksi. tiedon jakelu.

. LightGBM automaattisella mallivirityksellä CatBoost automaattisella mallivirityksellä TabTransformer automaattisella mallivirityksellä AutoGluon-Tabular
tarkkuus 0.8977 0.9622 0.9511 0.98
F1 0.8986 0.9624 0.9517 0.98
AUC 0.9629 0.9907 0.989 0.9979

Yhteenveto

Tässä viestissä koulutimme neljä erilaista sisäänrakennettua SageMaker-algoritmia ratkaisemaan asiakkaiden vaihtuvuusennustusongelman pienellä koodaustyöllä. Käytimme SageMakerin automaattista mallin viritystä löytääksemme parhaat hyperparametrit näiden algoritmien kouluttamiseen ja vertailimme niiden suorituskykyä valitussa vaihtuvuuden ennustetietojoukossa. Voit käyttää aiheeseen liittyviä muistikirjan näyte mallina, korvaamalla tietojoukon omallasi ratkaistaksesi haluamasi taulukkotietopohjaisen ongelman.

Varmista, että kokeilet näitä algoritmeja SageMakerissa ja tutustu mallimuistikirjoihin siitä, kuinka voit käyttää muita sivustossa saatavilla olevia sisäänrakennettuja algoritmeja. GitHub.


Tietoja kirjoittajista

Vaihtuvuusennuste käyttämällä Amazon SageMakerin sisäänrakennettuja taulukkoalgoritmeja LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Tohtori Xin Huang on Amazon SageMaker JumpStartin ja Amazon SageMakerin sisäänrakennettujen algoritmien soveltava tutkija. Hän keskittyy skaalautuvien koneoppimisalgoritmien kehittämiseen. Hänen tutkimusintressiään ovat luonnollisen kielen prosessointi, selitettävissä oleva syvä oppiminen taulukkotiedoista ja ei-parametrisen aika-avaruusklusteroinnin robusti analyysi. Hän on julkaissut monia artikkeleita ACL-, ICDM-, KDD-konferensseissa ja Royal Statistical Society: Series A -lehdessä.

Vaihtuvuusennuste käyttämällä Amazon SageMakerin sisäänrakennettuja taulukkoalgoritmeja LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.João Moura on AI/ML Specialist Solutions -arkkitehti Amazon Web Servicesissä. Hän keskittyy enimmäkseen NLP-käyttötapauksiin ja auttaa asiakkaita optimoimaan Deep Learning -mallin koulutusta ja käyttöönottoa. Hän on myös aktiivinen matalan koodin ML-ratkaisujen ja ML-spesifisten laitteistojen kannattaja.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen