Interpretação da árvore de decisão no contexto de importâncias de recurso

9

Estou tentando entender como entender completamente o processo de decisão de um modelo de classificação de árvore de decisão criado com o sklearn. O principal aspecto que estou vendo é uma representação gráfica da árvore e a lista de importâncias de recursos. O que não entendo é como a importância do recurso é determinada no contexto da árvore. Por exemplo, aqui está minha lista de importâncias de recursos:

Classificação de recursos: 1. FeatureA (0,300237)

  1. RecursoB (0,166800)

  2. RecursoC (0,092472)

  3. RecursoD (0,075009)

  4. RecursoE (0,068310)

  5. RecursoF (0,067118)

  6. RecursoG (0,066510)

  7. RecursoH (0,043502)

  8. RecursoI (0,040281)

  9. RecursoJ (0,039006)

  10. RecursoK (0,032618)

  11. RecursoL (0,008136)

  12. RecursoM (0,000000)

No entanto, quando olho para o topo da árvore, fica assim:Fragmento de árvore

De fato, alguns dos recursos classificados como "mais importantes" não aparecem até muito mais abaixo na árvore, e o topo da árvore é o FeatureJ, que é um dos recursos de classificação mais baixa. Minha suposição ingênua seria que as características mais importantes seriam classificadas perto do topo da árvore para ter o maior impacto. Se isso estiver incorreto, o que torna um recurso "importante"?

Tim Lindsey
fonte
11
quantas amostras são atribuídas à esquerda e à direita do primeiro nó?
oW_

Respostas:

4

Não é necessário que, quanto mais importante for um recurso, mais alto será o nó na árvore de decisão.

Isso ocorre simplesmente porque critérios diferentes (por exemplo, Impureza de Gini, Ganho de Informações de Entropia, MSE etc.) podem ser usados ​​em cada um desses dois casos (divisão versus importância).

Por exemplo, SkLearnvocê pode optar por dividir os nós na árvore de decisão, de acordo com o critério Entropy-Information Gain (consulte criterion& 'entropy'at SkLearn), enquanto a importância dos recursos é dada por Gini Importance, que é a diminuição média do Gini impureza para uma determinada variável em todas as árvores da floresta aleatório (veja feature_importances_no SkLearne aqui ).

Se eu estiver certo, SkLearno mesmo se aplica, mesmo que você decida fazer a divisão dos nós na árvore de decisão de acordo com o critério Gini Impurity, enquanto a importância dos recursos é dada pelo Gini Importance porque Gini Impurity e Gini Importance não são idênticos (veja também isso e isso no Stackoverflow sobre Gini Importance).

Exilado
fonte
O @oW_ já deu uma resposta bastante correta à pergunta original, mas pensei que seria bom escrevê-la de maneira mais concisa e lúcida para o leitor.
Outcast
3

No scikit-learn, a importância do recurso é a diminuição da impureza do nó. A chave é que ele mede a importância apenas no nível do nó. Em seguida, todos os nós são ponderados pelo número de amostras que atingem esse nó.

Portanto, se apenas algumas amostras terminarem no nó esquerdo após a primeira divisão, isso pode não significar que J é o recurso mais importante porque o ganho no nó esquerdo pode afetar apenas muito poucas amostras. Se você imprimir adicionalmente o número de amostras em cada nó, poderá obter uma imagem melhor do que está acontecendo.

oW_
fonte
2

Só porque um nó está mais baixo na árvore não significa necessariamente que é menos importante. A importância do recurso no sci-kitlearn é calculada pela pureza de um nó que separa as classes (índice de Gini). Você notará, mesmo na sua árvore cortada, que A é dividido três vezes em comparação com a única vez de J e as pontuações de entropia (uma medida de pureza semelhante a Gini) são um pouco mais altas nos nós A do que J.

No entanto, se você pudesse escolher apenas um nó, escolheria J porque isso resultaria nas melhores previsões. Mas se você tivesse a opção de ter muitos nós tomando várias decisões diferentes, A seria a melhor escolha.

J_Heads
fonte
Portanto, em termos leigos, assumindo que existem apenas 2 classificações possíveis (vamos chamá-los de 0 e 1), o recurso na base da árvore será o que melhor divide as amostras nos 2 grupos (ou seja, o melhor trabalho de dividir os 1s em um lado da árvore e os 0s no outro). Isso é preciso? Eu ainda não estou totalmente claro sobre o recurso de importância é ranking, se não o melhor é a separar os 0s e 1s neste contexto
Tim Lindsey
-2

A importância da variável é medida pela diminuição da precisão do modelo quando a variável é removida. A nova árvore de decisão criada com o novo modelo sem a variável pode parecer muito diferente da árvore original. A decisão de divisão no seu diagrama é tomada considerando todas as variáveis ​​no modelo.

Qual variável dividir na raiz (e outros nós) é medida pela impureza. A boa pureza (por exemplo: tudo no ramo esquerdo tem o mesmo valor-alvo) não é garantia de boa precisão. Seus dados podem estar distorcidos; seu ramo direito tem mais respostas que o ramo esquerdo. Portanto, não é bom apenas classificar corretamente o ramo esquerdo, também precisamos considerar o ramo direito. Portanto, a variável de divisão pode ou não ser uma variável importante para a precisão geral do modelo.

Importância variável é uma medida melhor para a seleção de variáveis.

Olá Mundo
fonte
2
Eu não acho que é assim que é implementado no scikit-learn. Lá, a importância do recurso é medida como "importância do gini", ou seja, redução total na impureza do nó ponderada pela proporção de amostras que atingem esse nó.
oW_
"A importância de um recurso é calculada como a redução total (normalizada) do critério trazido por esse recurso. Também é conhecida como a importância de Gini". - scikit-learn.org/stable/modules/generated/…
Afflatus