본문 바로가기

Data Science

Permutation Importance

Permutation (Feature) Importance

 

각 변수 (Feature) 의 중요도 (Importance) 를 파악하기 위해 활용한다.

 

 

Permutation Importance 에서, 변수의 중요도를 확인하는 방법은 아래와 같다.

 

① 학습 데이터 (Train Dataset) 을 바탕으로 모델을 학습한다.

 

② 검증 데이터 (Valid Dataset) 로 모델의 성능을 측정한다.

 

③ 검증 데이터의 여러 변수 (Features) 중 하나를 선택해서, 해당 변수의 값들을 랜덤하게 섞는다. (randomly permute)

 

④ 그렇게 섞은 검증 데이터로 모델의 성능을 측정하고, 원래의 검증 데이터로 측정한 모델의 성능과 비교한다.

④-① 모델의 성능 차이가 크지 않다면, 해당 변수의 중요도는 그리 크지 않다는 의미가 된다.

④-① 모델의 성능 차이가 크다면, 해당 변수의 중요도는 상대적으로 크다는 의미가 된다.

 

⑤ 중요도를 확인해보고 싶은 다른 변수들에 대해서도, 위의 ④ 과정을 적용한다.

 

 


 

한계 (Limitation)

 

▷ 변수와 변수 간 상호작용을 고려하지 못한다. (Feature Interactions)

 

실제로 변수와 변수 간의 상호작용이 모델 성능에 큰 영향을 끼치는 경우가 많은데,

Permutation Importance 에서는 하나의 변수만을 독립적으로 확인하기 때문에

변수 간 상호작용을 고려하지 못한다.

 

 

 

▷ 서로 상관관계가 있는 변수들이 존재한다면, 정확한 중요도 수치를 기대하기 어렵다. (Correlated Features)

 

변수 X와 Y의 상관관계가 높다면,

변수 X에 Permutation을 적용해도, 여전히 Y가 존재하기 때문에

모델 예측 과정에서, Y가 X와 비슷한 정보를 제공하고 있다.

따라서 모델 성능에 큰 변화가 생기지 않는다.

 

즉, X에 Permutation을 적용하더라도 여전히 Y가 존재하기 때문에,

실제로는 X의 변수 중요도가 높더라도,

Permutation Importance에서는 낮다고 판단하는 오류를 범할 수 있다.

 

그 반대의 경우도 발생할 수 있다.

 

따라서 Permutation Importance를 적용하기 전에,

반드시 변수 간 상관관계를 확인해야 한다.

 

 

 

▷ 현재 모델 내에서만 적용할 수 있다.

 

예를 들어, Catboost 모델에서 변수 X의 중요도가 높게 나왔다고 해서

다른 모델 (ex, SVM ... ) 에서도 X가 중요한 변수라고 해석할 수 없다.

 

모델마다 구조 (architecture) 및 가정 (assumptions) 이 다르기 때문이다.

 

 

 

▷ Large Dataset의 경우 많은 연산이 필요할 수 있다. (Computationally Expensive)

 

하나의 변수 X에 대해서, 한 번의 permutation 만으로는 부정확한 결과가 나올 수 있다.

 

따라서 보다 정확한 수치를 위해 permutation을 여러번 진행할 수 있지만,

데이터 및 변수의 개수가 방대하다면

연산에 많은 비용이 발생할 수 있다.

 

 


 

 

◎ References

 

< ChatGPT,  what is "permutation importance"? >

 

< ChatGPT, limitation of "permutation importance" >

 

< 우노, [ML] Sklearn Permutation Importance 를 사용한 Feature 중요도 파악 >

 

 

'Data Science' 카테고리의 다른 글

Cross Entropy  (0) 2023.06.07
Softmax  (0) 2023.06.04
Logistic Regression  (0) 2023.05.31
Backpropagation  (0) 2023.05.23
Pearson's Correlation  (0) 2023.05.19