Qual é o propósito de usar uma árvore de decisão?

8

Não entendo qual é o objetivo da árvore de decisão? Do jeito que eu vejo, é uma série de if-else. Por que não uso apenas if-else em vez de usar uma árvore de decisão? É porque diminui a complexidade do meu código?

Eu ainda sou poupado do cálculo da entropia e do ganho de informações, porque existem algoritmos pré-criados para eles, onde eu apenas conecto as regras, certo? (Como ID3)

Por que o usamos com aprendizado de máquina agora? Porque nem precisamos elaborar as regras antes de precisarmos? A máquina aprende com os dados de treinamento e, com base nos atributos, pode prever um resultado?

A implementação do ML no meu código diminui a sobrecarga e torna meu código menos complexo, mais eficaz e mais rápido?

57913
fonte
6
Não é sobre o código, é sobre o modelo.
Sycorax diz Restabelecer Monica
6
"A implementação de ML no meu código diminui a sobrecarga e torna o meu código menos complexo, mais eficaz e mais rápido?" Mais eficaz, dependendo do que seu código faz, mas caso contrário não. O ML não existe para tornar seu código menos complexo ou com melhor desempenho (ele tende a ter o efeito oposto). O ML existe para automatizar a criação de algoritmos com base em dados de amostra. Normalmente, isso não é necessário porque os programadores podem escrever apenas algoritmos eficazes, mas às vezes isso é muito difícil de fazer, que é onde ML entra.
DarthFennec
Não faça postagens cruzadas. Isso é contra a política da SE apenas por esse motivo; desperdiça muito tempo das pessoas.
gung - Restabelece Monica
@DarthFennec Quotable!
19719 Jim

Respostas:

21

Do jeito que eu vejo, é uma série de if-else. Por que não uso apenas if-else em vez de usar uma árvore de decisão?

Você está absolutamente certo. Uma árvore de decisão nada mais é do que uma série de instruções if-else. No entanto, é a nossa forma de interpretar essas declarações como uma árvore que nos permite construir estas regras automaticamente ... Ou seja dado algum exemplo entrada de ajuste (x1,y1),...,(xN,yN) ... qual é o melhor conjunto de regras que descreve qual valor y deu uma nova entrada x ? ID3 e similares nos permitem criar automaticamente essas regras. Não se trata realmente da árvore que foi construída, é sobre como a criamos.

Além disso, quase nunca se usa apenas uma árvore de decisão, sendo o motivo exatamente o que você diz: é um modelo bastante simplista que carece de expressividade. No entanto, ele tem uma grande vantagem sobre outros modelos: pode-se calcular uma única árvore de decisão rapidamente. Isso significa que podemos criar algoritmos que treinam muitas árvores de decisão (boost, também conhecidas como AdaBoost e GradientBoosting) em grandes conjuntos de dados. Essa coleção (geralmente mais de 500) desses modelos simplistas (chamados floresta) pode expressar formas muito mais complicadas.

f:[uma,b]RsEun(x)[uma,b]uma=uma0 0<uma1<...<umaM=bumaEu,umaEu+1f|(umaEu,umaEu+1)f

Fabian Werner
fonte
2
A outra grande vantagem está sendo acessível para inspeção humana ("aaah, é por isso!").
dedObed
1
Sim, as árvores de decisão são ótimas para explicar às pessoas sem histórico de estatísticas, porque são muito intuitivas.
QWR
1

Apenas adicionando à resposta de @Fabian Werner - você se lembra de fazer a regra de Riemann Sums em uma introdução à integração? Bem, isso também foi um conjunto de instruções if uniformemente particionadas que você usa para calcular a área sob a função.

Se você desenhar uma função 1D e desenhar as partições uniformemente, o que você encontrará é que, em áreas onde a função tem pouco gradiente, as partições vizinhas podem ser mescladas sem uma grande perda de precisão. Da mesma forma, em partições com alto gradiente, adicionar mais partições melhorará significativamente a aproximação.

Qualquer conjunto de partições aproximará a função, mas algumas são claramente melhores que outras.

Agora, mudando para os modelos CART - vemos dados na forma de pontos ruidosos dessa função e pedimos para aproximar a função. Ao adicionar muitas partições, podemos sobreaquecer e essencialmente executar um modelo de tipo vizinho mais próximo. Para evitar isso, limitamos o número de partições que nosso modelo pode usar (geralmente na forma de profundidade máxima e amostras mínimas por partição). Então agora, onde devemos colocar essas divisões? Essa é a questão abordada pelos critérios de divisão. Áreas com maior “complexidade” devem receber mais divisões, como regra geral, e é isso que gini, entropia etc. se esforçam para fazer.

Fazer previsões são apenas declarações if-else, mas no contexto do aprendizado de máquina que não é de onde vem o poder do modelo. O poder advém da capacidade do modelo de compensar o ajuste excessivo e insuficiente de maneira escalável e pode ser derivado em uma estrutura probabilística consistente com garantias teóricas no limite de dados. Finalmente, se adotamos uma visão abstrata e abstrata dos modelos de ML, podemos dizer redes neurais, métodos de núcleo, abordagens de Monte Carlo e muito mais são simplesmente adição e multiplicação. Infelizmente, essa não é uma visão muito útil da literatura.

j__
fonte
0

Uma árvore de decisão é uma partição do domínio do problema em subconjuntos, por meio de condições. Geralmente é implementado como se-então-em-cascata. Você pode vê-lo como um termo que descreve uma lógica de decisão complexa.

As árvores de decisão não são mais eficientes nem mais "favoráveis" ao aprendizado de máquina que os testes lógicos. Eles são testes lógicos.

Lembre-se também de que qualquer algoritmo nada mais é do que uma combinação de cálculos e testes aritméticos, ou seja, uma árvore de decisão (geralmente enorme).


Para completar, vamos mencionar que em alguns contextos, como aprendizado de máquina, árvores de decisão complexas são construídas automaticamente, por algoritmos. Mas isso não muda sua natureza.

Yves Daoust
fonte