當前位置:
首頁 > 知識 > 如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

租房的煩惱,相信大家或多或少都有過。獨自一人在大都市打拚,找個溫暖的小窩實屬不易,租個稱心又價格公道的房子是件重要的事兒。

本文作者、阿里工程師鹿星,也是眾多北漂中的一員。如何從各大租房網的房源裡面,找到最稱心如意的小窩?今天讓鹿星帶大家看看數據能不能做出最優選擇。文末有代碼。

選擇困難症

畢業到現在兩年多了,一直住的自如合租房,但因為各種原因住處已經換過4次,每次換租都是一件頭疼的事。從茫茫房海中找一間中意的房間,實在是一件費時費力的活,對於我這種買東西直奔目的地的人來說,在這麼多房間里對比各種房間屬性選出最優的根本就是一種折磨(這裡不得不說一下自如網的選房功能,列表篩選無法準備知道房間地點,而地圖找房功能的篩選項又太少,實在無法滿足我的需求),所以我每次都是草草選一個,將就著住。

最近在經歷了又一次換租後,我萌生了把自如所有在租的房間數據都爬下來,找出最符合我預期的房間的想法,製作好一套流程以後再要換租的時候就可以無腦操作了。

爬取數據

分析之前需要從自如網上爬數據,我用的是Python的Scrapy爬蟲框架,但第一遍採集後發現房間數量要比自如網上能查到的數量少,找了下原因發現是自如的房間列表頁中有些房間條目是js動態生成的,因為Scrapy沒有js引擎,只能爬取靜態頁面,這部分數據自然就沒採集下來。利用scrapy-splash來提供js渲染服務,最終完整採集到了所有在租的自如房間數據,共7907條。採集到的數據樣例如下。每一行是一個json格式的字元串

{"floorTotal": "6", "rooms": "2", "lng": "116.422213", "direction": "南", "floorLoc": "5", "halls": "1", "rentType": "整", "time_unit": "每月", "title": "青年溝2居室", "privateBathroom": "0", "confStatus": "1", "district": "東城", "lat": "39.968073", "area": "64.17", "privateBalcony": "0", "confType": "", "link": "http://www.ziroom.com/z/vr/60563968.html", "confGen": "", "price": "6590", "nearestSubWayDist": "367"}

租金的整體印象

我只關心合租房的數據,再做臟數據過濾,共得到4762條合租房數據。合租房房租的平均值和中位數非常接近,整體數據基本無偏,即低價位和高價位的房間數量差不多。

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

不同價格的房間數量分布如圖1,基本符合正態分布。

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

圖 1 合租房不同價格區間的房間數量分布

神秘的最貴房間

從上圖可以看到一間房超過了6000元,這勾起了我的好奇心,什麼房間能這麼貴。這間6290元月租金的房間鏈接是http://www.ziroom.com/z/vr/60558368.html ,如下圖。除了緊鄰西單商場其它屬性都沒什麼突出的。去鏈家上看了一下這個西黃城根45號院,小區均價14.6萬元/平米,好吧,似乎明白為啥這屋子這麼貴了。

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

為了膜拜一下這個西黃城根45號院,我又在自如上搜了這個小區的所有在租房間,如下。突然發現好像就這間很貴,而其它房間價格雖然也不算低,但也不像這間這麼離譜,有些房間的屬性甚至看起來還比這間更好。這個房間總感覺是被自如標錯價了,難不成它有什麼隱藏屬性(住進去每天精神值MAX)。

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

租金地圖

房間價格在地圖上的分布如圖2。紅色表示大於3000元/月的房間,綠色表示2000-3000元/月的房間,紫色表示小於2000元/月的房間。顏色越深表示同一個位置重疊有越多房屋,可見總體上北京北邊比南邊貴,東邊比西邊貴。而要想租到月租2000以下的房間,就得考慮去往五環之外了。

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

圖 2 合租房價格在地圖上的分布

誰最重要?

接下來看一下自如對房間定價時考慮的因素主次。使用隨機森林演算法對房間每月租金進行預測,選取如下14個特徵:房間面積、自如配置版本(1.0,2.0等)、配置類型(布丁、拿鐵等)、朝向、房間所在樓層、房間所在樓的總樓層、離最近地鐵站的距離、是否有獨立陽台、是否有獨立衛生間、幾室、幾廳、所在北京區縣、相對天安門的方位角、與天安門的距離。對其中的自如配置版本、配置類型、朝向、所在北京區縣這四個類別特徵使用One-Hot Encoding進行編碼,最終擴展為41個特徵。使用2/3的數據訓練模型,1/3的數據進行測試,在測試集上得到擬合優度R2=0.86,不同特徵對租金的影響程度Top10如下:

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

可見所在方位、房間面積大小、交通方便程度、有沒有獨衛是影響房間租金的主要因素。話說以前我還一直覺得房間加上朝南的屬性會更貴,現在看來好像是我的錯覺?

終極目標

最後,回到本次分析的終極目標,找出最符合我預期的房間。我需要做的就是綜合我自己的關注屬性值對房間進行排序,我最關心的房間屬性是[房間面積,房間租金,到公司的距離],這裡我使用的是灰度關聯分析法對房間進行打分,詳細計算過程網上都有,這裡我就不再羅列了。

首先我過濾掉屬性值超出我心理預期範圍的房間,將價格大於等於2200元/月,面積小於等於8m2的房間過濾掉。過濾後的數據集中選5條數據如下:

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

對這三個屬性值無量綱化,這裡我使用的是離差標準化,如下。標準化後x_i^,的取值範圍為[0,1]。

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

後數據如下:

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

然後設定最優序列,最理想的狀態當然是房間面積最大,租金最小,到公司距離最近了。因此最優序列為[1,0,0],計算每個屬性與最優序列相應屬性之間的關聯繫數如下:

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

由於我對不同屬性的關注程度不同,因此這裡需要設定每個屬性的權重,權重值使用目標優化矩陣確定。

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

因此房間面積權重為1/6,房間租金權重為1/3,到公司的距離權重為1/2,則每個房間的關聯繫數=房間面積關聯繫數/6+房間租金關聯繫數/3+到公司的距離關聯繫數/2,計算結果如下:

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

計算出所有房間的關聯繫數,從大到小排列後取Top10如下:

如何解決租房煩惱?阿里工程師寫了一套神奇的代碼

這下可以挑選房間的範圍就大大縮小了,以後要是再租房感覺煩惱少好多。當然由於自如網上房間信息變動較快,隨時都會有人下定,這套流程還得隨租隨用,不然篩選出房間後過個兩三天再看,說不定房間早就被別人搶了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲棲社區 的精彩文章:

沉澱|訪談阿里孫偉光:多行善事莫問前程的他,將計算集群的CPU利用率從30%提升到70%+
LSF-SCNN:一種基於CNN的短文本表達模型及相似度計算的全新優化模型
菜鳥末端軌跡(解密支撐每天251億個包裹的資料庫)-阿里雲RDS PostgreSQL最佳實踐

TAG:雲棲社區 |

您可能感興趣

晒晒裝修完的新房,但卻被朋友嘲笑說你怎麼又換出租房啦!
房企大佬們能解決租房亂象嗎?
租房你怕了嗎?
朋友講述自己租房的故事,你租過這樣的房子嗎?
出租房屋裡設備壞了,該房東維修還是租客維修?看看網友們怎麼說
異鄉打拚的你,買房和租房如何抉擇呢?
一輩子租房住,你願意嗎?
租房一定要注意了!好奇心不僅能害死貓……
對「租一代」而言,租房不是妥協而是挑剔的過程
「你願意租房子結婚嗎?」這是一些女孩的真心話,很現實
租房,這件苦逼的事情!
出租房的空調壞了,房東卻不肯維修,是誰的責任?聽聽行家怎麼說
婚姻需要用房子來做保障嗎?如果是你,你會同意租房結婚嗎?
從租房到買房是一段怎樣的心路歷程?
這樣改造,破出租房變豪宅,朋友們看後都誇我太聰明了!
堅持不買房只租房的人老了會怎樣?會後悔嗎?
一輩子租房住,你願意嗎?十萬網友的評論告訴你現實
租房子不是買房子,這其中的秘密你知道嗎?
買房難,租房難?除了這兩種還有比這個更靠譜的!
你跟我租房子,為什麽只付了一半的錢?