변수 간에 상관관계가 존재하면 한 변수의 효과가 다른 변수들 값에 의존하기 때문에 예측은 변수 효과의 합으로 표현될 수 없습니다.
변수 상호작용?
만약 머신러닝 모델이 2개 특성에 근거하여 예측한다면 예측을 4개의 항으로 분해할 수 있습니다.
1. 상수항
2. 첫 번째 특성 항
3. 두 번째 특성 항
4. 2개 특성 간 상호작용 항
2개 특성 간의 상호작용은 각 특성 효과를 고려한 이후에 특성값을 바꾸면서 발생하는 예측의 변화량을 나타냅니다.
예를 들어, 모델이 집 크기(크고 작음)와 위치(좋고 나쁨)을 특성으로 집값을 예측한다고 합시다.
Location | Size | Prediction |
good | big | 300,000 |
good | small | 200,000 |
bad | big | 250,000 |
bad | small | 150,000 |
모델 예측을 아래 단계로 나눌 수 있습니다.
1. 상수항: 150,000
2. 집 크기 특성 효과: 크면 +100,000 / 작으면 +0
3. 위치 특성 효과: 좋으면 +50,000 / 나쁘면 +0
여기선 예측을 집 크기 및 위치 특성의 단일 효과 합으로 표현할 수 있기 때문에 상호작용 효과가 없다는 것을 알 수 있습니다. 즉 작은 집을 큰 집으로 바꾸면 예측은 항상 100,000만큼 증가한다는 이야기입니다.
아래 상호작용 효과가 포함된 다른 예를 살펴봅시다.
Location | Size | Prediction |
good | big | 400,000 |
good | small | 200,000 |
bad | big | 250,000 |
bad | small | 150,000 |
단계는 위에서 나눈 것과 동일합니다. 위의 표와 유일하게 다른 점은 "위치가 좋고, 집 크기가 클 때" 예측값이 100,000만큼 더 크다는 것입니다. 이는 집 크기와 위치 간의 상관관계를 나타냅니다.
상호작용 크기를 추정하는 방법 중 하나는 예측값의 변화가 얼마나 특성 간 상관관계에 의존하는지 측정하는 것입니다. 이런 방법을 H-statistic 이라고 하며, Friedman과 Popesuc가 2008년에 고안하였습니다. 1
이론: Friedman의 H-statistic
총 2가지 케이스를 살펴보겠습니다. 첫 번째로 쌍방향(two-way) 상호작용은 모델의 2개 특성이 서로 상호작용을 하는지 그리고 어느 정도까지 하는지를 파악하는 것입니다. 두 번째로 전체(total) 상호작용은 한 특성이 다른 나머지 특성들과 상호작용을 하는지 그리고 어느 정도까지 하는지를 파악하는 것입니다.
2개 특성들이 상호작용하지 않는다면, PDP를 아래와 같이 분해할 수 있습니다(PDP가 0에 중심화되었다고 가정).
$PD_{jk}(x_j, x_k) = PD_j(x_j) + PD_k(x_k)$
$PD_{jk}(x_j, x_k)$: 2개 특성들의 쌍방향 상호작용
$PD_j(x_j), PD_k(x_k)$: 단일 특성들의 PDP
특성이 다른 특성들과 상호작용이 없다면 예측 함수 $\hat{f}$를 부분 의존도 함수의 합으로 표현할 수 있습니다. 첫 번째 항은 오직 $j$에 의존하고 두 번째 항은 j를 제외한 모든 다른 특성들에 의존합니다.
$\hat{f} (x) = PD_j(x_j) + PD_{-j}(x_{-j})$
$PD_{-j}(x_{-j}): $j$번째 특성을 제외한 나머지 특성들에 의존하는 부분 의존도 함수
위의 수식은 상호작용이 없는 부분 의존도 함수를 나타냅니다. 다음으로 관찰된 부분 의존도 함수와 상호작용 없이 분해된 함수의 차이를 측정합니다. 부분 의존도 함수 결과의 분산을 계산하거나(2개 특성 간 상호작용 측정) 전체 함수 결과의 분산을 계산(한 특성과 다른 나머지 특성 간 상호작용 측정)합니다.
상호작용에 의해 해석하기 더 어려워집니다. 이는 쌍방향 상호작용의 분산이 2차원 PDP 분산보다 클 때 발생합니다.
특성 $j$와 $k$ 간의 상호작용을 위한 H-statstic을 수학적으로 표현하면 아래와 같습니다.
이는 특성 $j$가 다른 특성들과 상호작용하는지 여부를 측정하는 것에도 동일하게 적용됩니다.
H-statistic은 모든 데이터 포인터들을 순환하고 각 포인트마다 부분 의존도가 측정돼야 하므로 많은 계산을 필요로 합니다. 최악의 경우 쌍방향 H-statistic을 계산하기 위해 $2n^2$번, 전체 H-statistic을 계산하기 위해 $3n^2$번 호출이 필요합니다. 계산 속도를 높이기 위해 샘플링을 할 수도 있습니다. 물론 부분 의존도 함수의 추정치 분산을 증가시키므로 H-statistic이 불안정해집니다. 따라서 충분한 데이터 포인트를 샘플링하는 것이 중요합니다.
예제
날씨와 날짜 특성에 따른 자전거 대여 수를 예측한다고 합시다. SVM으로 모델을 학습했고, 아래는 특성 간 상호작용 H-statistic Plot입니다.
전반적으로 특성 간 상호작용 효과는 매우 약한 편입니다(특성마다 분산 설명력이 10% 이하).
다음으로 분류 문제에 대한 상호작용 수치(=강도)를 계산해보겠습니다. 랜덤포레스트로 자궁경부암 발생 예측을 진행한 그래프입니다.
호르몬 피임약을 복용한 해(years)가 다른 모든 특성들과의 상호작용 효과가 가장 큽니다. 그다음은 임신 횟수입니다.
모든 특성들의 상호작용을 살펴본 뒤 1개의 특성을 선택하고 더 깊게 들어가 다른 특성들과의 쌍방향 상호작용을 파악할 수 있습니다.
임신 횟수와 다른 특성 각각과의 상호작용 효과를 나타냅니다. 임신 횟수와 나이 간에 강한 상호작용을 보이고 있습니다.
장점
1. H-statistic은 의미 있는 해석을 지닙니다. 상호작용은 그것에 의해 설명되는 분산의 양으로 정의됩니다.
2. 통계 수치는 차원이 없기 때문에 특성 간 그리고 모델 간에도 비교가 가능합니다.
3. 특별한 형태를 가지고 있다 하더라도 모든 종류의 상호작용을 탐지할 수 있습니다.
단점
1. H-statistic을 구하기 위해서는 계산 시간이 오래 걸립니다.
2. 계산 과정에 주변 분포를 추정하는 것이 포함되는데, 이때 모든 데이터들을 사용하지 않으면 해당 추정치 역시 일정한 분산을 가지게 됩니다. 이는 데이터를 샘플링할 때 추정치가 실행마다 달라지고 결과 역시 불안정할 수 있음을 뜻합니다. H-statistic 계산을 여러 번 반복하고 안정된 결과가 나올 만큼 충분한 데이터를 가지고 있는지 확인해보는 것을 추천합니다.
3. 상호작용이 "강하다"라고 판단하려면 H-statstic 값이 얼마나 커야 할지 결정하기 어렵습니다.
4. H-statistic은 1보다 클 수 있는데 이때 해석이 어렵습니다.
5. 두 특성의 전체 효과가 약하고 대부분 상호작용으로 구성되었다면 H-statistic은 매우 커질 것입니다. 이는 강한 상호작용 효과로 과대해석될 수 있으나 사실상 모델에는 별 영향을 끼치지 않습니다.
6. H-statistic은 상호작용 강도를 나타내지만 어떤 모양인지는 알려주지 않습니다. 상호작용이 어떤 모습을 하고 있는지 알려주는 것은 PDP의 역할입니다.
7. H-statistic은 입력이 픽셀이라면 유용하게 사용될 수 없으므로 이미지 분류 작업에는 적절하지 않습니다.
8. 상호작용 통계치는 특성을 독립적으로 섞을 수 있다는 가정에서 구해지는 것입니다. 만약 특성들 간 강한 상관관계가 존재한다면 해당 가정은 위반되고 현실에서 실현 가능성이 없는 특성 결합을 포함하게 됩니다. 이는 PDP 역시 가지고 있는 문제로 과대추정 및 과소추정이란 결론에 이를 수도 있습니다.
참조
https://christophm.github.io/interpretable-ml-book/interaction.html
'문돌이 존버 > 데이터 분석' 카테고리의 다른 글
트랜스포머(Transformer) 간단히 이해하기 (1) (1) | 2021.11.11 |
---|---|
(Explainable AI) Counterfactual Explanations (0) | 2021.09.16 |
(Explainable AI) Accumulated Local Effects Plot 개념 이해하기 (5) | 2021.08.20 |
핸즈온 머신러닝 2 복습하기(챕터10: 케라스를 사용한 인공 신경망 소개) (0) | 2021.08.19 |
(Explainable AI) Individual Condition Expectation 개념 이해하기 (0) | 2021.08.17 |