Katkestuse prognoosimine Amazon SageMakeri sisseehitatud tabelialgoritmide LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.

Tühistamise ennustamine Amazon SageMakeri sisseehitatud tabelialgoritmide LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular abil

Amazon SageMaker pakub sviidi sisseehitatud algoritmid, eelkoolitatud mudelidja eelnevalt ehitatud lahendusmallid aidata andmeteadlastel ja masinõppe (ML) praktikutel alustada kiiresti ML-mudelite koolitamist ja juurutamist. Neid algoritme ja mudeleid saab kasutada nii juhendatud kui ka juhendamata õppimiseks. Nad saavad töödelda erinevat tüüpi sisendandmeid, sealhulgas tabelit, pilti ja teksti.

Klientide vähenemine on probleem, millega seisavad silmitsi paljud ettevõtted telekommunikatsioonist panganduseni, kus kliendid jäävad tavaliselt konkurentidele ilma. Ettevõtte huvides on pigem hoida olemasolevaid kliente kui uusi kliente hankida, sest uute klientide meelitamine maksab tavaliselt oluliselt rohkem. Mobiilsideoperaatoritel on ajaloolisi andmeid, mille kohaselt kliendid jätkasid teenuse kasutamist või lõpetasid lõpuks segaduse. Saame kasutada seda mobiilsideoperaatori kaotuse ajaloolist teavet ML-mudeli koolitamiseks. Pärast selle mudeli väljaõpetamist saame mudelile edastada suvalise kliendi profiiliteabe (sama profiiliteabe, mida kasutasime mudeli koolitamisel) ja lasta sellel ennustada, kas see klient loobub või mitte.

Selles postituses me koolitame ja rakendame neli hiljuti välja antud SageMakeri algoritmi—LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular — kaotuse prognoosimise andmekogus. Me kasutame SageMakeri automaatne mudeli häälestamine (hüperparameetrite optimeerimise tööriist), et leida iga mudeli jaoks parimad hüperparameetrid ja võrrelda nende toimivust hoidekatse andmestikuga, et valida optimaalne.

Seda lahendust saate kasutada ka mallina, et otsida tipptasemel tabelialgoritmide kogust ja kasutada hüperparameetrite optimeerimist, et leida parim üldmudel. Saate hõlpsasti asendada näidisandmestiku enda omaga, et lahendada teid huvitavad tegelikud äriprobleemid. Kui soovite otse hüpata SageMakeri SDK koodi juurde, mida selles postituses läbime, võite vaadata järgmist Jupyteri märkmiku näidis.

SageMakeri sisseehitatud algoritmide eelised

Konkreetse probleemitüübi ja andmete jaoks algoritmi valimisel on SageMakeri sisseehitatud algoritmi kasutamine lihtsaim valik, kuna sellega kaasnevad järgmised peamised eelised.

  • Madal kodeerimine – Sisseehitatud algoritmid nõuavad katsete käivitamiseks vähe kodeerimist. Ainsad sisendid, mida peate esitama, on andmed, hüperparameetrid ja arvutusressursid. See võimaldab teil katseid kiiremini läbi viia ning tulemuste ja koodimuudatuste jälgimiseks kulub vähem kulusid.
  • Tõhusad ja skaleeritavad algoritmide teostused – Sisseehitatud algoritmid on varustatud paralleelsusega mitme arvutusjuhtumi vahel ja GPU-toega kõigi kohaldatavate algoritmide jaoks. Kui teil on mudeli treenimiseks palju andmeid, saab enamik sisseehitatud algoritme nõudluse rahuldamiseks hõlpsasti skaleerida. Isegi kui teil on juba eelkoolitatud mudel, võib siiski olla lihtsam kasutada selle tagajärgi SageMakeris ja sisestada juba teadaolevad hüperparameetrid, selle asemel et see üle portida ja ise treeningskripti kirjutada.
  • läbipaistvus – Olete saadud mudeli esemete omanik. Võite võtta selle mudeli ja juurutada selle SageMakeris mitme erineva järeldusmustri jaoks (vaadake kõiki saadaolevad juurutustüübid) ning lihtne lõpp-punkti skaleerimine ja haldamine või saate selle kasutusele võtta kõikjal, kus seda vajate.

Andmete visualiseerimine ja eeltöötlus

Esiteks kogume kokku oma klientide vahetumise andmestiku. See on suhteliselt väike andmekogum 5,000 kirjega, kus iga kirje kasutab tundmatu USA mobiilioperaatori kliendi profiili kirjeldamiseks 21 atribuuti. Atribuudid ulatuvad USA osariigist, kus klient elab, klienditeenindusse tehtud kõnede arvuni ja päevaste kõnede eest arveldatavate kuludeni. Püüame ennustada, kas klient loobub või mitte, mis on binaarse klassifikatsiooni probleem. Järgmine on nende funktsioonide alamhulk, mille viimase veeruna on silt.

Järgnevalt on toodud mõned ülevaated iga veeru kohta, täpsemalt kokkuvõtlik statistika ja valitud funktsioonide histogramm.

Katkestuse prognoosimine Amazon SageMakeri sisseehitatud tabelialgoritmide LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.

Seejärel eeltöötleme andmeid, jagame need koolitus-, valideerimis- ja testikomplektideks ning laadime andmed üles Amazoni lihtne salvestusteenus (Amazon S3).

Tabelialgoritmide automaatne mudeli häälestamine

Hüperparameetrid juhivad seda, kuidas meie aluseks olevad algoritmid töötavad ja mõjutavad mudeli toimivust. Need hüperparameetrid võivad olla närvivõrgupõhiste mudelite puhul kihtide arv, õppimiskiirus, kaalu vähenemise määr ja väljalangevus või puuansambli mudelite puhul lehtede arv, iteratsioonid ja maksimaalne puu sügavus. Parima mudeli valimiseks rakendame SageMakeri automaatset mudeli häälestamist neljale treenitud SageMakeri tabelialgoritmile. Peate valima ainult häälestavad hüperparameetrid ja iga uuritava parameetri vahemiku. Mudeli automaatse häälestamise kohta lisateabe saamiseks vaadake Amazon SageMakeri automaatne mudeli häälestamine: masinõppe kasutamine masinõppeks or Amazon SageMakeri automaatne mudeli häälestamine: skaleeritav gradiendivaba optimeerimine.

Vaatame, kuidas see praktikas toimib.

LightGBM

Alustame automaatse mudeli häälestamisega LightGBM-iga ja kohandame selle protsessi teiste algoritmidega. Nagu postituses selgitatud Amazon SageMaker JumpStart mudelid ja algoritmid on nüüd saadaval API kaudu, on SageMakeri SDK kaudu eelehitatud algoritmi koolitamiseks vaja järgmisi artefakte:

  • Selle raamistikuspetsiifiline konteineri kujutis, mis sisaldab kõiki koolituse ja järelduste tegemiseks vajalikke sõltuvusi
  • Valitud mudeli või algoritmi koolitus- ja järeldusskriptid

Esmalt hangime need artefaktid, mis sõltuvad model_id (lightgbm-classification-model sel juhul) ja versioon:

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)

Seejärel saame LightGBM-i vaikehüperparameetrid, määrame mõnele neist valitud fikseeritud väärtused, nagu näiteks võimendusvoorude arv ja valideerimisandmete hindamismõõdik, ning määratleme väärtusvahemikud, mida tahame otsida. Kasutame SageMakeri parameetreid ContinuousParameter ja IntegerParameter selle jaoks:

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),
}

Lõpuks loome a SageMakeri hindaja, sisestage see a HyperarameterTunerja alustage hüperparameetrite häälestustööd 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 parameeter määrab, kui palju töid automaatses mudeli häälestamise töös kokku käitatakse, ja max_parallel_jobs määrab, mitu samaaegset koolitustööd tuleks alustada. Samuti määratleme eesmärgi “Maximize” mudeli AUC (kõveraalune pindala). Et sukelduda sügavamale saadaolevatesse parameetritesse, mida eksponeerib HyperParameterTuner, viitama Hüperparameetri tuuner.

Tutvu märkmiku näidis et näha, kuidas jätkame selle mudeli juurutamist ja hindamist testikomplektis.

CatBoost

Hüperparameetrite häälestamise protsess CatBoosti algoritmis on sama, mis varem, kuigi peame ID all leidma mudeli artefaktid catboost-classification-model ja muutke hüperparameetrite vahemiku valikut:

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

TabTransformeri mudeli hüperparameetrite häälestamise protsess on sama, mis varem, kuigi peame ID all leidma mudeli artefaktid pytorch-tabtransformerclassification-model ja muuta hüperparameetrite vahemiku valikut.

Muudame ka koolitust instance_type et ml.p3.2xlarge. TabTransformer on hiljuti Amazoni uuringutest tuletatud mudel, mis toob Transformeri mudelite abil tabeliandmetesse sügava õppimise võime. Selle mudeli tõhusaks koolitamiseks vajame GPU-ga toetatud eksemplari. Lisateabe saamiseks vaadake Süvaõppe võimsuse toomine andmetesse tabelites.

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

AutoGluoni puhul me hüperparameetrite häälestamist ei käivita. See tuleneb disainist, sest AutoGluon keskendub mitme mudeli kombineerimisele mõistlike hüperparameetrite valikutega ja nende virnastamisele mitmesse kihti. See on tulemuslikum kui ühe mudeli väljaõpetamine täiusliku hüperparameetrite valikuga ja on ka arvutuslikult odavam. Lisateabe saamiseks vaadake AutoGluon-Tabular: tugev ja täpne AutoML struktureeritud andmete jaoks.

Seetõttu vahetame model_id et autogluon-classification-ensembleja fikseerige hindamismõõdiku hüperparameeter ainult meie soovitud AUC-skooriga:

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"

Selle asemel, et helistada tuner.fit(), me helistame estimator.fit() ühe koolitustöö alustamiseks.

Koolitatud mudelite võrdlusuuringud

Pärast kõigi nelja mudeli kasutuselevõttu saadame igale lõpp-punktile täieliku testikomplekti prognoosimiseks ja arvutame iga jaoks täpsuse, F1 ja AUC mõõdikud (vt koodi märkmiku näidis). Esitame tulemused järgmises tabelis koos olulise lahtiütlemisega: tulemused ja nende mudelite suhteline jõudlus sõltuvad treenimiseks kasutatavast andmekogumist. Need tulemused on tüüpilised ja kuigi tendents, et teatud algoritmid toimivad paremini, põhineb asjakohastel teguritel (näiteks AutoGluon ühendab nii LightGBM-i kui ka CatBoosti mudelite ennustused kulisside taga arukalt), võib jõudluse tasakaal muutuda, kui see on erinev. andmete levitamine.

. LightGBM koos automaatse mudeli häälestamisega CatBoost koos automaatse mudeli häälestamisega TabTransformer koos automaatse mudeli häälestamisega AutoGluon-Tabular
Täpsus 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

Järeldus

Selles postituses koolitasime nelja erinevat SageMakeri sisseehitatud algoritmi, et lahendada klientide vähenemise prognoosimise probleem vähese kodeerimiskoormusega. Kasutasime SageMakeri automaatset mudeli häälestamist, et leida parimad hüperparameetrid, millega neid algoritme treenida, ja võrdlesime nende toimivust valitud tööturu ennustuse andmestikuga. Võite kasutada seotud märkmiku näidis mallina, asendades andmestiku enda omaga, et lahendada soovitud tabeliandmetepõhine probleem.

Proovige kindlasti neid algoritme SageMakeris ja vaadake märkmikke, kuidas kasutada teisi veebisaidil saadaolevaid sisseehitatud algoritme. GitHub.


Autoritest

Katkestuse prognoosimine Amazon SageMakeri sisseehitatud tabelialgoritmide LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.Dr Xin Huang on Amazon SageMaker JumpStarti ja Amazon SageMakeri sisseehitatud algoritmide rakendusteadlane. Ta keskendub skaleeritavate masinõppe algoritmide arendamisele. Tema uurimishuvid on seotud loomuliku keele töötlemise, tabeliandmete seletatava süvaõppe ja mitteparameetrilise aegruumi klastrite tugeva analüüsiga. Ta on avaldanud palju artikleid ACL-i, ICDM-i, KDD konverentsidel ja Royal Statistical Society: Series A ajakirjas.

Katkestuse prognoosimine Amazon SageMakeri sisseehitatud tabelialgoritmide LightGBM, CatBoost, TabTransformer ja AutoGluon-Tabular PlatoBlockchain Data Intelligence abil. Vertikaalne otsing. Ai.João Moura on AI/ML-i spetsialistilahenduste arhitekt ettevõttes Amazon Web Services. Ta keskendub peamiselt NLP kasutusjuhtudele ja aitab klientidel optimeerida süvaõppe mudeli koolitust ja juurutamist. Samuti on ta aktiivne madala koodiga ML-lahenduste ja ML-le spetsialiseerunud riistvara pooldaja.

Ajatempel:

Veel alates AWS-i masinõpe