데이터마이닝에 관한 스터디를 진행하고자 정리한 내용입니다. 참고한 자료들은 아래에 따로 정리해두었으며,개인 공부 과정에서 틀린 부분이 있을 수 있습니다. (잘못된 부분은 알려주시면 수정하겠습니다!)
Intro.
우리는 앞서 트리 기반 모델을 다룰 때 앙상블을 통해 모델의 성능을 강력하게 높일 수 있음을 배웠습니다. 그런데 여기서 다시 한 가지 의문이 들 수 있어요. Decision Tree의 장점은 명확한(해석 가능한) 규칙의 집합을 만들어 ‘의사 결정’에 직관적으로 도움을 준다는 것이었는데, 앙상블은 그런 트리가 수십, 수백 개가 모여서 작동합니다. 그렇다면 그 앙상블 모델의 결과에 대해서는 대체 어떻게 설명할 수 있을까요?
학습 매커니즘을 일일이 설명할 수는 있겠지만, 더이상 원래의 트리모델처럼 명확한 규칙으로 설명할 수 없을 것입니다. (ex. 방 개수(X)가 3보다 큰 경우에 집값(Y)이 더 높더라 등) 이처럼 우리가 다루는 거의 대부분의 모델들은 복잡도가 높아질수록, 그 결과에 대한 설명 가능성은 떨어지기 마련입니다. 아래 그림처럼 일종의 Trade off 관계를 갖는 것이죠.
흔히 모델링 과정에서 성능을 높이는 데에만 몰두하기 쉽지만, 현실 세계에서는 ‘설명 가능성’이라는 것이 생각보다 더 중요합니다. 만약 여러분이 몸이 너무 아파서 병원에 갔다고 가정해보죠. 의사 A는 그냥 “폐렴인 거 같네요.”라고 얘기하고, 의사 B는 “여기 엑스레이 사진을 보시면 음영이 확인됩니다. 그래서 폐렴인 거 같아요.”라고 얘기한다면, 여러분은 어떤 의사를 더 신뢰할 수 있을까요? 당연히 결과에 대한 근거를 함께 얘기해주는 의사 B에 대한 신뢰도가 더 높을 것입니다. 즉, 실제 의사결정 혹은 문제해결 과정에서는 ‘설명 가능성’이 곧 결과에 대한 ‘신뢰’와도 직결되는 것이죠. 그러니 AI 모델도 단순히 결과만 툭 내놓는 것이 아니라, 그렇게 예측한 근거를 말해주어야 모델을 더 신뢰할 수 있고 의사결정 과정에도 더 적극적으로 활용할 수 있습니다.
이러한 배경 아래서, AI의 예측 결과를 사람이 이해할 수 있도록 해석을 제공하는 방법론이 발전되어 왔는데, 이를 eXplainable AI (설명 가능한 인공지능) 또는 줄여서 XAI라고 합니다. 앙상블이나 딥러닝 등 성능은 좋지만 해석력이 낮은 모델들이 많아짐에 따라, 그에 대한 해석력을 높이기 위한 연구가 활발해졌고 지금도 여전히 많은 연구가 이루어지고 있습니다.
XAI는 그 적용 범위에 따라 크게 두 가지로 분류될 수 있는데요. 먼저 Model-Agnostic method는 모델의 특성을 이용하지 않기 때문에 모델에 관계없이 사용할 수 있는 방법입니다. 반면 Model-Specific method는 모델의 특성이나 학습 과정에 종속된 방식으로 특정 종류의 모델에만 사용할 수 있는 방법이다. 우리는 보다 광범위한 활용이 가능한 Model-Agnostic method를 중심으로 알아보도록 하겠습니다.
1. Partial Dependence Plot
1.1. PDP 소개
가장 먼저 살펴볼 방법은 Partial Dependence Plot(부분 의존도 그림)입니다. PDP는 관심 변수가 예측 결과에 미치는 Marginal effect를 활용해 입력과 출력의 관계를 보여주는 도구입니다.
📌Marginal effect란?
다른 모든 변수가 일정하게 유지되는 상황에서한 변수에 변화가 생길 때, 이 변화가 결과 변수에 미치는 영향을 Marginal effect라 합니다. 이는 변수를 marginalizing해줌으로써 구할 수 있는데, marginalizing이란 아래와 같이 marginal distribution을 계산하는 과정을 말합니다. 빨간 사각형의 값들이 각 변수들에 대한 marginal distribution
• $P_X(x)$ : 확률변수 x에 대한 marginal distribution = (y에 관계없이) 오로지 x의 변화에 따른 결과의 변화를 확인할 수 있음 • $P_Y(y)$ : 확률변수 y에 대한 marginal distribution = (x에 관계없이) 오로지 y의 변화에 따른 결과의 변화를 확인할 수 있음
PDP는 이 Marginalizing의 개념을 활용하여, 관심 있는 변수와 예측값 사이의 marginal effect를 계산하여 보여줍니다. 우리는 이를 통해 해당 변수와 타깃 간의 관계를 볼 수 있고, 이는 모델을 해석하는 데 도움을 줄 수 있습니다.
PDP의 간단한 예를 살펴봅시다. 만약 캘리포니아 집값(Y)을 여러 변수(X1, X2, ...)로 예측했을 때 아래처럼 각 변수별 영향을 확인할 수 있습니다. (ex. 중위소득(MedInc)이 클수록 집값도 큰 경향이 있구나.)
1.2. 계산 원리
그럼 수식을 통해 PDP가 어떻게 그려지는지 자세히 들여다봅시다. ($x_s$라는 변수의 영향을 확인해보고 싶은 상황)이 관심 변수 $x_s$에 대한 Partial Dependence Function은 $x_c$ 집합에 있는 변수 분포에 대해 marginalize 함으로써 구할 수 있습니다. 즉 $\hat{f}_{x_s}$는 다른 변수들은 고정시켜놓고 관심변수 $x_s$만 변화시켰을 때의 값을 나타내는 함수가 되는 것이죠.
앞의 식은 $\hat{f}$을 $x$ 전체가 아닌 $x_s$에만 의존하는 함수로 만들기 위해, $x_c$에 대해 기댓값을 취해준 것이라 이해하면 됩니다.
또한 아래 식은 회귀 모델일 경우의 식이고, 분류 모델일 경우 $\int$만 $\sum$으로 바꿔주면 됩니다.
식으로만 보면 잘 와닿지 않을 테니, 간단한 예시를 하나 보겠습니다. ‘나이’와 ‘키’를 독립변수로 하여, 월급을 예측하는 모델을 만든다고 가정합시다. 이때, 만약 ‘나이’라는 변수가 예측값(월급)에 어떤 영향을 미치는지 보려면 아래와 같은 과정으로 PDP를 그리게 됩니다.
$X$={나이, 키}, $Y$={월급} 이고, $X_s$={나이}, $X_c$={키}인 상황
$X_s$를 특정 값(ex. 30)으로 고정했을 때 $\hat{f}$ 의 조건부 기댓값을 계산한다
$X_s$를 다른 값(ex. 26,27, … ,33)으로도 고정해가며 마찬가지로 계산한다
계산한 모든 예측값들을 선으로 이어서 PDP 플롯을 그린다
출처: DMQA Open Seminar
Partial Dependence Function의 이론적 정의는 위와 같지만, 우리가 실제로 PDP를 사용할 때는 한 가지 문제가 있습니다. 조건부 기댓값을 계산하기 위해서는 $x_c$의 확률분포 $p(X_c)$를 알아야 하는데, 현실적으로 그 분포는 주어지지 않는다는 것입니다.
ex) 아래 예시에서, `HouseAge=37`일 때 `MedInc = 4.2` & ` AveOccup = 1.1` & `AveRooms=6.8`일 확률이라는 것은 알 수 없는 게 정상..
따라서 Train set의 평균을 계산하여 그 값을 근사하는데, 이는 아래와 같은 수식으로 정의됩니다. (이렇게 평균을 계산하여 근사하는 방법을 몬테 카를로 방법(Monte Carlo method)이라고 부릅니다.)
그리고 그걸 ${1 \over n}$로 나눠서 평균 냄! = $x_s$에 대한 Partial Dependence값!
그러면, $x_s$값을 바꿔가면서 각각의 P.D를 구할 수 있고, 그러면 아까처럼 P.D.P를 그릴 수 있음!
몬테카를로 적용 예시
Ex) `HouseAge=37`일 때의 Partial Dependence = (나머지 변수들의 0번째 값과 `HouseAge=37` 을 넣었을 때 모델 결과값 + 나머지 변수들의 1번째 값과 `HouseAge=37` 을 넣었을 때 모델 결과값 + ... + 나머지 변수들의 10번째 값과 `HouseAge=37` 을 넣었을 때 모델 결과값) / 10
1.3. 활용 방법
이제 PDP를 어떻게 활용할 수 있는지 다양한 사례와 함께 살펴보도록 하겠습니다.
[ex1. 일일 자전거 대여량 예측 by RandomForestRegressor]
먼저 ‘일일 자전거 대여량’을 예측하는 랜덤포레스트 회귀 모형의 예시를 살펴봅시다. 우리는 날씨와 관련된 변수들에 대한 PDP를 아래와 같이 각각 그려볼 수 있고, 이를 통해 몇 가지 해석을 도출할 수 있습니다
“Temperature가 20도 근방으로 적당할 때 가장 많이 대여한다”
“Humidity나 Wind speed가 너무 높으면 대여량이 줄어든다”
⚠️PDP 해석 시에는 X축에 나타난 데이터의 빈도를 함께 봐야 합니다. 예를 들어, 풍속이 아주 높은 경우에는 변화가 없는 것처럼 직선으로 나타나지만, (그래프 밑의 검은 부분을 보면) 데이터가 없어서 그런 것을 알 수 있습니다.
PDP는 범주형(categorical) 변수에 대해서도 적용할 수 있는데, 아래처럼 ‘계절’ 변수에 따른 효과도 확인해볼 수 있습니다. 이 경우에는 봄에만 상대적으로 대여량이 적고, 그 외에는 계절별 영향 크지 않은 것으로 해석할 수 있겠습니다.
[ex2. 자궁경부암 양/음성 분류 by RandomForestClassifier]
PDP는 이와 같은 분류 문제에 대해서도 적용할 수 있는데, 이때는 회귀 모델과 다르게 y축이 암(양성)으로 분류될 확률을 나타냅니다. 역시 관심 변수의 부분 의존도를 확인하며 해석을 도출할 수 있습니다. (여기서도 역시 변수들의 값이 큰 경우에는 데이터가 부족하여 신뢰도가 높지는 않다는 점을 유념해야겠습니다.)
“Age가 40세 이하인 경우에 암 발병 확률이 더 낮다.”
“Years on hormonal contraceptives(피임약 복용 기간)이 길수록 발병 확률이 높아진다.”
PDP는 변수 2개에 대하여 함께 plot을 그릴 수도 있습니다. 아래 그림을 통해, 45세가 넘어가면 암 발생확률이 높아진다는 것을 다시금 확인할 수 있네요. 또한 25세 이하 여성의 경우, 1번이나 2번 임신한 경우에 더 낮은 암 위험이 있다고 판단해볼 수 있습니다. (상관관계일 뿐, 인과관계는 아닙니다!)
1.4. 장단점
😄 Advantages
직관적인 해석이 가능합니다. PDP 대상이 되는 변수가 다른 변수들과 상관관계를 가지지 않는다면, PDP는 완벽하게 해당 특성의 모델 예측에 대한 평균 영향력을 알려줄 수 있습니다. (현실적으로 그러기 쉽지는 않겠지만요..!)
구현하기가 쉽습니다. 관심 변수에 대해 marginalizing만 하면 되니 계산이 복잡하지 않습니다.
☹️ Disadvantages
동시에해석할 수 있는 특성 개수는 최대 2개라는 아쉬움이 있습니다. 한 plot에 변수 2개까지만 그릴 수 있기 때문입니다. (= PDP 자체의 문제라기보다 사람이 3차원 이상을 상상할 수 없는 직관력의 문제)
데이터가 적은 경우 신뢰성이 떨어질 수 있습니다. 아까 ‘자전거 대여량’ 예시에서 풍속이 매우 높은 경우를 생각하시면 되겠습니다.
관심변수 $x_s$가 나머지 변수들 $x_c$와 상관관계가 없다는 가정을 전제로 합니다. 만약 변수 간 상관이 크다면 매우 이상한 값이 나올 수 있으니 주의해야 합니다.
$x_c$에 대한 평균적인 marginal effect 만 표시하기 때문에 변수 내부의 다양한 효과가 무시될 수 있습니다. (=${1 \over n}$로 나눠줬으니까 $x_c$의 분포가 무시됨) 예를 들어, 어떤 특성이 커지면 커질수록 예측치가 커지고, 동시에 작으면 작을수록 예측치가 커진다고 합시다. 이 경우 PDP는 양쪽이 서로 상쇄되어 수평선으로 그려질 것이고, 이는 특성의 영향력는 없는 것처럼 왜곡해서 보여줄 것입니다. (이 단점은 ALE, ICE 등의 방법으로 보완할 수 있음)
2. Individual Conditional Expectation plot
2.1. ICE 소개
다음으로 볼 방법은 Individual Conditional Expectation plot(개별 조건부 평균 그림)입니다.
ICE는 PDP를 약간 수정한 개념으로 보면 되는데요. 앞서 본 PDP가 관심 변수와 예측값의 '평균적인' 관계를 보여줬다면, ICE는 관심 변수와 예측값의 관계를 "개별 관측치에 대해" 시각화한 것입니다.
2.2. 계산 원리
ICE 그래프는 왼쪽 그림처럼 관측치마다 하나의 선이 그려지는데, 이 선들의 평균을 구한 게 곧 PDP가 됩니다. (오른쪽 그림은 방금 봤던 ‘자궁경부암 양/음성 분류 예시’의 PDP입니다.)
이렇게 특정 변수의 영향력을 개별 관측치에 대해 그리게 되면 PDP보다 더 많은 인사이트를 얻을 수도 있습니다. 앞서 PDP의 단점으로 변수 내부의 다양한 관계를 잘 발견하지 못한다는 단점이 있었는데, ICE를 사용하면 이를 보완할 수 있는 것이죠.
식으로는 아래와 같이 정의됩니다.
$x_s$ : 영향력을 확인하고 싶은 관심 변수
$x_c$ : 관심 변수를 제외한 나머지 변수들
$\hat{f}$ : 학습이 완료된 (복잡한) 모델
🆕$i$ : 개별 관측치의 번호 (전체 n개 중에 i번째 관측치
2.3. 활용 방법
이번에도 활용 사례를 살펴봅시다.
[ex1. 일일 자전거 대여량 예측 by RandomForestRegressor]
앞서 본 ‘자전거 대여량’에 대한 예측모델을 ICE로 그려볼 수 있습니다. 이 경우는 거의 모든 곡선이 동일한 형태를 띠고, 앞서 본 PDP의 모양과도 동일합니다. 이런 경우에는 PDP를 그리는 것만으로 충분할 수 있습니다.
[ex2. 자궁경부암 양/음성 분류 by RandomForestClassifier]
그런데 자궁경부암 분류 모델은 상황이 조금 다릅니다. 우리는 앞서 PDP를 통해 대략 45세를 기점으로 암 발생확률이 늘어나는 경향을 확인할 수 있었습니다. 그런데 ICE plot을 그려보면 데이터셋의 모든 여성들이 그렇지는 않다는 것을 알 수 있습니다. 어릴 때부터 암 발생확률 높은 경우는 나이에 따라 증가하는 경향이 딱히 없는 것입니다.
이처럼 ICE plot을 사용하면 PDP에서 숨겨져 있던 해석을 얻을 수도 있습니다. 변수 변화에 따른 이질적 효과를 더욱 잘 드러내기 위한 c-ICE와 d-ICE도 존재하니, 궁금하신 분들은 추가로 살보시면 좋을 것 같습니다.
2.4. 장단점
😄 Advantages
모든 인스턴스에 대해 확인할 수 있으니 PDP보다 직관적입니다.
개별 인스턴스들의 이질적인 관계를 자세히 들여다 볼 수 있습니다.
☹️ Disadvantages
한 번에 하나의 변수만 표현 가능합니다. 특성을 2개 사용할 수는 있지만, 선들이 겹치면서 이해하기 매우 어려워집니다.
PDP와 마찬가지로, 변수 간 상관이 있으면 이상한 결과가 나올 수 있습니다.
모든 인스턴스를 다 그리다 보니, 인스턴스 개수가 많으면 너무 복잡해져서 해석이 어려울 수 있습니다. 이런 경우에는 개별 선의 투명도를 높이거나 샘플 몇 개만 뽑아서 그려보기도 합니다. (=무조건 ICE를 그린다고 좋은 것이 아닌 이유)
평균적인 관계를 바로 파악하기는 힘듭니다. 이건 PDP를 그리면 해결됩니다.
3. Feature Importance
3.1. Feature Importance 소개
다음은 트리 기반을 자주 쓰는 분들에겐 익숙한 Feature Importance입니다. 모델이 예측을 수행하는 데 있어 각 독립변수가 얼마나 중요한지를 측정하는 방법으로, 종류를 아래와 같이 2개로 나눠볼 수 있습니다.
MDI : 트리 기반 모델에서 사용하는 특성 중요도 측정 방법
PFI : 트리 기반 모델뿐만 아니라, 선형 회귀, 딥러닝 모델 등에도 적용할 수 있어 일반적으로 더 널리 사용됨
중요도가 높게 나온 변수를 중심으로 데이터 전처리나 모델 개선 전략을 수립하는 데 활용할 수 있습니다.
3.2. 계산 원리
① 특성 중요도(Mean decrease impurity, MDI)
불순도를 기반으로 분기하는 트리 모델의 특징을 그대로 활용합니다. 즉, 불순도가 감소하는 데 많이 기여한 특성일수록 중요하다고 취급하는 것입니다.
앙상블 모델(RandomForest, GBM 등)에서는 여러 개의 트리를 조합하므로, 전체 트리에서 해당 변수가 기여한 불순도 감소량을 평균내어 계산합니다.
회귀의 경우는 MSE(Mean Squared Error) 등을 이용해서 분산을 감소시키는 방향으로 노드가 생성되므로, 분산을 가장 크게 감소시키는 변수가 중요도가 가장 크게 나타납니다.
② 순열 중요도 (Permutation Feature Importance, PFI)
특정 변수의 중요도를 평가하기 위해, 그 변수의 값을 랜덤으로 섞어서 무력화한 뒤 성능을 비교하는 방식입니다.
확인하고자 하는 특성의 column만 shuffle하여 성능을 측정 ➔ 원래 성능과의 차이 계산 ➔ 차이가 크다면, 그만큼 중요한 변수!
모델 간 동등한 비교를 위해 PFI Ratio로 정규화해서 쓰는 경우가 많습니다.
보통 Shuffle의 랜덤성을 감안하여 여러 번 수행한 값을 사용하게 되고, 이에 따라 아래 그림처럼 Bar 형태로 결과를 확인할 수 있습니다.
3.3. 장단점
😄 Advantages
(MDI) Tree 기반 모델에서 손쉽게 사용 가능합니다 / (PFI) 모델 상관없이 손쉽게 사용 가능합니다.
(PFI Ratio) 정규화된 값이므로 다른 모델과 비교 가능합니다.
☹️ Disadvantages
(PFI) 무작위로 섞는(permute) 것이기 때문에 Train/Test data의 차이에 따라 결과가 달라질 수 있습니다.