초이스 모델링 (choice modeling) 공부를 하다보면 logit model, mixed logit model, probit model 등 다양한 모델들에 대한 이름을 접하게 된다. 본 게시글에서는 각 모델들이 나오게된 배경과 특징은 무엇인지, 모델에 필요한 가정은 무엇인지, 추정 방법은 어떻게 되는지 등등을 정리해보려고 한다.
시작하기 전에, 이 포스팅은 대부분 코넬대학교 Ricardo Daziano 교수님의 강의 내용을 정리했음을 밝힌다. 용어를 영어로도 밝혀야할 필요가 있다고 판단한 경우 병기했다.
0. 선수 지식¶
0. 1. Cholesky decomposition¶
역행렬 $A^{-1}$ 이 존재하면서 대칭 행렬 $A^{T} = A$ 인 행렬 A가 있을때 그 행렬을 하삼각행렬(lower triangular matrix)과 그 전치(transpose) 행렬로 표현해내기 위해 (즉 $A=LL^{T}$) 촐레스키 분해를 사용한다. 이 개념이 생소하다면 구글링으로 10분정도 공부하고 이 글을 읽어야 한다.
0. 2. 공분산 행렬¶
오차항 (error term)의 가정과 그로 인해 파생되는 공분산 행렬 (covariance matrix, 주로 $\Sigma$ -시그마-로 표현됨)을 이해하는 것이 이 모델들을 정확히 이해하는데 중요한 기능을 한다. 다음 게시글에 개념이 매우 잘 정리되어 있다. Covariance matrix 는 square 하고 symmetric 하기 때문에 cholesky decomposition을 사용할 수 있다.
https://www.facebook.com/268252310782824/posts/545834706357915/
0. 3. Monte Carlo simulation¶
우리는 어떤 해를 수치적인 방법으로 찾아낼 수 없을때 시뮬레이션을 이용한다. 기본 발상은 큰수의 법칙에 따라 무수히 많은 독립된 sample 을 뽑으면 샘플 평균이 모평균에 가까워진다는 발상에 근거한다. 이 개념도 생소하다면 구글링으로 10분 정도 먼저 공부해보자.
0. 4. 여러 분포들¶
데이터 포인트가 (더 정확히 말하자면 random variable 이) 우리가 잘 알고 있는 어떤 분포를 따른다고 가정하는 경우가 많다. 이 경우 pdf/cdf 는 어떻게 되는지 평균과 표준 편차는 어떻게 되는지를 비롯해서 분포에 대해 알고 있는 좋은 성질들을 활용해 우리가 원하는 결과를 도출해 낼 수 있다.
- Normal distribution: $N(\mu, \sigma^2)$
- Multivariate normal distribution: $\text{MVN}(\mu, \Sigma)$
- Gumbel distribution/Fisher-Tippett type 1 extreme value (EV1) distribution: $EV1(\mu, \lambda)$
from IPython.core.display import display, HTML
from IPython.display import Image
display(HTML("<style>.container {width:90% !important;}</style>"))
Logit model¶
Conditional logit model¶
응답자 $i \in {1,...,N}$ 와 대안 (예를들어 자가용, 버스) $j \in {1, ..., J}$ 가 있을 때 대안 특정 변수(Alternative-specific attributes)를 $x_{ij}$라 하자. 어떨때 대안마다 다른 변수를 사용하는 걸까? 예를들어 자가용를 이용할때 차내 통행 시간 가치와 버스를 이용할때 차내 통행 시간 가치가 다르다면 이렇게 추정하는게 합리적이다.
$$U_{ij} = V_{ij}+\varepsilon_{ij}$$여기서 이 모델의 이름에 "conditional" 이 들어가는 이유를 알 수 있다. 이산적인 대안 $j$ (자가용, 버스 등)에 'conditional on' 되어있는 utility 식을 얻기 때문이다. 여기서 관측가능한 확정 항목인 $V_{ij}$를 이용해서 가상의 개념인 효용 (Utility, $U_{ij}$)을 표현해주기 위해 오차항 $\varepsilon_{ij}$을 더한다. 여기서 오차항이 검벨 (Gumbel) 분포를 따른다고 하는 가정이 필요하다.
$\varepsilon_{ij}\sim^{iid}EV1(0, \lambda)$
Gumbel distribution¶
검벨분포의 여러가지 좋은 특성들 덕분에 선택 확률은 closed form 을 가진다. 이는 analytical 해를 가지는 것이며 근사해를 구할 필요 없이 정확해를 계산해낼 수 있다는 뜻이다.
$$P_{ij} = \frac{exp(V_{ij})}{\sum_{j}{exp(V_{ij})}}$$Heteroskedastic logit¶
Conditional logit model 을 확장한 것이다. 주요한 차이점은 오차항에 대한 가정에서 나온다. Heteroskedastic logit은 오차항을 heteroskedastic extreme value (HEV)라 가정한다.
$\varepsilon_{ij}\sim^{iid}EV1(0, \lambda_j)$
아까 conditional logit model 에 쓰인 검벨 분포 식과 비교해서 관찰해보자. 분산에 아래 첨자 j 가 붙은 점만 다르다는 것을 쉽게 알 수 있다. 각 대안에 대해서 각기 다른 분산을 가정한 것이다. 이름의 어원을 살펴보면 기억하기가 쉽다. hetero는 다르다는 뜻이고, skedastic 은 분산(variance)를 의미한다.
그렇다면 어떨때 Conditional logit model 보다 Heteroskedastic logit 를 쓰는 것이 타당할까? 이 질문에 답을 내리기 위해서는 분산 (Variance)가 어디서 나오는지를 이해해야한다. 우리가 표현하지 못한 대안 특성(attribute)에서 나온다. 예를들어 편안함(comfort)이라는 주관적인 특성을 측정하기 어렵기 때문에 일반적으로 대안 특성에 포함되지 않는데 사람들은 교통수단을 선택할때 분명 편안함을 고려해서 선택하기 때문에 이렇게 모델에 포함되지 않는 속성이 분산을 야기한다. 이제 편안함/불편함이라는 속성을 조금 더 쪼개서 생각해보자. 접근의 편리성이 있을 수도 있겠고, 차내 혼잡으로 인한 불편을 생각해볼 수도 있고, 다양한 요소들이 '편안함' 이라는 속성에 영향을 미칠 것이다. 이때 차내 혼잡으로 인한 불편이라는 것을 생각해보면 이것은 일반적으로 자가용에서는 적용되기 어렵고 대중교통에 한해 적용되는 것이다. 이 경우 차내 혼잡으로 인한 불편함에 대해 사람들마다 부여하는 가치가 다르다면 대중교통은 큰 분산을 가질 것이고, 자가용은 비교적 작은 분산을 가질 것이다. 이 경우 대안 j 에 따라 다른 분산을 가정하는 Heteroskedastic logit 이 타당해진다.
Mixed logit model (MXL) 과 Mixed multinomial logit (MMNL)¶
Unobserved preference heterogeneity.¶
Motivation¶
선택 모형(Choice model)을 구축하려고 하다보면 가장 먼저는 집단 전체의 (aggregated) 선호가 궁금할 것이고, 연구 목적에 따라 사람들의 선호의 이질성까지도 파악하고 싶어질 수 있다. 어떻게 heterogeneity 를 표현할 수 있는지 아직 공부를 하지 않은 사람이라면 사람 i 마다 별도의 파라미터 $\beta_i$를 추정하면 되지 않을까? 라는 생각이 자연스럽게 들 수 있다. 하지만 이런 접근 방법은 여러 문제가 있다. 첫째로, 많은 경우에 데이터가 충분치 않다. 한 사람 i 의 선호를 모델링 할 수 있을만큼의 데이터를 그 한사람에게서 수집해야하는데 현실적으로 거의 불가능하다. 둘째는 파라미터 개수가 데이터 수에 비해 너무 많아지고 과적합 (overfitting) 문제가 생긴다. 셋째로는 Out of sample problem 문제를 들 수 있다. 구축한 모델이 우리가 가지고 있는 샘플 이외의 현상을 설명할 수 없을때 Out of sample problem 이 발생한다고 말한다. 예를들어 철수, 영희, 민서의 수단 선택 모형을 구축했는데 유림이가 나타나면 유림이의 수단 선호를 설명할 방법이 없는것이다. 이를 해결하기 위한 좋은 전략은 분포 (distribution)를 다루는 것이다. 아래 그림에서 잘 드러나듯 검은색 점으로 표현된 데이터 포인트들을 표현하기위해 파안색 바 그래프를 그리면 너무 많은 파라미터가 필요하고 과적합 문제가 발생하지만, 빨간색 그래프 처럼 특정 분포 (이 예시에서는 노멀 분포)를 가정하면 두개의 파라미터 만으로도 데이터 포인트를 잘 설명할 수 있고 이는 훌륭한 차원 축소 (dimensionality reduction) 전략이다.
Image('working with distribution.jpeg', width=900)
식 (1) 은 아까 우리의 처음의 발상 -사람마다 별도의 파라미터 $\beta_i$를 추정하면 되지 않을까?- 하는 생각에서 적어낸 식이며 이는 접근이 생각이 아니라는 것을 이미 논의했다.
$\beta_i$ 를 노멀 분포로 가정하기¶
\begin{align} \beta_i = \beta + L\xi_i\tag{2} \\ \xi_i \sim N(0, I)\tag{3} \end{align}그 이후 식 (2)는 위에서 서술한 많은 문제들을 해결할 수 있도록 $\beta_i$ 를 분포로 표현해낸다. $\beta$가 평균이고 $\xi_i$ 은 관측 불가능한 랜덤 변수이며 개인 특성 변수이다. 식 (3)은 $\xi_i$를 정규화된 랜덤 변수로 가정한 것이다. $L$은 분산의 크기가 얼마나 큰지를 측정한다.
식 (2) (3)를 바탕으로 $\beta_i$가 어떤 분포를 따르는지 다시 적어내며 생략했던 오차항의 가정을 다시 적어주면,
\begin{align} U_{ijt} = x'_{ijt}\beta_i+ \varepsilon_{ijt}\tag{4} \\ \beta_i \sim N(\beta, \Sigma)\tag{5}\\ \varepsilon_{ijt} \sim^{iid} EV1(0,1)\tag{6} \end{align}공분산행렬 (Covariance matrix) 는 Cholesky decomposition $\Sigma = LL'$ 으로 계산해낼 수 있다. L 은 lower triangular matrix 인데 이는 모델이 파라미터 간의 correlation을 허용한다는 것을 드러내준다.
정리하면, 식 (5) 에서 나타내듯 파라미터 $\beta_i$가 multivariate normal distribution 을 따른다고 가정한 것이 mixed logit model 이다. 특히 여기서 노멀 분포 (normal distribution)을 가정해서 선호 이질성 (heterogeneity)을 표현해내기 때문에 normal heterogeneity 를 가정했다고 말하며 MXL과 MMNL 모델 각각의 경우 N-MXL, N-MMNL 라고 줄여쓴다.
선택 확률 $P_i$ 적분 식으로 표현하기¶
식 (6) 의 오차항에 대한 가정 때문에 우리는 conditional logit kernel 이 필요하다. $\xi_i$ 가 랜덤 변수이므로 $\xi_i$를 안다고 가정하고 조건부 확률을 적어보자. $$P_{ijt|\xi_i} = \frac{exp[x'_{ijt}\beta+x'_{ijt}L\xi_i]}{\sum_{j}exp[x'_{ijt}\beta+x'_{ijt}L\xi_i]}$$
$\xi_i$ 는 t 에 따라 변화하지 않는다 ($\xi_i$ 는 개인 특성을 설명하는 랜덤 변수이기 때문에 sequence of choice $t$에 따라 변하지 않는다). 따라서 한 개인이 내린 여러 선택 (sequence of choice) $t = 1, ..., T_i$ 를 다음과 같이 곱의 형태로 표현할 수 있다. $$P_{i|\xi_i} = \prod_{t=1}^{T_i} \frac{exp[x'_{ij_{it}}\beta+x'_{ij_{it}}L\xi_i]}{\sum_{j}exp[x'_{ij_{it}}\beta+x'_{ij_{it}}L\xi_i]}$$ 이때 $j_{it}$ 는 개인 $i$가 choice situation $t$에 선택한 대안 $j$ 이다.
우리가 $\xi_i$ 를 안다고 했을때 다음과 같은 conditional probability 형태로 $P_i$ 를 적어낼 수 있다. $$P_{i} = \int P_{i|\xi_i} f(\xi_i) d\xi_i = \int \prod_{t=1}^{T_i} \frac{exp[x'_{ij_{it}}\beta+x'_{ij_{it}}L\xi_i]}{\sum_{j}exp[x'_{ij_{it}}\beta+x'_{ij_{it}}L\xi_i]} f(\xi_i) d\xi_i $$
여기서 $f(\xi_i)$는 랜덤 변수 $\xi_i$의 pdf 이다.
Monte Carlo Simulation¶
하지만 실제로는 $\xi_i$가 우리가 모르는 랜덤 변수이므로 위 적분식을 계산해낼 수 없다 (조금 더 정확히 표현하면 closed form solution이 존재하지 않는다). 여기서 Monte Carlo simulation 이 필요하며, pdf 로부터 반복적으로 $\xi_i$ 를 draw 해서 expectation을 구해낸다.
$$\\ \approx \frac{1}{R} \sum_{r=1}^{R} \prod_{t=1}^{T_i} \frac{exp[x'_{ij_{it}}\beta+x'_{ij_{it}}L\xi_i^{(r)}]}{\sum_{j}exp[x'_{ij_{it}}\beta+x'_{ij_{it}}L\xi_i^{(r)}]} $$Two layers of randomness 이해하기¶
앞서 반복적으로 설명했듯 $\xi_i$ 는 랜덤 변수이고 standard normal을 따른다고 가정한다. 이건 우리의 가정이다.
$$U_{ij} = \gamma_j + \hat{\beta}_{ik}x_{ijk} + \hat{\sigma}_k x_{ijk}\xi_{ij} + \varepsilon_{ij}, \xi_{ik} \sim \cal{N}(0,1)\\ = \gamma_j + \hat{\beta}_{ik}x_{ijk} + \varepsilon_{ij}, \hat{\beta}_{ik} \sim \cal{N}(\hat{\beta}_k,\hat{\sigma}_k^2)$$또 다른 randomness 는 $\hat{\beta}_k,\hat{\sigma}_k$의 추정 과정에서 도입된다. 우리는 모평균 값인 $\beta_k,\sigma_k$를 모르기 때문에 샘플 평균인 $\hat{\beta}_k,\hat{\sigma}_k$를 구해내는 것이다. 이때 무수히 많은 수의 샘플을 뽑으면 점근적으로 샘플의 분포는 Gaussian을 따르며 샘플 평균은 모평균에 가까워진다는 사실이 알려져 있다.
$$\hat{\beta}_k \sim \cal{N}(\beta_k, \text{s.e.}_{\beta_k})$$$$\hat{\sigma}_k \sim \cal{N}(\sigma_k, \text{s.e.}_{\sigma_k})$$이때의 randomness 는 우리의 가정사항이 아니라 무수히 많은 수의 샘플을 뽑는 과정에서 도입된 것이다.
Image('halton draw.png', width=800)
위 그림은 mixed logit model 에서 Halton Draws를 사용하는 이유를 잘 드러내준다. 같은 수의 draw를 뽑았을때 대부분의 프로그래밍 언어에 내장된 pseudo-random draw (거의 모든 프로그래밍 언어에서 random number generation을 하면 이미 내장된 seed에 저장된 수를 주기 때문에 엄밀히 말해 진짜 random 이 아니다) 와 비교했을때 훨씬 효율적으로 전체 면적을 커버하는 것을 볼 수 있다.
'석박사 > 연구노트' 카테고리의 다른 글
[논문이 나왔습니다] 토픽: Mobility as a Service, 방법론: Discrete choice analysis (2) | 2021.06.06 |
---|---|
[저널 클럽] Multimodal system optimization (0) | 2021.06.02 |
Stochastic Gradient descent (0) | 2020.08.29 |
라이드쉐어링 서비스 실시간 차량-승객 매칭 문제 리뷰 (0) | 2020.08.28 |
지도교수님과의 한달반 간의 연구 미팅 기록 (2) | 2020.08.23 |