Machine Learning

Featrue Importance(변수 중요도) - 트리 기반 모델

robin0309 2020. 12. 15. 09:08

* Decision Tree 

1. 의사결정나무(Decision Tree)는 그 시각적인 구조 덕분에 depth가 크지 않는 한 해석이 용이한, 간단한(simple) 모델에 해당합니다. 다른 간단 모델인 Linear Regression, Logistic Regression은 feature와 target이 선형적 관계일 때 통하는 방법인 반면, 의사결정나무는 비선형적인 관계에서도 통하는 방법, 앙상블이 의사결정나무 기반

2. 목적이 분류(Classification)일 때에는 불순도 지표로 Gini 계수 및 엔트로피를 이용하고, 목적이 회귀(Regression)일 때에는 MSE(Mean Square Error) 등을 이용해서 분산을 감소시키는 방향으로 노드를 째게 됩니다. 이 과정에서, 불순도를 가장 크게 감소시키는 변수의 중요도가 가장 크게 됩니다. CART 알고리즘은 바로 이 불순도를 이용해서 가장 중요한 변수들을 찾아냅니다.

 

CART ( Classification and Regression Tree)

1.  분류 및 회귀 트리 (Sckit learn , Spark)

2.  적절한 불순물 기준을 사용하여 분할 할 최적의 수치 적 또는 범주 적 특징을 찾는다 (GIni index 이용)

3.  CART는 숫자 및 범주 변수를 모두 쉽게 처리

4.  CART 알고리즘은 자체적으로 가장 중요한 변수를 식별하고 중요하지 않은 변수를 제거

5.  CART는 이상 값을 쉽게 처리

 

 ID3

1.  불순물 기준 엔트로피를 사용하여 정보 이득  최대화 할 범주 형 특징을 찾는 다 방향 트리를 생성

2. Regression 은 처리 할 수 없고 Classification 문제에만 적합   ex) spark

3. 샘플이 작으면 과적합 되기가 쉬움

4. 결측값 처리  X

 

Feature Importance (Gini Importance)

G= gini imputrity
I(c)= Information gain

1. Scikit-learn에서는 지니 중요도(Gini Importance)를 이용해서 각 feature의 중요도를 측정

2. 해당 노드에서 샘플들이 이질적으로 구성되어 있을수록, 다시 말해서 모든 Class에 골고루 분포되어 있을수록 지니 불순도(impurity)가 높아짐 , 의사결정나무는 이렇게 불순도를 감소시키는 방향으로 노드를 생성하고 분류를 진행

3. 노드 중요도라는 게 사실 우리한테 더 잘 알려진 Information Gain

4. Information Gain을 최대화하는 feature를 기준으로 노드를 째게 된다. 어떤 노드의 노드 중요도 값이 클수록, 그 노드에서 특히 불순도가 크게 감소한다는 것을 의미하기 때문에, 이러한 면에서 그 노드가 중요하다고 말하는 것은 합리적

5. 즉, 전체 노드의 중요도를 합한 것 대비 ii번째 feature에 의해 째진 노드들의 중요도를 합한 것이 바로 ii번째 feature의 중요도 I(fi)I(fi)가 됩니다! 이 값이 클수록, 해당 feature가 트리를 생성하고 샘플을 분류하는데 큰 역할을 했다고 볼 수 있고 이 I(fi)I(fi)를 다시 모든 feature들의 중요도의 합으로 나눠서 정규화한 것으로 이용한다고 합니다.

 

 * 각 feature의 중요도를 계산해보겠습니다. ii번째 feature, fifi의 중요도 I(fi)I(fi)는 다음과 같이 계산됩니다.

* 랜덤 포레스트에서 변수 중요도는 어떻게 될까요? 랜덤 포레스트는 의사결정나무들을 병렬적으로 합한 것이므로, 랜덤 포레스트에서 I(fi)I(fi)는 결국 각 트리에서의 I(fi)I(fi)를 모두 평균 낸 것

 

불순도 기반 Feature Importance의 한계

 

1. scikit-learn의 디폴트 랜덤 포레스트 Feature Importance는  biased 하다 

2. 특히 randomforest는 연속형변수 또는 high cardinality 범주형 변수인 경우 중요도가 부풀려짐

2-1 cardinality가 큰 변수일 수록, 노드를 쨀 게 훨씬 더 많아서 노드 중요도 값이 높게 나오는 것이라 추측

3. 또 한, 이 불순도를 기반으로 한 변수 중요도는 train 과정에서 얻은 중요도이기 때문에, test 데이터셋에서는 이 변수 중요도가 어떻게 변하는 지 알 수 없음 

3-1. 실제로 test 데이터셋에서는 중요하지 않은 변수가 학습 과정에서는 가장 중요한 변수로 계산될 수 있음

반응형