기능 중요도의 맥락에서 의사 결정 트리 해석


9

sklearn으로 작성된 의사 결정 트리 분류 모델의 의사 결정 프로세스를 완전히 이해하는 방법을 이해하려고합니다. 내가보고있는 두 가지 주요 측면은 트리의 그래프 표시와 기능의 중요성 목록입니다. 내가 이해하지 못하는 것은 기능 컨텍스트가 트리의 맥락에서 어떻게 결정되는지입니다. 예를 들어, 다음은 중요한 기능 목록입니다.

기능 순위 : 1. FeatureA (0.300237)

  1. FeatureB (0.166800)

  2. FeatureC (0.092472)

  3. 추천 D (0.075009)

  4. 특징 E (0.068310)

  5. FeatureF (0.067118)

  6. 특징 G (0.066510)

  7. FeatureH (0.043502)

  8. 특징 I (0.040281)

  9. FeatureJ (0.039006)

  10. FeatureK (0.032618)

  11. 특징 L (0.008136)

  12. FeatureM (0.000000)

그러나 나무 꼭대기를 보면 다음과 같습니다.트리 스 니펫

실제로, "가장 중요한"기능의 일부는 트리 아래로 훨씬 더 내려갈 때까지 나타나지 않으며 트리의 맨 위는 가장 낮은 순위의 기능 중 하나 인 FeatureJ입니다. 나의 순진한 가정은 가장 중요한 기능이 가장 큰 영향을 미치기 위해 나무 꼭대기 근처에 순위가 매겨 질 것이라고 가정했습니다. 그것이 틀렸다면, "중요한"기능을 만드는 것은 무엇입니까?


1
첫 번째 노드의 왼쪽과 오른쪽에 몇 개의 샘플이 할당됩니까?
oW_

답변:


4

기능이 중요할수록 노드가 의사 결정 트리에서 더 높을 필요는 없습니다.

이는 단순히 두 가지 경우에 서로 다른 기준 (예 : Gini 불순물, 엔트로피 정보 이득, MSE 등)이 사용될 수 있기 때문입니다 (분할 대 중요도).

예를 들어,에서 SkLearn당신 엔트로피 정보 이득 기준 (참조에 따라 의사 결정 트리에서 노드의 분할을 선택할 수 있습니다 criterion'entropy'에서 SkLearn지니의 평균 감소입니다) 기능의 중요성을 지니 중요성에 의해 주어진다 동안 무작위 숲의 모든 나무에서 주어진 변수에 대한 불순물 ( feature_importances_at SkLearnand here 참조 ).

내가 맞다면, SkLearnGini 불순물과 Gini 중요도가 동일하지 않기 때문에 기능의 중요성이 Gini 중요도에 의해 제공되는 동안 Gini 중요도 기준에 따라 의사 결정 트리에서 노드 분할을 선택하더라도 마찬가지입니다. ( Gini 중요성에 대한 Stackoverflow에서 이것이것도 참조하십시오 ).


이미 @oW_는 원래 질문에 대한 정답을 제시했지만 독자에게 더 간결하고 명쾌한 방식으로 작성하는 것이 좋다고 생각했습니다.
추방 됨

3

scikit-learn에서 기능의 중요성은 노드 불순물의 감소입니다. 핵심은 노드 수준에서만 중요도를 측정한다는 것입니다. 그런 다음 해당 노드에 도달하는 샘플 수에 따라 모든 노드에 가중치가 적용됩니다.

따라서 첫 번째 분할 후 왼쪽 노드에 몇 개의 샘플 만있는 경우 왼쪽 노드의 게인이 매우 적은 샘플에만 영향을 줄 수 있기 때문에 J가 가장 중요한 기능임을 의미하지는 않습니다. 각 노드에서 샘플 수를 추가로 인쇄하면 진행 상황을 더 잘 이해할 수 있습니다.


2

노드가 트리에서 낮다고해서 반드시 덜 중요하다는 의미는 아닙니다. sci-kitlearn의 기능 중요도는 노드가 순전히 클래스를 분리하는 방법 (Gini 인덱스)에 의해 계산됩니다. 자른 나무에서도 A가 J에 비해 3 배로 분할되고 엔트로피 점수 (Gini와 비슷한 순도)가 J보다 A 노드에서 다소 높다는 것을 알 수 있습니다.

그러나 하나의 노드 만 선택할 수있는 경우 J를 선택하면 최상의 예측 결과를 얻을 수 있습니다. 그러나 여러 가지 다른 결정을 내리는 많은 노드를 가질 수있는 옵션이 있다면 최선의 선택이 될 것입니다.


따라서 평신도의 관점에서 두 가지 가능한 분류가 있다고 가정 할 때 (0과 1이라고하자), 트리의 기저에있는 특징은 표본을 2 개의 그룹으로 가장 잘 나누는 특징이 될 것입니다. 1은 나무의 한쪽에 있고 0은 다른쪽에 있습니다. 정확합니까? 이 맥락에서 0과 1을 분리하는 것이 최고가 아니라면 어떤 기능의 중요성이 순위를 매기는지는 아직 확실하지 않습니다.
Tim Lindsey

-2

변수 중요도는 변수를 제거 할 때 모델 정확도가 감소하여 측정됩니다. 변수없이 새 모델로 작성된 새 의사 결정 트리는 원래 트리와 매우 다르게 보일 수 있습니다. 다이어그램의 분할 결정은 모델의 모든 변수를 고려하면서 수행됩니다.

루트 (및 다른 노드)에서 분할 할 변수는 불순물로 측정됩니다. 좋은 순도 (예 : 왼쪽 분기의 모든 대상 값이 동일 함)는 정확성을 보장하지 않습니다. 데이터가 왜곡 될 수 있으며 오른쪽 분기에는 왼쪽 분기보다 더 많은 응답이 있습니다. 따라서 왼쪽 분기를 올바르게 분류하는 것은 좋지 않으며 오른쪽 분기도 고려해야합니다. 따라서 분할 변수는 전체 모형 정확도에 중요한 변수 일 수도 있고 아닐 수도 있습니다.

변수 중요도는 변수 선택에 대한 더 나은 척도입니다.


2
그것이 그것이 scikit-learn에서 구현되는 방식이라고 생각하지 않습니다. 여기서, 특징 중요도는 "중요도", 즉 해당 노드에 도달하는 샘플의 비율에 의해 가중 된 노드 불순물의 총 감소로 측정된다.
oW_

"특성의 중요성은 그 특성에 의해 초래 된 기준의 (정규화 된) 총 감소로 계산됩니다. Gini 중요도라고도합니다." - scikit-learn.org/stable/modules/generated/...
영감
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.