머신러닝/딥러닝 모델을 해석하는 방법과 시도가 점점 늘어나고 있다.
변수간의 인과관계를 알려주진 않지만, "어떤 변수가 가장 큰 변화를 만들어냈는지", "특정 변수가 결과에 긍정/부정적인 영향을 끼쳤는지" 등과 같은 결과에 대한 이유에 대해서 해석할 수 있는 방법은 다양한 기법을 통해 알 수 있다.
이번 포스팅에는 그중에서도 Feature Importance와 Permutation Importance에 대해 알아보고자 한다.
Feature Importance
Feature Importance는 일반적으로 Random Forest와 같은 트리 계열의 앙상블 모델을 사용하면 쉽게 얻을 수 있다.
단순 해석하면 '변수(특징) 중요도' 정도로 해석할 수 있는데, 매커니즘 자체는 불순도를 감소시키는 정보 증가량에 기초한다. 즉, 의사결정나무에서 greedy method로 정보 증가량 (또는 불순도가 가장 낮은 방법)으로 분기하게 되는데, 여러개의 의사결정나무로 이뤄진 앙상블 방법에서는 각 트리의 변수 중요도를 평균 내어 취합한 값이 변수 중요도가 된다.
이 방법 자체는 loss function에 기초했기 때문에 합리적이라고 할 수 있겠지만, 특정 상황에서 다소 biased될 수 있는데 이를 테면 연속형 변수이거나 범주형 변수 중에서도 카테고리 개수가 매우 많은 경우에 'high cardianlity' 변수들의 Feature Importance를 더 크게 만들 가능성이 있다.
Permutation Importance
Feature Importance와 같이 사용할 수 있는 방법 중 하나는 Permutation Importance이다.
순열 중요도라고도 불리는데, 입력변수 중 하나의 영향을 제거하여 성능의 차이가 얼마나 나는지 확인하는 방법이다.
단순하게 변수를 제거한다면, 입력변수의 차원이 줄어들기 때문에 모델에 입력변수에 맞춰 재학습 시켜야하는 번거로움이 있겠지만, 이 방법은 입력변수를 노이즈화하면서 차원을 유지하는 방법으로 가져가기 때문에, 학습된 모델에 데이터를 입력하여 Permutation Importance를 구할 수 있다. 이 방법은 "Drop Column Importance"와 같은 방법에 비해서 학습 시간과 복잡도가 낮다고 할 수 있다.
다만 단점도 존재하는데, 이해를 돕기 위해 예를 들어보자면
키와 성별(x1, x2)에 따른 몸무게(y)를 예측한다고 해보자.
이때 키를 노이즈 처리한다면, (200cm, 여성) 이라는 데이터가 나올 수도 있는데 해당 데이터를 가진 개체의 몸무게는 50kg이 될 수 있다.
입력변수간 상관관계가 클수록 문제가 될 수 있으니 유의하며 분석해야한다.
하지만 Permutation Importance와 Feature Importance 두 방법 모두 "변수가 영향을 끼쳤는가?"에 대한 대답은 할 수 있지만, 통계 모델과 달리 특성이 긍정인지 부정인지를 확인하기는 어렵다.