[Airbnb] Listing Embeddings in Search Ranking

Heejun Park
Almighty Data Science Bootcamp
8 min readMay 19, 2018

Airbnb의 Data science 관련 글 중 “Listing Embeddings in Search Ranking”을 재정리하여 올렸습니다.

Motivation

고객이 Airbnb를 사용 할 때 두 가지로 분류하여 볼 수 있다고 한다.

  • 어떤 목록을 클릭 후, 검색 결과로 다시 돌아가는 사람
  • 현재 목록과 관련된 추천 정보 메뉴를 클릭하여 탐색하는 사람

여기서 검색 순위 및 유사 목록 기능은 예약 전환의 99%를 차지하고 있다. 이는 목록 추천 기능의 중요성을 시사한다.

그래서 Airbnb는 위치, 가격, 유형, 구조 및 스타일과 같은 많은 목록 기능을 Embedding 하여 목록 간 유사성을 측정 후, 추천하는 기능을 만들고 평가하였다.

Data and Methodology

N명의 사용자로부터 얻은 클릭 세션의 데이터 셋이 주어진다고 가정한다. 각 세션 s=(L₁,…,Ln)∈ S 는 사용자의 의해 클릭 된, 연속되는 n개의 목록 아이디이다. 두 번의 연속되는 사용자 클릭 사이에 30분을 경과하면 세션은 갱신된다. 데이터 셋이 주어지면, 각 고유한 목록 Li의 실제 값을 32차원에 표현하는 v(Li) ∈ R³²을 학습하는 것이 목표다. ( 32 차원이 가장 좋은 성능이 있다고 보았다.)

8 억회 이상검색 클릭 세션을 사용하여 450 만 개의 목록embedding

Embedding을 학습하는 여러 방법이 있지만, 여기서는 Negative Sampling을 사용한다. 우선, embedding을 random vectors로 초기화한다. 그리고 window sliding에서는 검색 세션으로부터 읽어 온 것들을 SGD (Stochastic Gradient Descent)를 통해 업데이트 한다. 각 스탭에서는 central listing의 벡터들이 positive context listings ( central listing 전 후로 5개의 window 이내로 같은 사용자에 의해 클릭 된 ) 의 벡터들로 가깝게 업데이트 된다. 그리고 negative context listings ( 무작위로 추출된 목록들 )로 부터는 멀어진다.

그리고 Airbnb에서는 위 방법에 두 가지 접근 방식을 적용하여 모델을 업그레이드한다.

  • Booked listing ( 보라색 상자 ) 을 Global Context 로 사용 : Booked listing을 사용하여 인접한 클릭 목록 뿐만 아니라 예약된 목록을 예측한다.
  • Congregated Search 적용 : 사용자는 주로 머무르는 페이지에서 검색한다. 그 결과, positive context listing은 유사한 것끼리 모이지만, negative context listing은 무작위로 모인다. 이러한 불균형은 market 내 유사도에서 sub-optimal 한 것을 학습할 수 있다는 것을 발견했다. 그래서 central listing market 으로부터 추출 된 무작위 negative Dmn set을 추가하였다.
  • l 은 central listing 이며, 벡터 v(l) 는 업데이트 된다.
  • Dp 은 서로 가까워지는 positive set of pairs (l, c) (central listing, context listing)
  • Dn 서로 멀어지는 negative set of pairs (l, c) (central listing, context listing)
  • lb central listing vector와 가까워지며, global context인 booked listing
  • Dmn 은 서로 가까워지는 market negatives set of pairs (l, mn) (central listing, random listing from same market)

Evaluation

우선 Listing Embedding 특성을 평가 하기 위해 두 가지 방법을 사용하였다.

  • K-Means clustering : 학습된 embedding에 적용하여 지리학적 유사성을 확인
  • Average Cosine Similarities : 서로 다른 유형의 목록과 가격 범위 간의 average cosine similarities 를 평가하여 동일한 유형 및 가격 범위 목록 간의 cosine similarities 가 다른 유형 목록 간의 similarities 과 비교하여 훨씬 높음을 확인

Listing Embedding 의 off-line 평가로는 사용자가 가장 최근에 클릭한 것을 기반으로 예약 할 목록을 추천하는데 있어 얼마나 훌륭한지 보는 것이다. 보다 구체적으로 클릭 목록후보 목록cosine similarities을 계산하여 후보 목록에 순위를 매기고, 이 후보 목록이 예약으로 연결되는 예약 목록의 순위가 평균화 되어 예약 전 17 번 클릭까지 거슬러 올라가 확인합니다.

  • d32 regular : original embedding algorithm
  • d32 booking global : with bookings as global context
  • d32 booking global + market negatives : bookings as global context and explicit negatives from same market

booked listing 을 global context로 사용한 정보와 market negatives를 포함한 모델이 가장 좋은 결과를 가져왔다.

Using Embedding

첫 번째로는 Airbnb 에서 검색할 때 유사 목록이 함께 나오도록 하였는데, 나열된 embedding listing을 cosine similarities로 거리를 계산한 KNN( K-Nearest Neighbors )을 사용했다. 이는 유사 목록에서 21% CTR 증가와 그 증가에서 4.9% 의 예약 증가를 만들어냈다.

두 번째로는 검색 시 나오는 추천 목록실시간으로 개인화하였다. 목표는 사용자가 좋아할거라고 생각되는 목록을 더 노출 시키는 것이다. 이를 위해 두 종류의 단기 기록 이벤트를 수집하고 관리했다.

  1. Hc : 사용자가 지난 2 주 동안 클릭 한 목록 ID 집합
  2. Hs : 지난 2 주간 사용자가 건너 뛰었던 목록 ID 집합으로 순위가 높았지만 순위가 낮은 목록의 클릭하여 선택되지 못한 목록

다음으로 사용자가 검색을 수행할 때마다 반환되는 후보 목록에 대해 유사성을 계산한다.

  • EmbClickSim : 후보 목록 embedding 과 사용자가 클릭 한 목록 embedding 사이의 유사성
  • EmbSkipSim : 후보 목록 embedding 과 사용자가 건너 뛴 목록 embedding사이의 유사성

새로운 모델이 유사성 특징을 포함하는 것을 학습했는지 평가하기 위해, Partial dependency plot를 그렸습니다.

왼쪽 하위 그래프에서는 EmbClickSim (목록 사용자가 최근에 클릭 한 것과 비슷한 목록) 의 더 큰 값이 더 높은 모델 점수로 이어지는 것을 볼 수 있습니다 .

오른쪽 하위 그래프에서는 EmbSkipSim (사용자가 건너 뛴 목록과 비슷한 목록, 즉 마음에 들지 않는 목록) 이 더 커지면 모델 점수가 낮아진다는 것을 알 수 있습니다.

Partial dependency plot 를 통해 관측된 특징이 모델이 직관적으로 기대하는 것과 일치한다는 것을 확인할 수있었습니다.

--

--