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?
machine-learning
57913
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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.
fonte