霍子明
(中央財(cái)經(jīng)大學(xué)會(huì)計(jì)學(xué)院 北京市 100081)
互聯(lián)網(wǎng)的出現(xiàn)和普及給租房者帶來了極大的便利,各式各樣的租房平臺(tái)層出不窮,鏈家、貝殼是在租房市場(chǎng)中占據(jù)了較大份額的兩家公司。它們主要向用戶提供的是租房信息的垂直搜索功能,不僅向用戶提供基本的關(guān)鍵詞搜索,還結(jié)合房子的一些特征信息,如位置、面積、價(jià)格、戶型等作為篩選條件供用戶選擇,滿足了用戶的一部分需求。另外,這些公司越來越重視地圖與搜索功能的交互結(jié)合,進(jìn)而實(shí)現(xiàn)地圖可視化搜索。但這些租房平臺(tái)主要提供的還是以租房地點(diǎn)為中心,距離、面積、價(jià)格等特征值為導(dǎo)向的搜索,而并不能幫助用戶決策。這樣的搜索不僅使得找房過程更加繁瑣,還無法滿足用戶對(duì)于房源的多元化、個(gè)性化需求。
租房者進(jìn)行選房決策時(shí),很難根據(jù)簡(jiǎn)單的信息搜索就選出合適的房源,其本身的習(xí)慣、偏好也會(huì)在選房過程中起到相當(dāng)重要的作用。TOPSIS 法是一種經(jīng)典常用的多屬性決策方法,被廣泛的應(yīng)用于選址、供應(yīng)商選擇等問題。因此,分析傳統(tǒng)TOPSIS 法缺陷和不足,設(shè)計(jì)一種適用于租房推薦領(lǐng)域的TOPSIS 模型、開發(fā)出一套基于該模型的租房決策支持系統(tǒng)是一個(gè)十分具有意義的研究方向。
租房多屬性決策是指租房者根據(jù)自身的偏好,在考慮出租房源的特性的基礎(chǔ)上,采用某種決策準(zhǔn)則對(duì)有限個(gè)出租房源進(jìn)行排序,進(jìn)而選擇出合適的房源[1]。在租房多屬性決策大致分為三個(gè)步驟:
(1)確定租房決策矩陣;
(2)確定房源屬性權(quán)重;
(3)進(jìn)行租房綜合評(píng)價(jià)。
其中確定租房決策矩陣是要確定選擇哪些指標(biāo)對(duì)出租房源進(jìn)行衡量,并且要考慮使用哪些變量來衡量這些指標(biāo)。確定房源屬性權(quán)重就是確定選擇何種方法來確定權(quán)重能有效反映出租房者在租房過程中的不同偏好;進(jìn)行租房綜合評(píng)價(jià)就是使用特定的算法或模型對(duì)出租房屋進(jìn)行排序,選擇出適合租房者的。
表1:房源指標(biāo)變量
表2:三種賦權(quán)方法對(duì)比
表3:重要性判斷尺度
確定決策矩陣首先確定租房過程中哪些指標(biāo)對(duì)租房者是重要的,仔細(xì)考慮不同年齡階段、不同需求的租房者在租房選房時(shí)的標(biāo)準(zhǔn)。本文擬設(shè)置上班距離、最近地鐵站距離、生活便利程度,教育水平指標(biāo)、醫(yī)療資源指標(biāo),綠化環(huán)境指標(biāo)、租房?jī)r(jià)格指標(biāo)、價(jià)格合理指標(biāo)八個(gè)指標(biāo),同時(shí)考慮使用相應(yīng)的變量來衡量這些指標(biāo),具體見表1。
在租房多屬性決策問題中,屬性的權(quán)重起到十分重要的作用,它可以用來衡量某一個(gè)屬性的相對(duì)重要程度,進(jìn)而反應(yīng)租房者的偏好。不同的權(quán)重組合反映了租房者的不同需求,租房者認(rèn)為一個(gè)屬性越重要,則應(yīng)該賦予它的權(quán)重就越大,反之就越小。
目前,針對(duì)確定權(quán)重的方法的研究很多,但大致可以將這些方法分為三種:第一種為主觀賦權(quán)法,它根據(jù)決策者主觀上對(duì)各個(gè)屬性的重要性的判斷來確定權(quán)值,權(quán)重來自于決策者的經(jīng)驗(yàn)。常用的主觀賦權(quán)法有層次分析法(AHP 法)以及專家調(diào)查法(德爾菲法)等。第二種為客觀賦權(quán)法,該方法基于決策矩陣中的屬性值之間的關(guān)聯(lián)關(guān)系或者是它們的分散程度來確定每個(gè)屬性所對(duì)應(yīng)的權(quán)值,不依賴于決策者的經(jīng)驗(yàn),常用的方法有:主成分分析法、因子分析法、熵值法等。運(yùn)用主觀賦權(quán)法確定權(quán)重,權(quán)重來自于決策者的經(jīng)驗(yàn),其過程會(huì)有很大的隨意性,經(jīng)驗(yàn)豐富的決策者可能可以確定出合適的權(quán)重,但新手決策者可能就無從下手。而客觀賦權(quán)法雖然有數(shù)據(jù)做支撐,但得到的權(quán)值常常不具有客觀的意義,還可能忽略決策者的主觀信息。由于上述兩種賦權(quán)方法各有優(yōu)劣,決策者們又提出了第三種組合賦權(quán)法。該方法將屬性值反映出的信息以及決策者本身的主觀信息相結(jié)合,使用該方法得到的權(quán)重,既能反應(yīng)數(shù)據(jù)的特征又可以反映決策者的經(jīng)驗(yàn),但有時(shí)使用組合賦權(quán)法的過程過于復(fù)雜,結(jié)果有時(shí)可能不如使用單一賦權(quán)法準(zhǔn)確。組合賦權(quán)法主要有熵權(quán)法與層次分析法相結(jié)合,熵權(quán)修正G1 法等等。表2 為主觀賦權(quán)法、客觀賦權(quán)法與組合賦權(quán)法三種方法的對(duì)比。
考慮到不同需求決策者的主觀意愿相差較大,為了準(zhǔn)確的滿足租房者的不同需求,本文擬采用熵權(quán)法與層次分析法相結(jié)合來確定每一位使用系統(tǒng)的租房者的組合權(quán)值,在符合數(shù)據(jù)客觀規(guī)律的同時(shí)又可以滿足租房者個(gè)性化需求。
2.2.1 層次分析法
層次分析法由Saaty 于1970年提出,是一種定性與定量相結(jié)合的、系統(tǒng)化層次化的主觀賦權(quán)方法。本文使用層次分析法確定權(quán)重的步驟如下[2]:
(1)建立層次結(jié)構(gòu)模型。分為目標(biāo)層,準(zhǔn)則層,方案層,如圖1。
(2)構(gòu)建判斷矩陣。判斷矩陣是租房者對(duì)準(zhǔn)則層的n 個(gè)評(píng)價(jià)指標(biāo)的重要程度的比較,在本文中,有8 個(gè)評(píng)價(jià)指標(biāo)的情況下,判斷矩陣為8 階方陣。
比較第i 個(gè)指標(biāo)與第j 個(gè)指標(biāo)相對(duì)的重要性時(shí),使用數(shù)量化的相對(duì)權(quán)重aij來衡量。aij的值由租房者根據(jù)主觀意愿所決定,遵循表3 中的規(guī)則:
例如a21=3 表明租房者認(rèn)為第二個(gè)指標(biāo)對(duì)于第一個(gè)指標(biāo)來說比較重要,a31=1/3 表明租房者認(rèn)為第一個(gè)指標(biāo)對(duì)于第三個(gè)指標(biāo)來說比較重要。
圖1:租房決策層次結(jié)構(gòu)模型
圖2
圖3:原始房源數(shù)據(jù)
(3)計(jì)算權(quán)重向量。采用算數(shù)平均數(shù)法計(jì)算權(quán)重,即:
具體步驟為:①將判斷矩陣A 中的每一個(gè)元素按列歸一化,即②將歸一化后的各列相加;③將相加后的向量除以n 即得到權(quán)值向量;
(4)進(jìn)行一致性判斷。
①計(jì)算一致性指標(biāo)CI(consistencyindex)
其中,CI 越小,說明A 越接近一致矩陣;
圖4:計(jì)算房源周圍商家算法
圖5:處理后的房源數(shù)據(jù)
②根據(jù)RI 指標(biāo)表(表4)計(jì)算一致性比例CR(consistencyratio)
如果CR<0.1,則認(rèn)為矩陣有較強(qiáng)的一致性,否則需要對(duì)矩陣進(jìn)行調(diào)整。
2.2.2 熵權(quán)法
在利用熵權(quán)法評(píng)估某一指標(biāo)時(shí),若該指標(biāo)的信息量越大,則不確定性越小,熵值對(duì)應(yīng)的也越?。环粗绻撝笜?biāo)的信息量越小,則不確定性越大,熵值對(duì)應(yīng)也越大。由上述分析可以得出,熵值越小的指標(biāo)提供的信息量越大,越為集中,故其權(quán)值也越大;熵值越大的指標(biāo)提供的信息量越少,越為混亂,故其權(quán)也越小。因此,可以利用各指標(biāo)的不確定性計(jì)算出熵值,進(jìn)而求出對(duì)應(yīng)的熵權(quán)值。具體的步驟如下[3]:
(1)計(jì)算熵值。
(2)計(jì)算各指標(biāo)的熵權(quán)值。
熵權(quán)值W2j越大,則說明該指標(biāo)所提供的信息量越大,表示其對(duì)綜合評(píng)價(jià)的作用也越大。
根據(jù)層次分析法所得到的權(quán)值W1 以及熵權(quán)法所得到的權(quán)值W2 形成組合權(quán)值W。
TOPSIS 法的全稱為逼近理想解排序方法(Technique for order performance by similarity to ideal solution),是由C.L.Hwang和K.Yoon在1982年提出的一種多屬性決策方法,該方法按照各個(gè)方案到正理想解和負(fù)理想解的接近程度對(duì)有限個(gè)目標(biāo)進(jìn)行相對(duì)優(yōu)劣排序。其中,正理想解是決策者設(shè)想出的最合適的方案,它的每一個(gè)單個(gè)屬性值都達(dá)到了備選方案中的最優(yōu)值;而負(fù)理想解則是決策者設(shè)想出的最不合適的方案,它表示單個(gè)屬性值都達(dá)到了備選方案中的最差值。TOPSIS 法的核心就是通過計(jì)算備選方案到正、負(fù)理想解的歐式距離來進(jìn)行相對(duì)優(yōu)劣的排序,如果一個(gè)待選方案距離正理想解最近而距離負(fù)理想解最遠(yuǎn),那么這個(gè)方案就是我們要尋找的最優(yōu)方案。使用TOPSIS 法進(jìn)行綜合評(píng)價(jià)的具體步驟如下[4]:
Step1:構(gòu)建樣本數(shù)據(jù)的評(píng)價(jià)矩陣
該矩陣表示共有m 個(gè)評(píng)價(jià)對(duì)象,n 個(gè)屬性指標(biāo),其中xij表示第i(i=1,2,…,m)個(gè)評(píng)價(jià)對(duì)象的第j(j=1,2,…,n)個(gè)屬性指標(biāo)所對(duì)應(yīng)的原始屬性值。
Step2:由于不同指標(biāo)之間量綱和數(shù)量級(jí)都不同,故需要對(duì)矩陣A 進(jìn)行規(guī)范化處理,使其中屬性可以放在一起比較。數(shù)據(jù)規(guī)范化的方法很多,這里使用常用的向量規(guī)范化:
對(duì)于效益型指標(biāo):
對(duì)于成本型指標(biāo):
其中M 為每一列的最大值
由此得到了歸一化的評(píng)價(jià)矩陣:
圖6:在線決策頁面
Step3:將權(quán)重矩陣W=(w1w2…wn)右乘規(guī)范化后的評(píng)價(jià)矩陣A'得到價(jià)值矩陣V
其中,Wi=(0,…,0,wi,0,…,0)T,權(quán)值滿足。
Step4:確定正理想解S+與負(fù)理想解S-,即
Step5:分別計(jì)算第i 個(gè)備選方案到正理想解S+的距離以及到負(fù)理想解的S-距離即
圖7:在線決策模型計(jì)算流程圖
Step6:計(jì)算各方案的相對(duì)貼近度
Step7:根據(jù)Ci的大小對(duì)各評(píng)價(jià)對(duì)象進(jìn)行排序,顯然Ci∈[0,1],Ci值越大,代表評(píng)價(jià)對(duì)象越好。
將TOPSIS 法應(yīng)用于租房領(lǐng)域中要注意一些特殊的房源所導(dǎo)致的排序結(jié)果不準(zhǔn)確的問題[5]。為了解釋這個(gè)問題,不妨假設(shè)x1,x2為出租房源的兩個(gè)屬性,如圖2所示,點(diǎn)S-對(duì)應(yīng)負(fù)理想解向量,點(diǎn)S+對(duì)應(yīng)正理想解向量,其他點(diǎn)M,N,P,Q,A,B 為六個(gè)出租房源所對(duì)應(yīng)的點(diǎn)。MN 是S-S+中垂線左下方的一條垂線,P,Q 則位于S-S+的另一條垂線上(在S-S+中垂線右上方),A,B 位于S-S+中垂線上。對(duì)MNPQ 這四個(gè)出租房源點(diǎn),按照3.1 中介紹的步驟進(jìn)行排序有如下的結(jié)果:M 優(yōu)于N,P 優(yōu)于Q,這樣的結(jié)果顯然是不合理的。因?yàn)樵贛、N 和P、Q 這兩對(duì)房源點(diǎn)中,N 和P 具有同樣的位置,而M 和Q 具有相同的位置,因此對(duì)這兩組房源點(diǎn)的排序理應(yīng)為N 優(yōu)于M,P 優(yōu)于Q 或者N 差于M,P 差于Q。另外,對(duì)于像點(diǎn)A 和點(diǎn)B 這樣在S-S+的中垂線上的點(diǎn)所對(duì)應(yīng)的房源的相對(duì)貼近度都為0.5,這些房源之間也無法比較優(yōu)劣性。這也就是所謂的特殊位置的房源無法進(jìn)行排序的問題。
上述問題,本文做如下改進(jìn):
(1)取S+S-延長(zhǎng)線上一點(diǎn)G,使得|S+S-|=|GS-|(|?|代表歐氏距離),記點(diǎn)G 所對(duì)應(yīng)的向量為其中我們可以稱它為虛擬負(fù)理想解。
(2)分別計(jì)算第i 個(gè)方案到正理想解S+的距離以及到虛擬負(fù)理想解S*的距離即
(3)計(jì)算各評(píng)價(jià)對(duì)象的相對(duì)貼近度并進(jìn)行排序
本系統(tǒng)使用Django 搭建,采用B/S 架構(gòu)進(jìn)行開發(fā),核心功能模塊是離線數(shù)據(jù)預(yù)處理模塊和在線決策結(jié)果計(jì)算模塊。
數(shù)據(jù)預(yù)處理主要指的是房源數(shù)據(jù)以及商家數(shù)據(jù)的處理,這一部分的數(shù)據(jù)處理需要調(diào)用大量的計(jì)算資源,并且這些數(shù)據(jù)也并非實(shí)時(shí)數(shù)據(jù),如將其放入到網(wǎng)站上進(jìn)行運(yùn)算,既沒有必要還會(huì)導(dǎo)致頁面卡頓,影響用戶的使用體驗(yàn)。本文所采用的租房房源數(shù)據(jù)來自于鏈家網(wǎng)上的真實(shí)租房數(shù)據(jù)。來源于真實(shí)生活的數(shù)據(jù)往往因?yàn)楦鞣N原因?qū)е聰?shù)據(jù)的格式極為復(fù)雜多樣,比如數(shù)據(jù)有很多缺失值,包含很多的文本數(shù)據(jù)沒有數(shù)字化等等,因此,這些租房房源數(shù)據(jù)不能直接拿來使用,需要進(jìn)行數(shù)據(jù)處理。圖3 展示了一部分原始房源數(shù)據(jù)。
本文采用Pandas 庫對(duì)租房數(shù)據(jù)進(jìn)行相應(yīng)的處理。首先,除掉包含空值的數(shù)據(jù),空數(shù)據(jù)大多來自于預(yù)測(cè)價(jià)格這一字段,由于有些房源信息不足,系統(tǒng)無法對(duì)價(jià)格進(jìn)行預(yù)測(cè)故其預(yù)測(cè)價(jià)格為空。然后,需要將經(jīng)度緯度轉(zhuǎn)換為火星坐標(biāo)并將其拼接在一起,并根據(jù)經(jīng)緯度刪除掉重復(fù)的房源。最后將文本信息數(shù)字化,“1 室1 廳1 衛(wèi)”這樣的字符串拆開,將客廳臥室數(shù)分別儲(chǔ)存在兩個(gè)字段中、用房源的預(yù)測(cè)價(jià)格減去標(biāo)價(jià)之后取絕對(duì)值也儲(chǔ)存到新的字段中;對(duì)于商家信息的處理也是類似的,首先取出去除空值,然后去掉重復(fù)值。
將房源數(shù)據(jù)以及商家數(shù)據(jù)清洗完成后,需要計(jì)算每個(gè)房源周圍1km 范圍內(nèi)各商家的個(gè)數(shù),然后將結(jié)果與房源數(shù)據(jù)拼接。具體的步驟是:對(duì)于house_df 數(shù)據(jù)集中某一個(gè)房源,根據(jù)該房源的經(jīng)緯度信息循環(huán)遍歷poi_df 數(shù)據(jù)集,判斷POI 類型、查找符合距離要求的POI 并按照POI 類型進(jìn)行歸類計(jì)算,超市便利店個(gè)數(shù)保存在變量L中,大中小學(xué)幼兒園個(gè)數(shù)保存在變量E 中、公園綠地?cái)?shù)保存在變量G 中、醫(yī)院個(gè)數(shù)保存在變量H 中、距離最近的地鐵站距離保存在變量T2 中。之后再計(jì)算房源預(yù)測(cè)結(jié)果與房源標(biāo)價(jià)差值的絕對(duì)值,結(jié)果保存在變量delta_price 中。該算法的流程圖如圖4。
數(shù)據(jù)處理完成后,將數(shù)據(jù)也存儲(chǔ)在數(shù)據(jù)庫中,方便其他模塊的使用,圖5 展示了部分處理后的房源數(shù)據(jù)。
在線決策模型計(jì)算模塊實(shí)現(xiàn)了第三章所提出的決策模型,是本系統(tǒng)較為重要的模塊,它主要負(fù)責(zé)三部分的工作:第一部分,將用戶輸入的內(nèi)容以及滿足要求的房源信息進(jìn)行處理;第二部分,使用第三章所提出的決策模型進(jìn)行決策,得到初步的決策結(jié)果;第三部分,將決策結(jié)果進(jìn)行加工,使用戶更加容易理解。在線決策頁面如圖6。
在決策結(jié)果頁面,左上方是一個(gè)搜索框,用戶可以輸入自己對(duì)房源的基本要求,右側(cè)是地圖的交互區(qū)域,左下方是結(jié)果列表。我們根據(jù)用戶在搜索框中輸入的條件,為用戶提供了前十個(gè)合適的房源展示在左側(cè)列表以及右側(cè)的地圖中,用戶點(diǎn)擊列表中的房源標(biāo)題或者地圖中的查看房源詳情來進(jìn)入房源詳情頁,查看該房源的具體情況。在線決策計(jì)算模塊的流程圖如圖7。
租房者在進(jìn)入租房決策頁面后系統(tǒng)會(huì)自動(dòng)判斷用戶是否登錄,如果用戶未登錄,則彈出登陸注冊(cè)表單。用戶可在租房決策頁面輸入工作地點(diǎn)、臥室數(shù)、客廳數(shù)、上班距離、預(yù)期價(jià)格等租房條件,之后點(diǎn)擊搜索按鈕。瀏覽器會(huì)判斷用戶是否登錄,如未登錄,則彈出登錄注冊(cè)表單讓用戶完成登錄,之后,再次判斷用戶輸入的信息是否有誤,如有誤則提示用戶重新輸入,驗(yàn)證通過后,使用Ajax將用戶輸入的數(shù)據(jù)傳遞給Views 中的處理rent_decision_handle 函數(shù)中。使用Ajax 的目的是實(shí)現(xiàn)不刷新頁面也能獲取數(shù)據(jù)的效果。
后臺(tái)獲取到用戶輸入信息后對(duì)數(shù)據(jù)進(jìn)行處理,然后查找符合廳室、價(jià)格要求的房源,并計(jì)算這些房源距離用戶工作地點(diǎn)的距離,然后根據(jù)用戶選擇的上班距離,再次進(jìn)行篩選得到最終的決策矩陣。得到?jīng)Q策矩陣后,調(diào)用計(jì)算熵權(quán)法的函數(shù)Cal_Eweight 根據(jù)決策矩陣計(jì)算指標(biāo)的熵權(quán)值W2,查詢數(shù)據(jù)庫找到當(dāng)前用戶的主觀權(quán)重W1,然后按照公式5 計(jì)算出組合權(quán)重W。最后,調(diào)用編寫的TOPSIS 法函數(shù)topsis,得到初始的決策結(jié)果。將初始決策結(jié)果按照相對(duì)貼近度從大到小進(jìn)行排序,取最合適的前十個(gè)房源,添加上小區(qū)信息、房源圖片、房源標(biāo)題等信息打包為Json 格式數(shù)據(jù)傳遞給前端模板,最后使用Javascript 對(duì)結(jié)果進(jìn)行展示。
本文針對(duì)幫助租房者決策挑選合適房源這一現(xiàn)實(shí)問題為出發(fā)點(diǎn),提出了改進(jìn)后的TOPSIS 決策模型,并將該模型應(yīng)用于實(shí)際,設(shè)計(jì)完成了租房多屬性決策支持系統(tǒng),并開發(fā)了一些如登錄注冊(cè)、收藏等輔助功能。租房者可通過該系統(tǒng)順利的找到自己滿意的房源,解決由信息爆炸所帶來的找房難的問題。未來,可以對(duì)界面美觀程度、系統(tǒng)響應(yīng)速度、人性化程度等方面對(duì)系統(tǒng)進(jìn)行完善,進(jìn)一步優(yōu)化用戶體驗(yàn)。