Coding Diary.

(Machine Learning) 결정 트리, 속성 중요도 본문

Coding/Machine Learning

(Machine Learning) 결정 트리, 속성 중요도

life-of-nomad 2023. 10. 8. 14:55
728x90
반응형

결정 트리는 수많은 머신 러닝 알고리즘들 중 가장 직관적인 것들 중 하나입니다. 결정 트리의 장점은 쉽게 해석할 수 있다는 것입니다. 머신 러닝 모델을 해석한다는 건, 예측을 하는 데 있어서 어떤 속성들이 좀 더 중요하게 사용됐고, 어떤 것들이 좀 덜 중요하게 사용됐는지 알아낸다는 것입니다.

 

예를 들어서 독감 데이터에서 열, 기침, 몸살 이 속성들 중 어떤 것이 독감을 예측하는 데 가장 영향력이 크고, 어떤 것이 덜 중요하게 사용됐는지 알수 있다는 것입니다.

 

만들어 놓은 트리를 이용해서 각 속성들의 중요도, feature importance를 계산하는 방법에 대해서 알아보겠습니다.

 

1. 노드 중요도 (Node Importance)

속성들의 중요도를 계산하기 위해서는 먼저 각 노드 하나하나의 중요도, node importance를 알아야 합니다. 노드 중요도는 다음과 같이 계산합니다.

여기서 ni는 노드 중요도의 약자입니다.

 

n은 중요도를 계산하려는 노드까지 오는 학습 데이터의 수, GI는 이 노드까지 오는 데이터 셋의 불순도, m은 전체 학습 데이터의 수입니다. 계산하려는 노드까지 오는 학습 데이터 수와 불순도를 곱한 후, 총 데이터 수로 나눠주는 것입니다.

 

이걸 중요도를 계산하려는 노드, 왼쪽 자식 노드, 오른쪽 자식 노드에서다 계산을 합니다. 그리고 현재 노드의 계산 값에서 나머지 두 노드의 계산 값을 뺍니다.

 

예를 들어 보겠습니다.

 

전체 학습 데이터는 90개이고, root 노드의 중요도를 계산해보겠습니다.

root 노드에 오는 데이터는 90개, 이 데이터의 지니 불순도는 0.333입니다. 왼쪽 노드까지 가는 데이터는 60개, 데이터들읠 지니 불순도는 0.270 입니다. 오른쪽 노드에 도달하는 데이터는 30개, 이 데이터들의 지니 불순도는 0.222입니다. 이걸 이용해서 중요도를 계산해보면

이 나옵니다. 이 중요도가 정확히 뭘 수치화한 것일까요?

각 노드들의 데이터 수를 다 빼고 보면

위 노드까지 오는 데이터 셋의 지니 불순도가 있고, 왼쪽 노드까지 오는 데이터 셋의 불순도, 오른쪽 노드까지 오는 데이터 셋의 불순도가 있습니다. 위 노드의 불순도에서 아래 노드들의 불순도를 빼고, 여기에 그냥 각 노드들까지 가는 데이터의 비율을 맞춰준 것입니다. 

한 노드에서 데이터를 두 개로 나눴을 때, 데이터 수에 비례해서 불순도가 얼마나 줄어들었는지를 계산하는 것입니다. 지니 불순도는 낮을수록 좋습니다.

 

특정 노드가 얼마나 중요한 노드인지를 판단할 때, 이 노드 전후로 불순도가 얼마나 낮아졌다. 이걸 사용하는 것입니다. 불순도가 낮아질수록 나눠지는 데이터 셋들이 점점 독감 또는 일반 감기 데이터 중 하나가 많아지고 있는 것이니까 나눠지는 데이터 셋들에 대해서 점점 알아간다, 또는 '더 많은 정보를 얻는다' 라고 해서 이 수치를 정보 증가량, information gain 이라고 부릅니다.

 

2. 속성 중요도 (Feature Importance)

이런 식으로 모든 질문 노드의 중요도를 다 계산해 줍니다.

이걸 써서 특정 속성이 얼마나 중요한지를 계산할 수 있습니다.

고열이 얼마나 중요한지 알고 싶다고 합시다. 고열 질문을 갖는 모든 노드의 중요도를 더합니다. 트리 안에 모든 노드의 중요도의 합으로 나눠줍니다.

 

기침이 얼만큼 중요한지 알고 싶으면. 기침 질문을 갖는 모든 노드 중요도를 더합니다. 그리고 트리 안에 모든 노드의 중요도 합으로 나눠줍니다. 몸살도 마찬가지 입니다.

 

즉, 모든 노드가 데이터를 양 갈래로 나누면서 나누는 데이터 셋들의 지니 불순도를 낮춥니다. 전체적으로 낮춰진 불순도에서 특정 속성 하나가 낮춘 불순도가 얼마나 되는지를 계산한 것입니다.

 

특정 속성을 질문으로 갖는 노드들의 중요도의 평균을 구한 거랑 비슷합니다. 그렇기 때문에 이렇게 최종적으로 구한 값을 속성의 평균 지니 감소(Mean Gini decrease)라고 부르기도 합니다.

 

각 속성의 평균 지니 감소를 이용하면, 특정 속성이 결정 트리 안에서 평균적으로 얼마나 불순도를 낮췄는 지를 계산할 수 있고, 이게 있으면 결정 트리 안에서 그 속성이 얼마나 중요한지를 판단할 수 있습니다.

728x90
반응형