Trabalhando com Tensorflow Decision Forests-Parte 1

Jéssica Costa
A Garota do TI
Published in
3 min readFeb 22, 2023
Imagem Autoral

As árvores estão presentes nas florestas e tem uma importância crucial na vida na Terra, mas também na computação, em vários algoritmos. Biologicamente falando você tem um tronco que se ramifica em diversos galhos que desenvolvem folhas e frutos. Você pode abstrair este conceito para computação com a ideia de raiz e de nós(folhas) para representar estruturas hierárquicas e não lineares, comumente utilizado para representar dados.

Em Machine Learning, as árvores representam uma hierarquia de tomada de decisão e por isso se chamam árvores de decisão. Estes algoritmos assumem um papel de “ Estado da Arte” para alguns problemas de classificação e regressão, principalmente em bases de dados tabulares pequenas. Além disso são algoritmos com boa explicabilidade, você entende a regra que levou àquele resultado. Existem diversos algoritmos baseados em árvores, como o CART e até aqueles que juntam vários árvores para combinar resultados, como as Florestas de Decisão.

Neste texto vamos falar de um algoritmo de floresta de decisão bem famoso e utilizado, o Random Forest ou Floresta Aleatória com a implementação do TensorFlow Decision Forests. O algoritmo Random Forest é um algoritmo que cria de forma aleatória várias árvores de decisão e combina o resultado de todas elas para chegar no resultado final. Estes métodos que combinam resultados são chamados de Métodos de Ensemble e podem ser treinados de forma paralela (Bagging) ou treinados sequencialmente (Boosting) com melhora iterativa. O Random Forest é um algoritmo de Bagging, especificamente.

TensorFlow Decision Forests (TF-DF)

“A TensorFlow Decision Forests (TF-DF) é um conjunto de algoritmos de última geração para treinar, exibir e interpretar modelos de floresta de decisão. A biblioteca é uma coleção de modelos da Keras, e é compatível com classificação, regressão e ranking.”

Exemplo de árvore gerada por TF-DF

Basicamente a estrutura do uso da Tensorflow Decision Forests (TF-DF) obedece a estrutura de código abaixo.

import tensorflow_decision_forests as tfdf
import pandas as pd

# Load a dataset in a Pandas dataframe.
train_df = pd.read_csv("project/train.csv")
test_df = pd.read_csv("project/test.csv")

# Convert the dataset into a TensorFlow dataset.
train_ds = tfdf.keras.pd_dataframe_to_tf_dataset(train_df, label="my_label")
test_ds = tfdf.keras.pd_dataframe_to_tf_dataset(test_df, label="my_label")

# Train a Random Forest model.
model = tfdf.keras.RandomForestModel()
model.fit(train_ds)

# Summary of the model structure.
model.summary()

# Evaluate the model.
model.evaluate(test_ds)

# Export the model to a SavedModel.
model.save("project/model")

Nesta estrutura, você tem os dados de treino e teste, a conversão de um dataframe Pandas para um dataset do Tensoflow, o treino e avaliação do modelo. Essa a forma mais simples de trabalhar com o algoritmo, mas é possível mexer nos parâmetros do modelo. O template mostra alguns parâmetros que podem ser mudados imputados com seus valores default.

tfdf.keras.RandomForestModel(
task: Optional[TaskType] = core.Task.CLASSIFICATION,
num_threads: Optional[int] = None,
max_depth: Optional[int] = 16,
num_trees: Optional[int] = 300,
bootstrap_training_dataset: Optional[bool] = True
)

Por default o algoritmo trabalha com classificação, mas caso você deseje trabalha com regressão ou rankeamento, basta mudar a task para Task.REGRESSION ou Task.RANKING. É possível mudar a quantidade threads se sua máquina der suporte. Os parâmetros max_depth e num_trees alteram a profundidade das árvores e a quantidade de árvores do modelo, respectivamente. Finalmente, o bootstrap_training_dataset trabalha com reamostragem com substituição, ou seja, se TRUE (default), cada árvore é treinada em um conjunto de dados separado amostrado com substituição do conjunto de dados original. Se falso, todas as árvores são treinadas em todo o mesmo conjunto de dados.

Existem muitos outros parâmetros desses algoritmo, mas esses são bem interessantes para realizar alguns testes. Abaixo vou deixar alguns links de documentação para maior detalhamento de instalação e sobre o Random Forest. No próximo post teremos a parte 2 onde falarei sobre como trabalhar com balanceamento e RandomForest com Tensorflow Decision Forests (TF-DF) e como avaliar os resultados em uma classificação binária.

Links Úteis:
https://www.tensorflow.org/decision_forests?hl=pt-br
https://www.tensorflow.org/decision_forests/api_docs/python/tfdf/keras/RandomForestModel
https://www.tensorflow.org/decision_forests/tutorials/beginner_colab?hl=pt-br

--

--

Jéssica Costa
A Garota do TI

Mestre em Ciência da Computação, GDE em Machine Learning e Cientista de Dados