2
respostas

[Dúvida] Falta de sentido da DecisionTree

Bom dia, pessoal!

Eu estava olhando a decisionTree com 3 de profundidade e para mim ela não faz muito sentido.

A principio todos os True do primeiro nó são avaliados com uma grande chance de serem vendidos, até ai tudo bem, o problema é que ele avalia um:

[True, False, True] com a mesma chance de ser vendido de um [False, False, False], ou um [False, True, True] como não vendido e um [False, True, False] como vendido. Não deveria ser ao contrário? )

arvore de decisão com 3 de profundidade

2 respostas

Bom dia. Quanto maior a complexidade da árvore maiores são as chances dela interpretar pequenos valores "falsos" mas dentro de certas características plausíveis de serem classificadas como "Sim", que no caso é o vendido.

Não é pelo fato de você ter separado em uma nova folha de decisão que o modelo deve pegar aqueles valores e dar um resultado "Sim" e "Não". O que ele está fazendo é interpretando um conjunto de dados e avaliando dentro dele os que podem ser vendidos e não, se em sua maioria pode ser vendido então ele pega esse conjunto e diz que pode ser vendido, mesmo tendo outros dados dentro que não deveriam ser vendidos.

É como se eu pegasse um saco de bolas coloridas e olhando por cima visse que havia mais bolas vermelhas que verde, daí alguém me pergunta, "as bolas são vermelhas?", e eu respondo "Sim!". Daí eu pego esse mesmo saco e separo em dois outros, S1 e S2, e a pessoa faz a mesma pergunta, e por algum motivo a divisão continua nos 2 sacos mais vermelhas, e minha resposta continua "sim" para os 2 sacos, ou seja True e True para ambos, mesmo sabendo que há verdes. Então uma nova divisão para cada saco, etc., em algum momento pode haver verdes em quantidades maiores que as vermelhas e haverá uma resposta "false", mas mesmo que fosse o contrário, se fossem mais Falses em algum momento poderia ter um "True". Neste caso o importante é a maneira como você divide o conjunto de amostragem.

Por isso uma melhor classificação é dada com muitas separações, porém pode ter o overfit ou divergir do resultado real, sendo o controle dos hiperparâmetros extremamente importante.

Espero ter ajudado.

Eu até entendi o que você quis dizer, porém minha dúvida não é exatamente essa, mas sim o porque do algoritmo entre duas opções escolher a pior delas.

Se eu fosse fazer um paralelo a forma com que o algoritmo avaliou esse exemplo dos carros seria mais ou menos assim:

Eu quero recrutar homens para um exercito, então eu escolho todos aqueles que tem menos de 30 anos como sendo true, e os com mais de 30 anos false.

ai eu faço outras avaliações nos que possuem (idade >30 && idade <=50) "grupo B" e considero true, já aqueles com (idade > 50) "grupo C" considero false.

ai eu faço uma terceira avaliação nos dois grupos e avaliar se eles estão com boas condições físicas e coloco um 1 nos que estão e um 0 nos que não estão:

no final excluindo a primeira divisão dos com < 30 eu teria:

  • grupo B1 ((idade > 30 & idade <=50) & (condição física = True) [False, True, True]
  • grupo B0 ((idade > 30 & idade <=50) & (condição física = False) [False, True, False]
  • grupo C1 ((idade > 50) & (condição física = True) [False, False, True]
  • grupo C0 ((idade > 50) & (condição física = False) [False, False, False]

E num cenário como esse o algoritmo daria preferência para os grupos B0 E C0 ao invés de B1 e C1.