A biblioteca Scikit-Learn emprega o algoritmo Classification...

Próximas questões
Com base no mesmo assunto
Q2383286 Algoritmos e Estrutura de Dados
A biblioteca Scikit-Learn emprega o algoritmo Classification And Regression Tree (CART) para treinar Árvores de Decisão. O algoritmo CART baseia-se na recursividade e na estratégia de divisão binária para construir uma árvore de decisão. Inicialmente, a árvore é representada por um único nó, que contém todos os dados de treinamento. A cada passo, o algoritmo busca a melhor maneira de dividir o conjunto de dados. A recursividade continua até que uma condição de parada seja atendida, como atingir uma profundidade máxima da árvore. Uma vez construída a árvore, a fase de predição ocorre ao percorrer a estrutura da árvore de acordo com as condições estabelecidas nos nós, levando a uma predição (inferência) para uma determinada entrada.
Considerando-se que n corresponde ao número de features e m ao número de instâncias, qual é a complexidade computacional assintótica de predição para árvores de decisão treinadas com o algoritmo CART?
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E - O(log2 (m))

Vamos analisar a questão e entender o porquê dessa alternativa ser a correta.

Em primeiro lugar, é importante entender o que é uma Árvore de Decisão e como o algoritmo CART (Classification And Regression Tree) funciona. Esse algoritmo é amplamente utilizado nas tarefas de classificação e regressão. A construção da árvore envolve a divisão recursiva do conjunto de dados em subconjuntos menores, até que uma condição de parada seja atingida (como uma profundidade máxima ou o número mínimo de instâncias em um nó).

Vamos agora justificar a alternativa correta:

Alternativa E - O(log2 (m))

Uma vez que a árvore de decisão está treinada, fazer uma predição envolve apenas percorrer a árvore desde a raiz até uma folha. Esse percurso segue uma sequência de decisões binárias (sim/não) ao longo da profundidade da árvore. Na pior das hipóteses, o número de decisões a serem tomadas é proporcional à profundidade da árvore. Para uma árvore balanceada, a profundidade é aproximadamente logarítmica em relação ao número de instâncias m, logo, a complexidade de predição é O(log2 (m)).

Agora, vamos analisar as alternativas incorretas:

Alternativa A - O(m)

Esta alternativa sugere que a complexidade da predição é linear em relação ao número de instâncias. Entretanto, isso estaria correto se precisássemos examinar cada instância para fazer uma predição, o que não é o caso em árvores de decisão. A predição envolve apenas seguir um caminho ao longo da profundidade da árvore, e não percorrer todas as instâncias.

Alternativa B - O(m2)

Esta alternativa indica uma complexidade quadrática, o que não se aplica à predição em árvores de decisão. Esse tipo de complexidade seria muito alto e não é condizente com a natureza do algoritmo CART.

Alternativa C - O(n × m log(m))

Esta alternativa mistura a complexidade de treinamento de uma árvore de decisão com a complexidade de predição. Durante o treinamento, pode haver uma fase em que o algoritmo realiza comparações que envolvem n (número de features) e m (número de instâncias), mas isso não se aplica à predição.

Alternativa D - O(n2 × m log(m))

Semelhante à alternativa C, esta alternativa também parece confundir a complexidade de treinamento com a de predição. Essa complexidade é exagerada para a tarefa de fazer uma predição, que é apenas seguir o caminho na árvore de decisão.

Conclusão: Para resolver este tipo de questão, é essencial entender primeiramente o funcionamento do algoritmo CART em árvores de decisão e, especificamente, a distinção entre o processo de treinamento e o de predição. A complexidade de predição em uma árvore de decisão treinada é O(log2 (m)), pois envolve percorrer a profundidade da árvore, que é logarítmica em relação ao número de instâncias.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

já que os professor não comentam, o chat gpt responde! arrependimento assinatura! segue aí: A complexidade computacional de predição para árvores de decisão é geralmente O(log2(m)), onde m é o número de instâncias de dados. Isso ocorre porque, durante a predição, a árvore é percorrida da raiz até uma folha, e o número de passos necessários para alcançar uma folha é proporcional à altura da árvore. Para uma árvore bem balanceada, a altura é log2(m), onde m é o número de instâncias. Assim, a complexidade da predição é O(log2(m)).

Nas referências que achei, o Big O do algoritmo CART é O(pN log2(N)), sendo N o número de instâncias e pN o número de features. As perguntas que ficam: porque o log é na base 2? E porque a banca cortou as features da notação assintótica?

Nas referências que achei, o Big O do algoritmo CART é O(pN log2(N)), sendo N o número de instâncias e pN o número de features. As perguntas que ficam: porque o log é na base 2? E porque a banca cortou as features da notação assintótica?

Caberia recurso. Essa complexidade é aplicada somente considerando que a árvore gerada é balanceada. Mas muitas vezes não é o caso.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo