Árvore de Decisão

A Árvore de Decisão organiza as decisões em uma estrutura hierárquica, onde cada ponto de decisão corresponde a uma pergunta sobre os dados. A partir dessas perguntas, o modelo divide os dados em subconjuntos até chegar a uma classificação final. Este modelo é amplamente utilizado devido à sua interpretabilidade, sendo fácil entender o processo de decisão. Ele é eficiente para criar modelos explicáveis, mesmo em situações complexas.

O treinamento do modelo é demorado comparado aos demais modelos, porém, após o treinamento não é necessário a base de dados para realizar predições. É possível salvar e importar o treinamento finalizado em um arquivo extremamente leve.

EXEMPLO DE USO

uses
  UDecisionTree;
  
procedure TrainDecisionTree;
var
  vTree: TDecisionTree;
begin
  vTree := TDecisionTree.Create(5, scGini);
  try
    vTree.Train('C:\Delphai\Delphai\Datasets\Iris.csv', False);
    ShowMessage(vTree.Predict([6.3, 3.3, 4.7, 1.6]));
  finally
    vTree.Free;
  end;
end;

GUIA DE CLASSES E MÉTODOS

TDecisionTree

  • FDataset : TAIDatasetClassification; : acessa a base de dados atual contido no modelo.

  • procedure ClearDataset; : limpa a base de dados.

  • constructor Create(aDepth: Integer; aSplitCriterion: TSplitCriterion); overload; : cria uma nova árvore para ser treinada.

    • aDepth : profundidade da árvore.

    • splitcriterion = TSplitCriterion : [scGini, scEntropy].

  • constructor Create(aTrainedFile : String); overload; : cria o objeto, carregando a estrutura de um arquivo já treinado.

    • aTrainedFile : caminho do arquivo CSV.

  • procedure Train(aTrainingData : String; aHasHeader : Boolean = True); overload; : realiza o treinamento e gera os nós com base nos dados passados.

    • aTrainingData : caminho do arquivo CSV.

    • aHasHeader : indica se o arquivo tem cabeçalho.

  • procedure Train(aTrainingData : TDataSet); overload; : realiza o treinamento e gera os nós com base nos dados passados.

  • function Predict(aSample: TArray<Double>; aInputNormalized : Boolean = False): String; : prevê a melhor categoria para a amostra.

    • aSample : amostra a ser analisada.

    • aInputNormalized : deve ser passado como true somente se os dados da entrada já foram normalizadas por fora do componente (o que deve ser feito utilizando o range salvo no objeto).

  • procedure LoadFromFile(const FileName: string); : carrega a estrutura da árvore de um arquivo.

  • procedure SaveToFile(const FileName: string); : salva a estrutura da árvore gerada em um arquivo.

Last updated