[Airbnb Medium] Location Relevance at Airbnb 이해하기

Juneee
Almighty Data Science Bootcamp
8 min readMay 22, 2018

aka knowing where you want to go in places we’ve never been

이번 글은 Airbnb Engineering&Data Science에 올라왔던 Location Relevance at Airbnb by Maxim Charkov, Riley Newman, & Jan Overgoor 글을 읽고 정리한 내용입니다.

Motivation

여행을 좋아하는 사람이라면 한번쯤 Airbnb라는 사이트에서 숙소나 관광지를 찾아본 경험이 있을 것이다. 내가 원하는 지역과 목적을 입력하면, 내가 좋아할 만한 장소들을 추천해주는 list들이 나타난다. 이 list들은 Airbnb 직원들이 직접 가서 경험해보고 추천해주는 걸까? 만약 그렇다면 Airbnb직원들이 이세상 모든 장소들을 경험해본 걸까?

Airbnb는 자신들이 가보지 않고 경험해보지 않았더라도, 유저들이 어떤 지역을 검색하면 해당 지역과 관련된 모든 list들의 거리, 가격, quality등과 같은 여러 factor들을 고려한 후, 가고싶어 할만한 추천 list를 제공해주는 Search Algorithm을 만들고 싶었다.

이때 여러 factor들 중 가장 중요한 점이라면 당연히 위치(location)일 것이다. 내가 서울 숙소를 찾았는데 추천 list에 충청도 숙소들이 포함돼 있으면 다음에도 그 검색 사이트를 이용할까? 그만큼 내가 검색한 위치(location)와 추천 list의 관련성(relevance)은 search algorithm의 가장 기본적이면서 중요한 요소이다.

그렇다면 Airbnb는 어떻게 location relevance가 높은 search algorithm을 만들 수 있었을까?

Approach 1

처음에는 data도 적고 사람들이 좋아하는 장소를 어떻게 추정해야 할 지 경험도 없었기에, 단순하게 접근했다. user가 어떤 지역을 검색하면, 해당 지역의 center city(determined by Google)로부터 특정 거리 안에 있는 모든 list들 중에서 quality가 높은 list들을 추천해 주었다. 하지만 이런 추천 방법은 location relevance하지 않은 추천 list들을 제공한다는 문제가 있었다. Center city로 부터 특정 범위 안에만 있으면 일단 추천 list에 포함될 수 있었기에, 추천 list에 포함되는 항목들이 너무 random하게 분포하고, 심지어 인접한 다른 지역의 항목이 포함되기도 했다.

SF heatmap of listings returned without location relevance model

Approach 2

이때 user가 검색한 지역의 center city와 가까운 곳들은 location relevance가 크다. 이에 center city와의 거리에 exponential function으로 가중치를 주는 방법을 통해 추천 list들에 location relevance한 signal을 포함시키고자 했다 . 즉, user가 검색하는 지역의 center city로부터 특정 거리 안에 있는 모든 list들을 뽑은 후, center city로부터 가까이에 있으면 가중치를 많이 주고, 멀리 떨어질 수록 가중치를 적게 줬다. 그 결과, 추천 list들이 random하게 분포되는 문제는 해결됐으나, 반대로 너무 center city에 집중되다보니, 사람들이 가고 싶어 할 만한 center city 근처의 곳들도 추천 list에서 삭제되는 문제가 생겼다.

SF heatmap with exponential distance demotion

이렇게 추천 list들이 너무 center city에 집중되는 문제를 해결하기 위해, exponential function이 아닌 sigmoid function으로 가중치를 주는 방법을 생각해 봤다. Sigmoid function의 경우 exponential function만큼 가중치가 극단적으로 적용되지는 않기 때문에, center city로부터 조금 떨어져 있다고 해서 모두 추천 list에서 삭제되는게 아니라, 어느 정도 거리가 있더라도 다른 항목들에서 점수가 좋으면 추천 list에 포함되도록 할 수 있었다. 또한 sigmoid function은 k 값을 바꿔주면서 변곡점의 위치를 바꿀 수 있기 때문에, 각각의 도시 크기에 따라서 적절하게 그래프의 모양을 변경해서 적용시킬 수 있다는 장점이 있었다. 하지만 추천 list들의 center city 집중의 정도는 exponential function을 적용했을 때에 비해 줄어들긴 했지만 아직 큰 편이고, 또 모든 도시의 크기를 고려해서 적절한 sigmoid function을 찾아서 적용하기는 현실적으로 불가능 하다는 문제가 있었다.

Listing Density from city center in Sn Francisco with Sigmoid distance demotion

Approach 3

이에 Airbnb는 서로 다른 특성을 지닌 수많은 지역들을 회사 차원에서 직접 고려하기 보다는, 각 지역의 community가 스스로 문제를 해결하게 하는 방법을 생각해낸다. 즉, guest들이 어디에 주로 예약을 했는지 등과 같이 각 지역의 guest와 host의 과거 상호작용으로 구성된 풍부한 data를 이용해 보기로 한다. Airbnb는 이 과거 data를 이용해서, 사람들이 어떤 지역을 검색했을 때, 그 지역 안에서 어디에 예약을 할지라는 조건부 확률 p(booking in a location | where the person searched) 을 추정한 후, 이에 비례해서 가중치를 부여했다. 그 결과 모든 지역들의 차이를 일일이 고려하지 않으면서도, center city에 집중되지 않는 추천 list를 만들 수 있었다.

Choropleth of probability and SF heatmap with location relevance signal

이러한 방법은 San Francisco처럼 크기가 큰 지역에서는 문제가 되지 않았다. 하지만 San Francisco에 인접한 Pacifica라는 아주 작은 지역같은 경우에는 위의 model로 추천 list를 만들면 San Francisco에 있는 list들이 추천 list에 더 많이 포함되는 문제가 있었다. 이를 해결하기 위해, 검색하는 지역의 list들 수로 normalize시키는 과정을 추가시킨 model을 만들었다. 그 결과, 크기가 작은 지역이더라도 그 지역 안에 있는 list들이 추천 list에 구성되도록 만들 수 있었다.

Change in location ranking score before and after normaliztion

Approach 3 + alpha

Approach 3에서 만들어진 model은 기존 model들의 많은 문제를 해결했지만, 몇 가지 요소를 더 고려하면 더 좋은 model을 만들 수 있다. 숙소 같은 경우를 생각해보면, 우리가 숙소를 잡는 지역과 놀러가는 지역은 다를 수 있다. 예를들어, Aptos 지역에 있는 mushroom dome이라는 숙소는 매우 특이하고 사람들의 평가가 좋은 숙소다. 그런데 mushroom dome에 묵고자 예약하는 사람들은 대부분 Aptos를 여행하기 위해 이 지역 숙소를 찾는게 아니라, 근처의 Santa Cruz라는 지역을 여행하기 위해 숙소를 찾다가, 인접한 Aptos 지역에 있는 mushroom dome알 알게 돼서 숙소를 잡는다고 한다. 그런데 위의 approach 3의 model로 Santa Cruz 지역 숙소 추천 list를 구성하게 되면, 대부분 Santa Cruz 지역 안에 있는 숙소만 추천되니, 근처 지역의 mushroom dome과 같이 특별한 숙소를 경험해 볼수 있는 기회가 사라진다.

Location of Santa Cruz, Aptos and mushroom dome

이에 Airbnb는 과거 data를 이용해, 사람들이 숙소를 잡는 도시와 놀러가는 도시 사이의 관계를 보여주는 조건부 확률을 계산했다. 그리고 이 조건부 확률을 고려하는 부분을 model에 추가시켰다. 아래의 Santa Cruz같은 경우, 세로축을 기준으로 보면, 초록색 노란색으로 표시된 도시들은 과거에 사람들이 이 지역에 숙소를 잡고 Santa Cruz에 놀러 간 경우가 많았다는 것을 보여준다. 따라서 이 지역들의 상위 rank 숙소들에, 그 지역의 조건부 확률에 비례한 가중치를 부여한 후 남은 몇몇 특별한 숙소들을, Santa Cruz 숙소 추천 list에 포함시킨다면, Santa Cruz를 여행하려는 사람들에게 mushroom dome과 같이 특별하고 추억이 될만한 숙소를 경험해 볼 수 있는 기회를 제공할 수 있을 것이다.

Behavior of cities for a query for Santa Cruz

--

--