작년에 Airbnb에서 Smart Pricing을 위한 lead time(체류날짜-예약날짜) 예측 모형을 어떻게 만들었는지 블로그에 간략하게 정리해 놨다. 머신러닝 모형으로 하려고 했으나 몇 가지 이슈가 있었다고 한다 1. 예측을 위해서는 평균 lead time이 아닌 분포가 필요하다. 즉, 확률과정(Stochastic) 모형이 가깝다. 2. Booking의 경우 보통 한 날짜에 하나만 하기 때문에 데이터 세트가 Sparse해지고 처리방법이 너무 복잡해진다. 3. Airbnb에는 너무 많은 리스팅이 있어(부럽다...) 차원수가 너무 높아진다. 4. 확장성이 크게 떨어진다. listings x check-in x number of lead times라는 3개의 변수를 통해서 예측을 해야한다. 이는 O(10^6*10^2*10^3) 복잡도를 가지게 된다. 그래서 수정한 전략은 1. Airbnb의 Listing Embeddings in Search Ranking라는 기법이 있고 이를 통해 비슷한 지역에서도 cluster를 나눌 수 있다. 예를 들면 Tahoe에서는 여름에 인기가 있는 지역과 스키를 탈 수 있는 고지로 나뉠 수 있다. 이렇게 cluster를 나눔으로써 cardinality를 줄일 수 있다. 2. 구조적인 모형을 만든다. Booking의 숫자를 Poisson 분포로 가정하고, 리드타임을 Gamma 분포로 가정한다. 이 경우 Booking과 리드타임의 관계를 Gamma로 표현할 수 있다. 3. 숙소 도착의 패턴을 시계열을 waveform으로 가정을 하면, 시계열의 패턴을 없애야 하고 푸리에 변환을 이용한다(이 경우 frequency, amplitude, angle이라는 3개의 parameter가 추가됨). 4. 2번에서 가정한 Gamma 함수에 3번에서 도출한 stationary oscillating waveform을 합쳐준다. 5. Gamma 분포의 Parameter인 alpha와 beta, stationary oscillating waveform Parameter 3개를 합쳐 총 5개의 Parameter를 머신러닝을 통해 학습시킨다. 6. 이렇게 리드타임을 예측할 경우 몇 가지 장점이 있다. 일단 엄청 고차원의 문제를 lead time이라는 단순한 차원 문제로 변환 할 수 있으며 해석이 단순해진다. 게다가 regularization를 통해 과적합 문제도 어느정도 해결 할 수 있다. 근데 아무래도 내 지식이 모자르다 보니 몇 가지 의문점이 생겼다. 1. 어떤 머신러닝 방법을 사용했다는 걸까? 느껴지기에는 maximum likelihood를 찾기 위해 descent gradient같은 방식을 사용했을 것 같다. 2. Maximum likelihood를 찾기 위한 방법이라면 MCMC와 같은 방법대신 다른 최적화 방법을 사용했을까? MCMC의 경우 계산이 복잡해져서 그런걸까? 3. Cluster 별 분포를 만들었다면 hierarchical linear modeling를 응용해 볼 수도 있지 않을까? 느껴지기에 뭔가 단순화 해놓은 Random Effect 모형의 느낌이다.

Learning Market Dynamics for Optimal Pricing

Medium

Learning Market Dynamics for Optimal Pricing

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2019년 8월 7일 오전 6:13

댓글 0