天天看點

解密Airbnb的定價算法

解密Airbnb的定價算法

對于計劃出租房屋的房主,你應該将房屋的租金設定為多少呢?或者對于租房的顧客而言,應該給自己的租房支付多少呢?不管是對于一次有計劃的遠足,還是一次說走就走的旅行,為租房付出多少才真正合适呢?

回答這些問題并不容易。事實上,可以通過将潛在的租房列在我們網站—airbnb上來實作,airbnb是一家聯系旅遊人士和家有空房出租的房主的服務型網站,它可以為使用者提供各式各樣的住宿資訊。

在焦點小組,我們觀察到人們在我們的網站上填寫房屋資訊的過程中,往往在價格選項上會顯得為難。很多人會檢視他們的鄰居們所設定的價碼,然後選擇一個可比較的價格;這個過程會讓使用者在浏覽器中打開很多标簽,然後找出那些與他們接近的房源。有些人在填寫資訊之前,腦子裡已經有了一個目标,可能是為了賺取一些額外的資金,來幫助支付抵押貸款或度假費用。于是,他們開出的價格主要是為幫助他們實作這一目标,反而沒有考慮房子真實的市場價值。而對于這其中的有些人,不幸的是,通常他們的房子都沒能被租出去。

顯然,airbnb需要為人們提供一種更好的方式—自動化定價,以幫助顧客做出正确的決定。這就是我們為什麼在2012年就開始建構定價工具,并至今一直在努力地改進它們的原因。今年6月,我們釋出了我們最新的版本。我們開始實行動态定價,也就是說,根據不斷變化的市場條件每天提供新的價格提示。我們調整了我們的通用定價算法以考慮市場上一些偶然的、甚至是令人驚訝的特征。此外,我們還增加了一種獨特的機器學習方法,讓我們的系統不僅能從自己的經驗中學習,而且必要時還能利用人的一些直覺。

線上網絡中,許多公司使用算法來設定或建議價格。以易趣為例,它會告訴使用者哪些類似的産品已經售出,以緻使用者可以基于這些資訊對自己的産品設定價格。易趣的定價問題是相對容易解決的,因為它不用關心賣家和買家在哪裡,也不需要是關心産品在什麼時候出售。雖然在搭乘共享公司uber和lyft中,地域和時間都是需要考慮的因素,但是這兩家公司僅僅通過法令來确定價格,在定價方面并沒有使用者選項,也不需要考慮定價的透明性。

在airbnb上,我們面臨着一個異常複雜的問題。我們網站上的數百萬房源都是獨一無二的,它們有自己的位址、大小和裝飾。顧客在接待、飲食或旅遊引導方面的要求也不盡相同。一些規律的(如季節性天氣變化)和不規律的(如本地的大型活動)因素都會讓問題變得更加複雜。

三年前,通過利用房源資訊中最重要的一些特征,如房間和床鋪的數量、周圍的環境、以及某些特殊的設施(如停車位、遊泳池等),我們開始建構一個為潛在使用者提供價格提示的工具。我們在2013年正式将它推出,它在大多數情況下工作得很好。但它也存在局限性。第一,其定價算法的工作方式是不變的。舉個例子,假如我們考慮俄勒岡州波特蘭市珍珠區的情況,如果設定河邊的房子的價格比遠離河邊的房子的價格要高,除非我們手動地對這些名額進行變更,否則該算法将永遠這樣執行。第二,我們的定價工具并不是動态的,并不會根據你預定房間的時間或有多少人在同一時間預定而對價格提示做出調整。

自去年年中以來,我們一直在試圖改變這種狀況。我們想建構一個工具,其能夠通過與使用者進行互動而從錯誤中獲得提高。我們也希望使用該工具來調節需求,在必要的時候,可以在房間空餘時給出價格下降的提示,或根據需求增加給出價格增長的提示。我們現在已經解決了這些問題,并且在今年6月份的時候使用者已經開始使用這一新工具。接下來,我們将告訴你這些工具是如何不斷改進的,并且它們現在是如何工作的。我們還會告訴你,為什麼我們最新的工具—aerosolve,除了對租賃的房屋進行定價,最終還可以做的更多。這也是為什麼我們将其釋出到開源社群的原因。

三個簡單的例子

為了得到解決這個問題的思路,我們首先舉三種簡單的情況。

比如,去年足球世界杯期間你居住在巴西。你的家鄉會湧入大量來自于世界各地的遊客,聚集在一起享受這個星球上最偉大的足球比賽。如果此時你的房子裡正好有空餘的房間,你也想滿足其他足球愛好者的需求,順便賺取一些額外的現金,就可以将它們租出去。為了幫助你設定合理的價格,我們的工具需要考慮幾個因素。首先,在這個國家,這是一代人才可能經曆一次的事情,是以我們在airbnb上絕對沒有曆史資料可供參考。其次,所有酒店都被預定一空,供需之間巨大的不平衡此時尤為明顯。第三,人們來旅遊的時候,他們已經在機票和國際旅行上花了很多錢,是以他們也已經準備為住房花上一筆。是以,除了房間大小、房間數量和位置等因素,這些因素也都應該被考慮進去。

解密Airbnb的定價算法

或者,想象你在蘇格蘭高地繼承了一座城堡,為了支付清理護城河、經營酒廠、以及飼養獵鷹的成本,你決定将炮塔改造成一個提供早餐和住宿的旅館。不同于世界杯的情況,此時你有一些可比較的資料,那就是附近的城堡。一些資料可能跨越了很多年,提供了有關旅行的一些季節性資訊。而且你知道,因為該地區還有其他的住宿選擇,此時,對于旅遊租房的供應和需求相當平衡。然而,這種特殊的城堡在蘇格蘭是獨一無二的,其擁有獨特的雙護城河。系統應該如何評價這些特有的功能的價值呢?

解密Airbnb的定價算法

再看最後一個例子,假設你在巴黎擁有一個典型的兩房間較高價的電梯大廈。當你決定在8月份休假數周,并向南去往蒙彼利埃,此時想把房子租出去。此時存在很多可比較的房源,是以它是相對容易定價的。但是,當有很多人對你的房子産生興趣的時候,你決定開始逐漸提高價格,以最大限度地賺取更多的現金。但這是一個棘手的問題,如果你定價太高,或預定日期太緊迫,将面臨賺不到任何錢的可能,這時該怎麼辦?或者相反的情況,你一開始設定了較低的價格,雖然在接下來的幾個月裡就會承擔較小的風險,可是卻賺了更少的錢。我們應該如何幫助房主獲得更好的資訊,以避免這種不确定性和遺憾呢?

這些都是我們所面臨的各種各樣的問題。我們想建構一個易于使用的工具,當使用者決定出租自己的房子的時候,為他們提供有用的資訊,同時為定價提示給出明确的理由。

解密Airbnb的定價算法

工具的整體架構

對于我們的工具,其整體架構出奇簡單:當一個新房主開始在我們的網站上添加一個房源的時候,我們的系統提取房源的關鍵屬性,檢視在這區域中有相同或相似屬性的、且被成功預定的房源,同時考慮到需求要素和季節性特征,提供一個居中的價格提示。

當我們試圖将這個問題描述清楚的時候,最棘手的問題出現了,即房源的哪些屬性是關鍵屬性。沒有兩個房源在設計和布局上是相同的,房源也分布在城市的每一個角落,而且很多都不是較高價的電梯大廈或别墅,而是城堡和小屋。我們的工具選擇了三大類型的資料來設定價格:相似性、新舊程度和位置。

對于相似性資料,一開始檢視所有已知的可量化的房源屬性,然後看哪些房源與顧客計劃支付的價格最接近。之後看房間裡可以住多少人,是一個大的集體宿舍還是小的私人房間,以及住房的類型(較高價的電梯大廈、城堡、蒙古包等)和評論數量。

這裡最令人驚訝的屬性也許是評論數量。事實證明,人們願意為有很多評論的房源進行支付。而針對買什麼以及向誰買等問題,亞馬遜、ebay和許多網站都靠評論幫助使用者進行選擇,但評語數量是否會導緻價格有很大的差別目前并不清楚。對我們來說,與沒有任何評論相比,即使隻有一條評論也會導緻房源有一個巨大的價格差異。

我們也考慮了新舊程度,因為市場變化頻繁,特别是旅遊業。最重要的是,旅遊是一種季節性很強的活動,是以在進行分析的時候,重要的是基于現在的資料,或者去年這個時候的資料,而上個月的資料可能關聯性很小。下圖給出了一個例子,說明季節性需求和當地的活動會導緻房屋出租價格起伏,在得克薩斯州奧斯汀市,在south

by southwest(sxsw)和austin city limits festivals音樂節期間,房屋出租價格會上漲。

解密Airbnb的定價算法

對于像倫敦和巴黎這樣高度發達的市場,獲得市場資料是很容易的,在我們的網站上有成千上萬被預定的房源可供比較。對于新興市場,我們按照大小、旅遊業的發展水準以及在airbnb上所處的增長階段,将它們進行分類。這樣,我們不僅僅能夠将其與所在城市的房源進行比較,而且可以與其他具有相似特征的市場相比較。是以,如果來自于日本的一個房主第一次在airbnb進行注冊,計劃出租一套位于京都的較高價的電梯大廈,我們不妨檢視來自于東京或岡山的房源,如果airbnb上沒有這些城市的資料,我們還可以與來自于阿姆斯特丹的房源進行比較,因為對于airbnb來說,阿姆斯特丹是一個比較成熟的市場,而且它與京都具有接近的城市規模和旅遊業水準。

最後,我們需要考慮位置,對我們來說,這是一個與酒店相當不同的問題。酒店通常成片地分布在幾個主要的地點,而我們的房源幾乎分布在城市的每一個角落。

在我們的定價算法的早期版本中,算法以房源為中心繪制一個不斷擴大的圓圈,考慮在房源位置附件不同半徑上與其特征相似的房源。這種方法有的時候工作的很好,但我們最終發現一個重要的缺陷。想象我們在巴黎有一套較高價的電梯大廈。如果較高價的電梯大廈是位于市中心,那麼我們将圓圈不斷擴大時,它會迅速開始覆寫塞納河兩側非常不同的街區。在巴黎,雖然在塞納河兩邊的房子都不錯,但僅僅相隔百米距離的較高價的電梯大廈都會有非常大的價格差異。在其他的一些城市,有時這個問題會顯得更加明顯。在倫敦,舉例來說,僅僅相隔一條泰晤士河,格林尼治地區的價格可以超過倫敦碼頭附近的兩倍。

是以,我們讓一個制圖員在世界各地主要的一些大城市中為每一個街區繪制邊界。這些資訊的建立是非常準确的,通過使用相關的地理空間資料,如周圍的河流、公路和運輸線,我們能夠對房源進行準确分類。

現在,這些問題得到了解決。例如,在十月份的第一個周末,如果想在倫敦租住一個二人标間,泰晤士河邊上格林尼治地區的價格提示是130美元一晚,而河對岸具有類似條件的房間的價格提示僅僅是60美元一晚。以前的算法讓系統為很多新的房源給出一個99美元的價格提示,沒有考慮它們的具體特征。雖然這不是長時間發生,也不是在每一個地區都這樣,但我們認識到,當這種情況發生的時候,可能會導緻人們質疑我們的定價工具是否有效。

動态定價與算法自動學習

随着時間的推進,我們不斷改進我們的算法,直到他們能夠考慮數千種不同的因素,并在非常精細的水準上了解地理位置。但該工具仍然存在兩個不足。其一,它給出的這些價格提示是靜态的,事實上,在了解了當地的一些活動和旅遊的季節性變化之後,它應該在一年之中不同的季節為相同屬性的房源建議不同的價格。但它并沒有這樣做,然而,航空公司卻會當日期臨近的時候改變機票價格,訂單減少時将價格下調,在市場升溫時将價格提高。

另外一個不足是,工具本身是靜态的。事實上,當工具能夠挖掘到前所未有的曆史資料的時候,它的價格提示有所改善,但算法本身并沒有變得更好。

去年夏天,我們開始了一個項目,以解決這兩個問題。在動态定價方面,我們的目标是為每個房主,針對他們的房子計劃出租的日期,每天給出一個新的定價提示。動态定價其實并不新鮮。航空公司開始動态調整機票價格已經幾十年了,而且常常是實時的,以試圖確定最大的滿座率,以及每個座位賣出最高的價格。酒店業也是這樣,随着連鎖的規模變得越來越大,酒店的業務資料量不斷增長,酒店營銷也被搬到網上,使得連鎖每天可以多次變動價格。

是以,我們需要對動态定價進行投資,一旦我們有好幾年的曆史資料,我們就可以挖掘它們,盡管這需要大量的計算資源,但對我們來說具有非常大的意義。

讓算法自身不斷改進要更加困難,尤其是因為我們希望系統給出的價格提示具有高的可解釋性。在某些情況下,我們希望算法能夠有自己“思維過程”,能夠從資料中學習而獲得提高。機器學習系統通常具有一定的規模和複雜度,常常以一種神秘的方式工作。例如,谷歌大腦學習了在網絡視訊中找出貓臉的能力,通過一個多層模型對資料進行分類,然後得出一個視訊是否包含貓臉的結果,而這個工作對于人類來說幾乎是不可能複制的。

我們選擇了一個分類機器學習模型。它使用房源的所有屬性以及目前市場的需求,然後預測其是否将被預定。系統計算價格提示是基于數百個屬性,如是否包含早餐、房間是否有一個私人浴室等。我們通過将價格提示與結果進行比較,對系統進行訓練。考慮房源是否以一個特定的價格被預訂,将幫助系統調整其價格提示以及評估一個價格被接受的機率。當然,房主可以選擇比價格提示更高或者更低的價格,然後我們的系統也會對估計機率做相應地調整。系統之後會檢查房源在市場上命運,并使用這些資訊來調整未來的提示。

下面就是機器學習發揮作用的時候了。通過分析哪些價格提示獲得了成功,我們的系統開始調整不同房源屬性的權重。我們一開始也會做一些假設,例如地理位置非常重要,而是否有熱水浴缸沒有那麼重要。我們保留了以前的定價系統中所考慮的某些房源屬性,同時又添加了一些新的屬性,如“預定日期之前的剩餘天數”,這些資訊對我們的動态定價産生影響。所有新的資訊被考慮到模型中,都是通過我們對曆史資料的分析,表明它們與我們的動态定價能力是相關的。

例如,某些照片更可能吸引預訂。總的趨勢可能會讓你大吃一驚,時尚、明亮的客廳的照片,雖然易于得到專業攝影師的偏愛,但相比于用暖色調裝飾的、舒适的卧室的照片,它們并沒能吸引更多的潛在客人。

随着時間的推移,我們期待各種資訊的權重能不斷自動改進,以提高我們的價格提示。如果我們相信我們所了解到的一些東西,模型并沒有刻畫清楚,我們也可以通過其他方式參與和影響權重的設定。我們的系統能夠為每個定價提示産生一個各種因素及相應權重的清單,提高工具的可解釋性,這也是大家所希望看到的。如果我們覺得有些資訊在模型中沒有被很好地描述,我們會手動地将它們添加到模型中。

我們的系統也在不斷地調整我們的地圖以反映街區邊界的變化。是以,系統并不是依賴于當地的地圖,比方說,一個當地的地圖可能告訴我們波特蘭開拓者隊的恩光街區在哪個地方結束,裡士滿街區從哪個地方開始,但這并不是我們所關心的,我們依靠一個城市中房源的預訂和價格的分布資料來描繪各種曲線。這種做法也讓我們發現了我們以前所沒有意識到“微街區”。這些地區可能有大量的流行的房源,但它們并不一定與标準的街區邊界相比對,或者可能存在一些局部特征,依據它們将一個較大的傳統街區分為一個個小的部分可能更加理想。下圖給出的例子,是我們的工具所劃分的倫敦的“微街區”分布。

解密Airbnb的定價算法

今天,這些工具為來自于全球的airbnb房源提供價格提示。但是,我們認為這些工具除了幫助潛在的房主為線上出租服務更好地設定合理的價格之外,事實上它還可以做得更多。這就是為什麼我們将這些工具所基于的機器學習平台(aerosolve)作為一個開源工具釋出的原因。它将給那些還沒有接觸過機器學習的從業人員一個簡單的切入點。通過弄清楚系統的功能,它會讓更多人使用這些工具,這也是作者寫作本文的目的。到目前為止,我們已經用它來建構了一個系統,能夠以一種點彩畫的風格進行繪畫。我們渴望看到我們行業以外的有創造性的工程師開始使用這些工具,并期待他們最終的成果。

原文釋出時間為:2015-10-20

本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号

繼續閱讀