NPS 알아보기 (Airbnb의 경우)

요약 : Logistic Regression을 써서 여러 항목들을 사용해 재예약율을 모델링했지만, 효과는 미미했다.

NPS란

Net Promoter Score 의 줄임말로 얼마나 추천할 의향이 있는지 를 측정할 수 있는 Promoter Score 에 Net을 더했다고 생각하면 좋습니다.

(지난 주의 저를 포함하여) 많은 사람들이 위 그림과 유사한 형태의 설문조사를 해본 경험은 있지만, 이 설문조사가 어떻게 쓰이는지 까지는 잘 모를거라고 생각하는데요. 사실 이는 아래처럼 점수를 분리하여 사용합니다.

너무 당연한 이야기지만, 추천 “점수” (NPS)가 높을 수록 실제로 추천할 가능성이 (Likelihood To Recommend, LTR) 높다고 간주하는데요.

엥 그럼 NPS랑 LTR은 뭐가 다른거야? 라는 생각을 하실 수도 있는데요

  • LTR은 너 우리 서비스 혹은 Product 를 얼마나 추천할꺼야? 라고 하는 질문이고
  • NPS는 이 LTR 데이터로부터 계산되는 하나의 지표다.

라고 생각하면 좋을 것 같습니다.

9점과 10점은 해당 Product를 “많이 좋아하는” Promoter,
7점과 8점은 Product를 좋아하긴 하는데 그렇게 까지는 아닌 Passive,
0–6점은 별로 좋아하지 않는 😂 Detractor라는 그룹으로 분류하여 Promoter Score라는 것으로 사용합니다.

이렇게 하면 우리가 수집했던 데이터는 3가지로 요약이 되는데요, NPS는 여기서 조금 더 나아가 “Net”, 즉 Promoter 그룹의 Score — Detractor 그룹의 Score를 빼는 것으로 새로운 Score를 계산합니다. (여기서 Score는 비율을

이러한 방법을 토대로 계산한 NPS는. 100에서 -100까지의 스케일을 갖습니다. 모든 설문 결과가 9–10점이라면 100 - 0 , 반대로 모든 설문 조사가 0–6 점이라면 0–100으로 해당 값을 갖게 됩니다.

(번외로, 경우에 따라서 단순히 0~10의 추천도 뿐 아니라 그렇게 생각하는 디테일한 이유도 같이 수집 하는 경우도 있습니다만, 그 이유를 “점수화” 하지는 않습니다.)

가운데는 쓰이지 않음

신기한 점은, 별로 그렇게 추천하지 않는 0–4는 당연히 detractor일 수 있지만 “뭐 그냥 저냥” 이라고 표현 할 수 있는 5–6 또한 detractor로 취급하는 것과, “좋은것 같은데” 로 볼 수 있는 7–8 을 passive라는 그룹으로 같이 취급을 한다는 것입니다.

여러 Reference들에서도 공통적으로 언급하는 NPS의 가장 멋진 특징은

  • 수집이 간단하고
  • 충분히 효과적이다.

라고 생각하는데요.

그렇다면 이러한 NPS를 Airbnb라는 기업에서는 어떻게 활용하는지 소개해드리려고 합니다.

ABNB chart from Yahoo Finance.

Airbnb

Airbnb가 풀고 싶어했던 문제들 중 하나는
고객들이 다음번에 얼마나 또 Airbnb를 통해 다시 예약을 하는가
였던것 같습니다.

그래서 이들은 고객이 여행을 마치고 난 이후에, Airbnb를 통해 지내게 되었던 “숙소”에 대한 NPS와 Accuracy, Cleanliness, Checkin, Communication, Location, Value와 같은 항목들에 대해서 0–5 스케일로 설문조사를 받습니다.

Airbnb의 Data Scientist들은 이런 많은 데이터들 중, 2014년 1월 15일 ~ 4월 1일에 수집된 (여행이 끝난) 데이터에 대해서 분석을 하기로 합니다.

이전의 분석들을 통해서 NPS뿐 아니라 다른 요소들.

가령 앞서 조사한 항목들의 설문조사 결과, 여행지역, 길이, 가격 더 나아가 여행의 시간 (성수기& 비성수기)등..

여러가지 요인들이 고객의 재예약에 영향을 미친다는 것을 알고 있었지만, NPS 데이터 분석에 집중하기 위해서 해당 요인들까지의 분석은 하지 않았습니다.

(NPS와 LTR은 엄밀히는 다르지만, 이 글에서는 혼용하여 사용합니다.)

NPS와, 여러 카테고리에 대한 종합평가 지표의 관계를 시각화 했을때, 너무나 당연하게도 NPS가 높으면 지표도 높은 경향이 있었지만, 지표가 낮은 경우에도 NPS 가 높은 예외도 있다라고 합니다.

한편 LTR과 재예약률의 관계를 line chart로 비교했을때는. 조금 아쉬운 그러나 충분히 의미있는 결과를 설명합니다.

아쉬운 것

위 차트에 제가 추가로 표기해둔것 과 같이 절대적인 스케일을 표현하지 않았기 때문에 Detractor와 Promoter간의 13%차이가 87%와 100%의 차이인지, 50%와 63%의 차이인지 는 정확하게 알 수 없다는 것이고, 0–6에서는 점수 단위가 아닌 그룹 단위로 표기했으나 정작 7–8과 9–10은 점수 단위로 표기 하였기 때문에 왜곡된 해석을 할 수 있는 차트를 그렸습니다.

의미있는 것

NPS 점수를 적지 않고 피드백을 준 고객들은 0으로 처리 혹은 데이터 삭제가 아닌 거의 Promoter와 유사한 고객으로 분류 할 수 있다는 점인데요, 이는 Airbnb를 그만큼 “사랑했기 때문에" 좋은 피드백이던 나쁜 피드백이던 텍스트를 작성하는 수고를 기꺼이 감내했다 라고 해석 할 수 있습니다.

한편 레퍼럴, 즉 주변에 Airbnb를 추천하는 정도도 위처럼 line chart로 그려본 결과는 “그룹간의 크게 유의미한 차이는 없었다”였습니다. (그림생략)

그외에 여행기간, 여행 시기, 가격 등을 재예약률과 line chart로 그렸을때, 데이터로는 이해할 수 없지만 여행이라는 도메인 지식이 있어야 해석가능한 결론들이 몇가지 있었는데요.

가령, 비수기에 여행을 갔던 고객은 재예약비율이 더 높았고, 이는 비수기에도 여행을 가는, 여행을 사랑하는 고객이기 때문에 Airbnb를 적극적으로 추천했다

와 같이 해석 할 수 있습니다.

마찬가지로 여행 기간이 길면 그만큼 다시 여행을 가기 어렵기 때문에, 레퍼럴이 낮아지거나 가격이 (너무 싸거나 비싸지 않은) 적당해야 재예약이 높다던가와 같은 결론들도 시각화를 통해 얻을 수 있었습니다.

한가지 의문이 들었던건 왜 NPS가 아니라 Rebooking을 기준으로 했는지였는데요, 아마… NPS로는 경향이 잘 안나와서가 아닐까 라는 생각을 해봅니다.(위 NPS — Overall rate 테이블처럼 NPS는 다양한 분포를 나타내고 있어서..?)

Airbnb의 Data scientist들은 데이터 시각화를 통해서 어느 정도의 인사이트를 얻을 수 있었는데요, 조금 더 나아가서 정량적으로 모델링을 하기 위해 Logistic Regression을 사용합니다.

이를 위한 기본 모델은 아래와 같습니다.

base model이며 host_listings는 어떤 말인지 모르겠습니다.

여기에 추가로

  • Communication
  • cleanliness
  • checkin
  • accuracy
  • value (Price랑 어떤 차이가 있는지는 모르겠습니다)
  • location
  • overall_score
  • ltr_score (NPS)

라는 8개의 변수들을 하나씩 넣어서 비교를 했을때 얼마나 모델이 더 적절한가를 AIC를 이용해서 측정했으며 그 결과 아래와 같은 결과가 나오게 됩니다.

여기서 AIC란, Akaike Information Criterion의 줄임말인데요.

상당히 많은 경우 주어진 데이터를 설명하기 위한 모델에 변수를 많이 사용할 수록 모델의 설명력은 좋아지게 됩니다. 그러나 이에만 너무 집중하게 되면 ( 극단적으로 ) 모든 가지수에 대해서 이 경우는 이거, 저 경우는 저거 와 같이 정의를 하게 되고, 과적합 문제가 발생 할 수 있습니다. 즉 기존에 정의되지 않은 케이스에 대해서는 또 새로운 변수를 넣어 설명하려는 안좋은 결론이 날 수 있다는 것이죠.

이를 위해 AIC 에서는 “사용된 변수의 수 - 모델의 설명력”이라는 형태로 이 과적합에 대한 페널티를 두었습니다. (“AIC가 많이 줄어 들수록 모델의 설명력이 좋아진다” 정도로 이해하면 충분합니다.)

(“AIC가 많이 줄어 들수록 모델의 설명력이 좋아진다” 정도로 이해하면 충분합니다.)

이후 LTR을 더한 base 모델에 나머지 변수들을 하나 더 더한 방식으로 모델의 퍼포먼스를 비교했는데요. 한가지 신기한것으로 위와 순서가 동일하지만, Cleanliness와 Value의 순서는 바뀐 것을 확인 할 수 있습니다.

(Cleanliness와 LTR간의 상호작용이 있을 수도 있지 않을까 이런 생각도 해볼 수 있습니다.)

단계가 많이 생략되긴 했지만 이후의 stepwise 방법들을 통해서 (여러개의 변수를 넣었다 뺐다 하면서 모델 퍼포먼스를 비교하는 방법이다 라고 이해하면 됩니다.) 모델을 최적화 하면

LTR, 리뷰 그리고 여러 카테고리들 중 3개를 반영하는 것이 최적이다 라는 결론을 내게 됩니다.

이후 Accuracy를 기준으로 (고객 정보는 여행 정보와 동일한 의미)

  • LTR : 55.997%
  • 고객 정보 : 63.495%
  • 고객 정보 + LTR : 63.58%
  • 고객 정보 + 리뷰 : 63.593%
  • 고객 정보 + LTR + 리뷰 : 63.595%

이러한 결과가 나왔다고 하는데요. 이에 대한 설명은 아래의 그림으로 대체합니다.

--

--