기계 학습을 사용하여 에어 비앤비의 주택 가치 예측

로버트 장

그리스,에게 오,이 메로 비글리에있는 에어 비앤비 홈에서의 멋진 경치

소개

데이터 제품은 항상 에어 비앤비 서비스의 중요한 부분이었습니다. 그러나 데이터 제품을 만드는 데 비용이 많이 든다는 사실을 오랫동안 알고 있습니다. 예를 들어 맞춤형 검색 순위를 통해 게스트는 집을 더 쉽게 찾을 수 있으며 스마트 가격 정책을 통해 호스트는 수요와 공급에 따라 경쟁력있는 가격을 설정할 수 있습니다. 그러나 이러한 프로젝트에는 각각 많은 전념 한 데이터 과학 및 엔지니어링 시간과 노력이 필요했습니다.

최근 에어 비앤비의 머신 러닝 인프라가 발전함에 따라 새로운 머신 러닝 모델을 프로덕션 환경에 배포하는 비용이 크게 절감되었습니다. 예를 들어, ML Infra 팀은 사용자가 모델에서 검증되고 재사용 가능한 고품질 기능을 활용할 수있는 일반 기능 저장소를 구축했습니다. 데이터 과학자들은 모델 선택 및 성능 벤치마킹 속도를 높이기 위해 여러 AutoML 도구를 워크 플로우에 통합하기 시작했습니다. 또한 ML 인프라는 Jupyter 노트북을 공기 흐름 파이프 라인으로 자동 변환하는 새로운 프레임 워크를 만들었습니다.

이 글에서는 이러한 툴이 어떻게 협력하여 모델링 프로세스를 촉진하고, LTV 모델링의 특정 사용 사례에 대한 전체 개발 비용을 낮추어 에어 비앤비의 주택 가치를 예측하는지 설명합니다.

LTV 란 무엇입니까?

전자 상거래 및 마켓 플레이스 회사에서 널리 사용되는 개념 인 LTV (Customer Lifetime Value)는 고정 된 기간 동안 사용자의 예상 가치를 종종 달러 단위로 측정합니다.

Spotify 또는 Netflix와 같은 전자 상거래 회사에서 LTV는 종종 구독료 설정과 같은 가격 결정에 사용됩니다. 에어 비앤비와 같은 마켓 플레이스 회사에서는 사용자의 LTV를 알면 다양한 마케팅 채널에 예산을보다 효율적으로 할당하고 키워드를 기반으로 온라인 마케팅에 대한보다 정확한 입찰 가격을 계산하며 더 나은 리스팅 세그먼트를 만들 수 있습니다.

과거 데이터를 사용하여 기존 리스팅의 과거 가치를 계산할 수 있지만 머신 러닝을 사용하여 새로운 리스팅의 LTV를 예측하기 위해 한 단계 더 나아갔습니다.

LTV 모델링을위한 기계 학습 워크 플로우

데이터 과학자는 일반적으로 기능 엔지니어링, 프로토 타이핑 및 모델 선택과 같은 기계 학습 관련 작업에 익숙합니다. 그러나 모델 프로토 타입을 프로덕션으로 가져 오려면 데이터 과학자가 잘 모르는 직교 데이터 엔지니어링 기술이 필요합니다.

다행히 에어 비앤비에는 ML 모델을 생산하는 데 필요한 엔지니어링 작업을 추상화하는 기계 학습 도구가 있습니다. 실제로 이러한 놀라운 도구 없이는 모델을 프로덕션에 적용 할 수 없었습니다. 이 게시물의 나머지 부분은 각 작업을 수행하는 데 사용 된 도구와 함께 4 가지 주제로 구성되어 있습니다.

  • 기능 엔지니어링 : 관련 기능 정의
  • 프로토 타이핑 및 교육 : 모델 프로토 타입 교육
  • 모델 선택 및 검증 : 모델 선택 및 튜닝 수행
  • 생산 : 선택한 모델 프로토 타입을 생산으로 가져 가십시오.

기능 공학

사용되는 도구 : Airbnb의 내부 기능 저장소 — Zipline

감독되는 머신 러닝 프로젝트의 첫 단계 중 하나는 선택한 결과 변수 (상호 엔지니어링이라고하는 프로세스)와 상관되는 관련 기능을 정의하는 것입니다. 예를 들어, LTV를 예측할 때, 동일한 시장에서 리스팅을 사용할 수있는 다음 180 일의 백분율 또는 리스팅의 가격을 비교할 수 있습니다.

에어 비앤비에서 기능 엔지니어링은 종종 처음부터 기능을 만들기 위해 Hive 쿼리를 작성하는 것을 의미합니다. 그러나이 작업은 특정 도메인 지식과 비즈니스 로직이 필요하므로 지루하고 시간이 많이 걸리므로 기능 파이프 라인을 쉽게 공유하거나 재사용 할 수없는 경우가 많습니다. 이 작업의 확장 성을 높이기 위해 호스트, 게스트, 리스팅 또는 시장 수준과 같이 다양한 수준의 기능을 제공하는 교육 기능 저장소 인 Zipline을 개발했습니다.

이 내부 도구의 크라우드 소싱 특성을 통해 데이터 과학자는 다른 사람들이 과거 프로젝트를 위해 준비한 다양한 고품질의 검증 된 기능을 사용할 수 있습니다. 원하는 기능을 사용할 수없는 경우 사용자는 다음과 같은 기능 구성 파일을 사용하여 고유 한 기능을 만들 수 있습니다.

트레이닝 세트 구성에 여러 기능이 필요한 경우 Zipline은 지능적인 키 조인을 자동으로 수행하고 씬 뒤에서 트레이닝 데이터 세트를 백업합니다. 리스팅 LTV 모델의 경우 기존 Zipline 기능을 사용했으며 몇 가지 자체 기능을 추가했습니다. 요약하자면 다음과 같은 모델에는 150 가지가 넘는 기능이 있습니다.

  • 위치 : 국가, 시장, 인근 지역 및 다양한 지리 기능
  • 가격 : 숙박 요금, 청소비, 유사한 목록과 비교 한 가격대
  • 예약 가능 여부 : 총 숙박 가능일 수, 숙박 일수의 %
  • 예약 가능성 : 지난 X 일 동안 예약 한 예약 또는 숙박 일수
  • 품질 : 리뷰 점수, 리뷰 수 및 편의 시설
훈련 데이터 세트의 예

우리의 특징과 결과 변수가 정의되면, 우리는 이제 과거 데이터로부터 배우도록 모델을 훈련시킬 수 있습니다.

프로토 타이핑 및 교육

사용되는 도구 : Python의 기계 학습 라이브러리 — scikit-learn

위의 훈련 데이터 세트 예에서와 같이 모델을 맞추기 전에 추가 데이터 처리를 수행해야하는 경우가 종종 있습니다.

  • 데이터 대치 : 데이터가 누락되었는지, 해당 데이터가 임의로 누락되었는지 확인해야합니다. 그렇지 않은 경우 그 원인을 조사하고 근본 원인을 이해해야합니다. 그렇다면 누락 된 값을 무시해야합니다.
  • 범주 형 변수 인코딩 : 모델이 문자열에 맞는 방법을 모르기 때문에 종종 모델에서 원시 범주를 사용할 수 없습니다. 카테고리 수가 적을 때는 원핫 인코딩 사용을 고려할 수 있습니다. 그러나 카디널리티가 높은 경우 각 범주의 빈도 수별로 인코딩하는 서수 인코딩 사용을 고려할 수 있습니다.

이 단계에서는 사용하기에 가장 적합한 기능이 무엇인지 잘 모르므로 빠르게 반복 할 수있는 코드 작성이 필수적입니다. Scikit-Learn 및 Spark와 같은 오픈 소스 도구에서 일반적으로 사용 가능한 파이프 라인 구성은 프로토 타이핑을위한 매우 편리한 도구입니다. 파이프 라인을 통해 데이터 과학자는 기능을 변환하는 방법과 학습 할 모델을 설명하는 고급 청사진을 지정할 수 있습니다. 보다 구체적으로 설명하기 위해 아래의 LTV 모델 파이프 라인 코드 조각이 있습니다.

높은 수준에서 파이프 라인을 사용하여 해당 기능이 이진, 범주 또는 숫자 유형인지 여부에 따라 서로 다른 유형의 기능에 대한 데이터 변환을 지정합니다. 마지막에 FeatureUnion은 단순히 기능을 열 단위로 결합하여 최종 교육 데이터 세트를 만듭니다.

파이프 라인으로 프로토 타입을 작성하면 데이터 변환을 사용하여 지루한 데이터 변환을 추상화 할 수 있다는 이점이 있습니다. 이러한 변환은 집합 적으로 데이터를 교육 및 스코어링에서 일관되게 변환하여 프로토 타입을 프로덕션으로 변환 할 때 데이터 변환 불일치의 일반적인 문제를 해결합니다.

또한 파이프 라인은 데이터 변환과 모델 피팅을 분리합니다. 위의 코드에는 표시되지 않았지만 데이터 과학자는 모델 피팅을위한 추정량을 지정하는 마지막 단계를 추가 할 수 있습니다. 데이터 과학자는 다양한 추정량을 탐색하여 모형 선택을 수행하여 모형의 표본 오차를 개선하기위한 최상의 모형을 선택할 수 있습니다.

모델 선택 수행

사용되는 도구 : 다양한 AutoML 프레임 워크

이전 섹션에서 언급했듯이 생산에 가장 적합한 후보 모델을 결정해야합니다. 이러한 결정을 내리려면 모델 해석 성과 모델 복잡성 간의 균형을 고려해야합니다. 예를 들어, 희소 선형 모델은 해석하기 쉽지만 일반화하기에는 복잡하지 않을 수 있습니다. 트리 기반 모델은 비선형 패턴을 캡처 할 수있을만큼 유연하지만 해석하기는 쉽지 않습니다. 이것을 바이어스-바이어 런스 트레이드 오프라고합니다.

James, Witten, Hastie 및 Tibshirani의 R을 사용한 통계 학습 소개에서 참조한 그림

보험 또는 신용 심사와 같은 응용 프로그램에서는 모델이 실수로 특정 고객을 차별하지 않도록하는 것이 중요하기 때문에 모델을 해석 할 수 있어야합니다. 그러나 이미지 분류와 같은 응용 프로그램에서는 해석 가능한 모델보다 성능 분류 기가 더 중요합니다.

모델 선택에 많은 시간이 소요될 수 있으므로 다양한 AutoML 도구를 사용하여 프로세스 속도를 높이는 실험을했습니다. 다양한 모델을 살펴보면서 어떤 유형의 모델이 가장 잘 작동하는지 알아 냈습니다. 예를 들어, 우리는 eXtreme 그라디언트 부스트 트리 (XGBoost)가 평균 응답 모델, 능선 회귀 모델 및 단일 의사 결정 트리와 같은 벤치 마크 모델보다 성능이 훨씬 우수하다는 것을 알았습니다.

RMSE를 비교하면 모델 선택을 수행 할 수 있습니다

우리의 주요 목표는 리스팅 가치를 예측하는 것이었기 때문에 XGBoost를 사용하여 최종 모델을 생산하는 것이 편안하다고 생각했습니다.

모델 프로토 타입 제작

사용되는 도구 : Airbnb의 노트북 번역 프레임 워크 — ML Automator

앞에서 언급했듯이 프로덕션 파이프 라인을 구축하는 것은 로컬 랩톱에서 프로토 타입을 구축하는 것과는 다릅니다. 예를 들어 주기적 재 훈련을 어떻게 수행 할 수 있습니까? 많은 사례를 효율적으로 채점하는 방법은 무엇입니까? 시간이 지남에 따라 모델 성능을 모니터링하는 파이프 라인을 어떻게 구축합니까?

에어 비앤비에서는 Jupyter 노트북을 Airflow 머신 러닝 파이프 라인으로 자동 변환하는 ML Automator라는 프레임 워크를 구축했습니다. 이 프레임 워크는 Python에서 프로토 타입 작성에 이미 익숙하고 데이터 엔지니어링에 대한 경험이 부족한 모델을 프로덕션에 적용하려는 데이터 과학자를 위해 특별히 설계되었습니다.

ML Automator Framework의 간단한 개요 (사진 제공 : Aaron Keys)
  • 먼저, 프레임 워크에서는 사용자가 노트북에서 모델 구성을 지정해야합니다. 이 모델 구성의 목적은 프레임 워크에 교육 테이블을 배치 할 위치, 교육에 할당 할 컴퓨팅 리소스 수 및 점수 계산 방법을 알려주는 것입니다.
  • 또한 데이터 과학자는 특정 적합도 및 변형 함수를 작성해야합니다. fit 함수는 훈련이 정확하게 수행되는 방법을 지정하고, 변환 함수는 분산 스코어링 (필요한 경우)을 위해 Python UDF로 랩핑됩니다.

다음은 LTV 모델에서 적합 및 변환 함수가 정의되는 방법을 보여주는 코드 스 니펫입니다. fit 함수는 프레임 워크에 XGBoost 모델이 학습 될 것이며 이전에 정의한 파이프 라인에 따라 데이터 변환이 수행 될 것임을 알려줍니다.

노트북이 병합되면 ML Automator는 학습 된 모델을 Python UDF로 랩핑하고 아래와 같은 공기 흐름 파이프 라인을 만듭니다. 데이터 직렬화, 주기적 재교육 예약 및 분산 스코어링과 같은 데이터 엔지니어링 작업은이 일일 배치 작업의 일부로 캡슐화됩니다. 결과적으로,이 프레임 워크는 데이터 과학자와 함께 모델을 생산하기 위해 작업하는 전담 데이터 엔지니어가있는 것처럼 데이터 과학자를위한 모델 개발 비용을 크게 낮 춥니 다!

프로덕션 환경에서 실행되는 LTV Airflow DAG의 그래프보기

참고 : 생산 외에도, 시간이 지남에 따른 모델 성능 추적 또는 모델링을위한 탄력적 인 컴퓨팅 환경 활용과 같은 다른 주제가 있습니다.이 게시물에서는 다루지 않습니다. 안심하십시오. 이들은 개발중인 모든 활성 영역입니다.

배운 교훈

지난 몇 달 동안 데이터 과학자들은 ML Infra와 매우 긴밀한 파트너 관계를 맺었으며이 공동 작업으로 인해 많은 훌륭한 패턴과 아이디어가 생겨났습니다. 실제로, 우리는 이러한 도구가 Airbnb에서 머신 러닝 모델을 개발하는 방법에 대한 새로운 패러다임을 열어 줄 것이라고 믿습니다.

  • 첫째, 모델 개발 비용이 현저히 낮습니다. 피처 엔지니어링을위한 Zipline, 모델 프로토 타이핑을위한 파이프 라인, 모델 선택 및 벤치마킹을위한 AutoML, 생산을위한 ML Automator 등 개별 툴과는 다른 툴을 사용함으로써 개발주기가 엄청나게 단축되었습니다. .
  • 둘째, 노트북 기반 설계는 진입 장벽을 줄여줍니다. 프레임 워크에 익숙하지 않은 데이터 과학자는 수많은 실제 사례에 즉시 액세스 할 수 있습니다. 프로덕션 환경에서 사용되는 노트북은 정확하고 자체 문서화되며 최신 상태를 유지합니다. 이 디자인은 새로운 사용자의 강력한 채택을 유도합니다.
  • 결과적으로 팀은 ML 제품 아이디어에 더 많은 투자를 기꺼이한다 :이 글을 쓰는 시점에서 우리는 유사한 접근 방식에 따라 ML 제품 아이디어를 탐구하는 다른 여러 팀이있다 : 리스팅 검사 큐 우선 순위 지정, 리스팅 가능성 코 호스트를 추가하고 품질이 낮은 업체 정보에 대한 신고를 자동화합니다.

우리는이 프레임 워크의 미래와 새로운 패러다임에 대해 매우 기쁘게 생각합니다. 프로토 타이핑과 생산 간의 격차를 해소함으로써 데이터 과학자와 엔지니어는 엔드 투 엔드 머신 러닝 프로젝트를 추구하고 제품을 개선 할 수 있습니다.

이 ML 도구를 사용하거나 구축하고 싶습니까? Google은 항상 데이터 과학 및 분석 팀에 참여할 재능있는 인재를 찾고 있습니다.

Aaron Keys, Brad Hunter, Hamel Husain, Jiaying Shi, Krishna Puttaswamy, Michael Musson, Nick Handel, Varant Zanoyan, Vaughn Quoss et al. 이 블로그 게시물을 검토 한 Gary Tang, Jason Goodman, Jeff Feng, Lindsay Pettingill에게도 감사드립니다.