Նուրբ ներածություն TensorFlow Decision Forest-ին

Այս հոդվածը նպատակ ունի օգնելու տվյալների գիտնականներին՝ հասկանալու TensorFlow Decision Forest-ի առաջնահերթությունը որպես մոդելի ստեղծման հիմնական ընտրություն:

Ի՞նչ է TensorFlow որոշման անտառը (TF-DF):

Թողարկվել է 2021 թվականին, TF-DF-ը, որը կրճատվել է TensorFlow Decision Forests-ի համար, գրադարան է, որը հնարավորություն է տալիս վարժեցնել, կատարել և մեկնաբանել տարբեր որոշումների անտառային մոդելներ, ինչպիսիք են Random Forest կամ Gradient Boosted Trees:

🌳 Tree models

  • Որոշման ծառեր
  • Պատահական անտառ
  • Գրադիենտ ուժեղացված ծառ

Լրացուցիչ տեղեկությունների համար ստուգեք TensorFlow documentation about Decision Forests բնօրինակը:

TF-DF-ի մասին որոշ հետաքրքիր բաներ հետևյալն են.

  • TF-DF-ը պահանջում է նվազագույն նախնական մշակում: Փաստորեն, TFDF-ն աջակցում է դատարկ արժեքներին թվային և դասակարգային հատկանիշների համար, թեև ոչ բուլյան:
  • TF-DF-ը կգերազանցի կամ կապահովի ուժեղ հիմք, ինչպես նաև օգնում է հասկանալ տվյալները:

Որոշման ծառերը (և ընդհանրապես ծառերի մոդելները) լավագույն տեղն են աղյուսակային տվյալների հետ աշխատելու համար, քանի որ այս մոդելները կգերազանցեն կամ կապահովեն ուժեղ հիմք և կօգնեն հասկանալ տվյալները:

TF-DF-ի օգտագործումը Kaggle մրցույթում

Այս մոդելը փորձարկելու համար ես այն օգտագործել եմ Kaggle Competition of Spaceship Titanic-ում հասնելով 80% ճշգրտության։

Տվյալների նախնական մշակում

Նախնական մշակման ծավալը նվազագույնն էր.

  • Փոխակերպեց բուլյան տիպերը → int տեսակները՝ օգտագործելով 1/0:
  • Թիրախի հետ ավելի փոխկապակցված մի քանի նոր առանձնահատկությունների ստեղծում և անօգուտ սյունակներ թողնելը:

Որպես վերջնական քայլ՝ անհրաժեշտ է տվյալների հավաքածուները, որոնք կօգտագործվեն մոդելի և գնահատման փուլում, վերածել TensorFlow ձևաչափի:

df_tf_train = tfdf.keras.pd_dataframe_to_tf_dataset(x_train, label=target_name)
df_tf_val = tfdf.keras.pd_dataframe_to_tf_dataset(x_val, label=target_name)
df_tf_test = tfdf.keras.pd_dataframe_to_tf_dataset(df_test)

Մոդելի ընտրություն և գնահատում

Ես ընտրում եմ օգտագործել Ensemble Learning-ը RandomForest և Gradient Boosted Tree մոդելների կիրառման միջոցով:

Պատահական անտառ

Random Forest-ը որոշումների ծառերի հավաքածու է, որոնցից յուրաքանչյուրը վերապատրաստվել է ինքնուրույն և առանց էտելու ուսուցման տվյալների հավաքածուի պատահական ենթաբազմության վրա (նմուշը փոխարինվել է):

Ալգորիթմը եզակի է նրանով, որ.

  • Այն ամուր է չափից դուրս տեղադրելու համար և հեշտ է օգտագործել
  • Կարող է տրամադրել ամենակարևոր հատկանիշների ցանկը:
  • Բացի այդ, հնարավոր է կարգավորել մոդելը կամ լռելյայն ընտրել հիպերպարամետրեր:

GradientBoostedTrees

GBT (Gradient Boosted Tree) ծանծաղ որոշումների ծառերի մի շարք է, որոնք վերապատրաստվում են հաջորդաբար: Յուրաքանչյուր ծառ վերապատրաստվում է կանխատեսելու և այնուհետև «ուղղելու» նախկինում վերապատրաստված ծառերի սխալները (ավելի ճիշտ՝ յուրաքանչյուր ծառ կանխատեսում է կորստի գրադիենտը մոդելի արդյունքի համեմատ):

Այս մոդելի որոշ առավելություններ են.

  1. Հաջորդական բարելավում ինչպես նշված է վերևում:
  2. Կենտրոնացված է ծանր դեպքերի վրա. GBT-ն ավելի մեծ ուշադրություն է դարձնում դժվար դեպքերին` նշանակելով կշիռներ՝ օգնելով բարելավելու կանխատեսումները, որտեղ Random Forest-ը կարող է դժվարություններ ունենալ:
  3. Ավելի ուժեղ կանխատեսումներ. GBT-ի կրկնվող գործընթացը հաճախ հանգեցնում է ավելի ուժեղ կանխատեսող մոդելի, հատկապես այն դեպքում, երբ ճշգրտված է, ինչը հիանալի է դարձնում այն ​​առաջադրանքների համար, որտեղ ճշգրտությունը կարևոր է:
    # Generate and train the model
    # ------------------------------
    model = generate_tfdf_model(model_name, hyperparam=None)
    model.compile(metrics=["accuracy"])
    model.fit(df_tf_train)

def generate_tfdf_model(model_name, hyperparam=None):
    """
    Function to generate the model
    """
    
    # Models without hyperparameters
    # ------------------------------
    if hyperparam is None:
        if model_name == 'random_forest':
            model = tfdf.keras.RandomForestModel()
        elif model_name == 'gradient_boosted_trees':
            model = tfdf.keras.GradientBoostedTreesModel()
        elif model_name == 'cart':
            model = tfdf.keras.CartModel()

    else:
        # Models with hyperparameters
        # ------------------------------
        if model_name == 'random_forest':
            model = tfdf.keras.RandomForestModel(hyperparameter_template=hyperparam, task='classification')
        elif model_name == 'gradient_boosted_trees':
            model = tfdf.keras.GradientBoostedTreesModel(hyperparameter_template=hyperparam, task='classification')
        elif model_name == 'cart':
            model = tfdf.keras.CartModel(hyperparameter_template=hyperparam, task='classification')

    print('Model', model_name, 'created')
    return model

Փոփոխական նշանակություն

Այս մոդելների (որոշման ծառերի մոդելների) հետ կապված մի հետաքրքիր բան այն է, որ դուք կարող եք ստուգել փոփոխական կարևորությունը (VI) և նկարագրել յուրաքանչյուր հատկանիշի ազդեցությունը մոդելի վրա:

  • VI-ները սովորաբար ցույց են տալիս, թե որքանով է փոփոխականը նպաստում մոդելի կանխատեսումներին կամ որակին: Տարբեր VI-ներ ունեն տարբեր իմաստաբանություն և ընդհանուր առմամբ համեմատելի չեն:
  • variable_importances()-ով վերադարձված VI-ները կախված են ուսուցման ալգորիթմից և դրա հիպերպարամետրերից:
importance = model.make_inspector().variable_importances()

Եզրակացություն

TF-DF-ն հեշտացնում է RandomForest-ի և GradientBoostedTrees-ի մոդելների վերապատրաստումը, քանի որ դրանք պահանջում են նվազագույն նախնական մշակում և իսկապես հիանալի են աշխատում աղյուսակային տվյալների հետ:

Եթե ​​ցանկանում եք փորձել առաջին արագ կանխատեսումը, կարող եք վարժեցնել ալգորիթմը ընդամենը մի քանի տող կոդով և շատ լռելյայն հիպերպարամետրերով:

Եվ վերջապես, այն կարող է որոշակի լույս սփռել այն հատկանիշների մասին, որոնք մոդելը կարող է ամենակարևորը համարել նոր որոշումներ կայացնելու համար:

Փաստաթղթեր

Կապվեք ինձ հետ։

Մնացեք կապի մեջ և ուսումնասիրեք տվյալների գիտության վերաբերյալ լրացուցիչ պատկերացումներ:

Եթե ​​ցանկանում եք ավելի խորանալ տվյալների գիտության աշխարհում և շարունակել սովորել, ինձ հետ կապված մնալու մի քանի եղանակ կա.

Մնալով կապված՝ դուք առաջինը կիմանաք ոլորտում նոր և հետաքրքիր զարգացումների մասին: