Նուրբ ներածություն 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) ծանծաղ որոշումների ծառերի մի շարք է, որոնք վերապատրաստվում են հաջորդաբար: Յուրաքանչյուր ծառ վերապատրաստվում է կանխատեսելու և այնուհետև «ուղղելու» նախկինում վերապատրաստված ծառերի սխալները (ավելի ճիշտ՝ յուրաքանչյուր ծառ կանխատեսում է կորստի գրադիենտը մոդելի արդյունքի համեմատ):
Այս մոդելի որոշ առավելություններ են.
- Հաջորդական բարելավում ինչպես նշված է վերևում:
- Կենտրոնացված է ծանր դեպքերի վրա. GBT-ն ավելի մեծ ուշադրություն է դարձնում դժվար դեպքերին` նշանակելով կշիռներ՝ օգնելով բարելավելու կանխատեսումները, որտեղ Random Forest-ը կարող է դժվարություններ ունենալ:
- Ավելի ուժեղ կանխատեսումներ. 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-ի մոդելների վերապատրաստումը, քանի որ դրանք պահանջում են նվազագույն նախնական մշակում և իսկապես հիանալի են աշխատում աղյուսակային տվյալների հետ:
Եթե ցանկանում եք փորձել առաջին արագ կանխատեսումը, կարող եք վարժեցնել ալգորիթմը ընդամենը մի քանի տող կոդով և շատ լռելյայն հիպերպարամետրերով:
Եվ վերջապես, այն կարող է որոշակի լույս սփռել այն հատկանիշների մասին, որոնք մոդելը կարող է ամենակարևորը համարել նոր որոշումներ կայացնելու համար:
Փաստաթղթեր
- https://www.tensorflow.org/decision_forests
- https://www.kaggle.com/code/gusthema/spaceship-titanic-with-tfdf
- https://www.kaggle.com/code/paultimothymooney/getting-started-with-tensorflow-decision-forests
- https://github.com/google/yggdrasil-decision-forests
- https://www.ibm.com/topics/random-forest#:~:text=Random%20forest%20is%20a%20commonly,both%20classification%20and%20regression%20problems:
Կապվեք ինձ հետ։
Մնացեք կապի մեջ և ուսումնասիրեք տվյալների գիտության վերաբերյալ լրացուցիչ պատկերացումներ:
Եթե ցանկանում եք ավելի խորանալ տվյալների գիտության աշխարհում և շարունակել սովորել, ինձ հետ կապված մնալու մի քանի եղանակ կա.
- 📱 LinkedIn՝ Խուան Անտոնիո Կաբեսա Սոուզա
- 📬 փոստ՝ [email protected]
- 🖥️ Twitter՝ @juaancabsou
Մնալով կապված՝ դուք առաջինը կիմանաք ոլորտում նոր և հետաքրքիր զարգացումների մասին: