데이터 분석 (DA)

[인과추론] 데이터의 편향 제거하기; Propensity Score란?

채얼음 2024. 11. 24. 23:54

검색어와 문서에 대한 유저 피드백 데이터를 사용해 특정 검색어로 노출되는 문서의 품질을 알기 위해 클릭율을 예측한다고 가정해 봅시다. 상위에 노출된 문서는 유저가 더 많이 클릭하기 때문에 클릭율이 좋다고 착각할 수 있습니다. 하지만 클릭 데이터에는 위치 편향(Position Bias)이 내포되어 있습니다.

 

사용자는 상단에 노출된 문서를 더 자주 보게 되고, 그만큼 더 클릭하며, 실제 품질보다 높은 클릭 전환율을 보일 가능성이 있습니다. 이런 편향을 제거하지 않으면 문서 품질에 대한 정확한 평가가 어렵습니다.

 

우리의 목표는 위치 편향을 보정하여 문서 자체 품질의 순수한 평가를 수행하는 것입니다. 본 글은 이를 해결하기 위해 인과추론 분야에서 주로 사용되는 Propensity Score 개념을 중심으로 한 편향 보정 방법에 대해 소개합니다.

 


 

Propensity Score

Propensity Score(성향 점수)는 특정 처치를 받을 확률을 나타냅니다. 본 글에서는 문서가 노출될 확률로 계산해 보겠습니다.

 

성향 점수의 수학적 정의

수학적으로, 성향 점수 e(x)는 다음과 같이 정의됩니다. 처치의 조건부 확률이라고도 말할 수 있습니다.

 

  • T: 처치 변수 (문서가 노출되었는지 여부, 1: 노출됨, 0: 노출되지 않음)
  • X: 설명 변수 (문서와 사용자, 쿼리의 특성)
  • P(T=1∣X=x): 설명 변수를 기반으로 한 처치 확률

 

실제 검색 엔진 사례에서의 성향 점수

검색 데이터에서 성향 점수를 계산하기 위해 문서의 텍스트 연관성 점수, 유저 기기 종류 등을 변수로 사용할 수 있습니다.

이 데이터를 바탕으로 로지스틱 회귀(Logistic Regression) 모델을 사용해 성향 점수를 계산할 수 있습니다.

 

다음은 Python 코드로 성향 점수를 구해보는 예제입니다.

 

import pandas as pd
from sklearn.linear_model import LogisticRegression

# 예제 데이터
data = pd.DataFrame({
    'doc_score': [0.8, 0.6, 0.9, 0.3, 0.5],
    'user_device': [1, 0, 1, 0, 0],  # 1: 모바일, 0: 데스크톱
    'exposure': [1, 0, 1, 0, 0]  # 처치 여부 (1: 노출, 0: 노출되지 않음)
})

# 설명 변수(X)와 처치 여부(T)
X = data[['doc_score', 'user_device']]
T = data['exposure']

# 로지스틱 회귀 모델로 성향 점수 계산
model = LogisticRegression()
model.fit(X, T)
propensity_scores = model.predict_proba(X)[:, 1]  # 성향 점수

# 성향 점수 출력
data['propensity_score'] = propensity_scores
print(data)

 

만약 위 모델로 계산한 문서 0번의 성향 점수는 0.87이라고 한다면, 0번 문서가 노출될 확률이 87%라는 뜻입니다.

우리는 이제 이 성향 점수를 활용해 위치 편향을 보정할 수 있습니다. 

 


    •  

Propensity Score를 활용한 편향 보정

 

1. Matching (매칭)

매칭(Matching)은 성향 점수가 유사한 처치군과 비처치군을 쌍으로 묶어 비교하는 방법입니다. 이 과정은 교란 변수의 영향을 최소화하고, 처치의 순수한 효과를 추정하는 데 유용합니다.

 

매칭 방법의 단계는 다음과 같습니다.

  1. 각 문서의 성향 점수를 계산합니다.
  2. 처치군에서 비처치군과 가장 가까운 성향 점수의 문서를 매칭합니다.
  3. 매칭된 문서 쌍 간 클릭율 차이를 비교합니다.

 

다음은 예시입니다.

 

문서 Propensity Score 노출 클릭율
A 0.87 1 0.88
B 0.85 0 0.79
C 0.42 1 0.56
D 0.40 0 0.23

 

문서 A와 B, 문서 C와 D를 각각 매칭하고, 매칭된 쌍(A-B, C-D)의 클릭율 차이를 비교해 위치의 영향을 제거한 문서 클릭율 차이를 평가합니다.

 

이 방법의 장점은 직관적이고 성향 점수가 잘 맞는 경우 편향 제거에 효과적입니다. 다만, 매칭되지 않는 데이터(예: 성향 점수가 너무 차이나는 문서들)이 분석에서 제외될 수 있다는 단점이 있습니다.

 

2. Weighting (가중치 부여)

가중치 부여(Weighting)는 성향 점수를 활용해 각 데이터에 적절한 가중치를 할당하여 분석하는 방법입니다.

이 방법은 모든 데이터를 활용하면서 편향을 보정하는 데 유용합니다.

 

역확률 가중치 (Inverse Probability Weighting, IPW) 라고 부르는 가중치는 다음과 같이 계산됩니다.

 

 

  • : 문서 i의 가중치
  • e(x_i): 문서 i의 성향 점수

 

이때, 처치 받지 않은 데이터에 대해서는 다음과 같이 계산합니다.

 

 

역확률 가중치 적용 방법의 단계는 다음과 같습니다.

  1. 각 문서의 성향 점수를 계산합니다.
  2. 각 문서 성향 점수의 역수를 가중치로 할당합니다.
  3. 가중치를 적용하여 데이터를 조정합니다.

 

다음은 예시입니다.

 

문서 Propensity Score 노출 클릭율 가중치
A 0.87 1 0.88 1/0
B 0.85 0 0.79 1/(10.851​)6.67
C 0.42 1 0.56 1/0.4212.38
D 0.40 0 0.23 1/(10.401​)1.67

 

위 데이터 예시에서 클릭율 계산 시, 노출이 안 된 문서(B, D)에 더 높은 가중치를 부여해 처치에 대한 균형을 맞추게 됩니다.

이렇게 되면, 데이터 손실 없이 모든 문서를 활용 가능하고, 보통 처리군과 비처리군의 불균형이 클 때 유용합니다. 단점은 성향 점수가 극단값(0 또는 1)에 가까운 경우 가중치가 매우 커져 분석에 왜곡이 발생할 수 있습니다.

 


본 글에서는 검색 엔진의 위치 편향 사례를 통해 Propensity Score를 기반으로 한 기본적인 편향 보정 기법을 살펴보았습니다.

다음 글에서는 이어서 역확률 가중치를 활용한 Doubly Robust Method 방법에 대해서 알아볼 예정입니다.