霍姝宇+王春萍+史朝陽
摘要:隨著科技的迅猛發(fā)展,在生活中,每天都會產(chǎn)生大量的數(shù)據(jù)。數(shù)據(jù)挖掘是實現(xiàn)對大量數(shù)據(jù)進行分析和獲取相關(guān)知識的研究過程,目的在于能夠使人們在其中獲取到需要的、具有潛在價值的規(guī)律。住房是民生之本,在房屋價格的不斷提升的這些年中,不少購房者將視線轉(zhuǎn)移到二手的普通住房,這也拉動了二手房的價格不斷攀升。如果只是通過觀察或者歸納總結(jié)的途徑來對影響房源價格提升的因素進行綜合分析,那么這意味著,將是一項工作量非常巨大的并且難以實現(xiàn)的任務(wù)。文章研究了通過機器學習工具WEKA,對趕集網(wǎng)獲取的昆明市二手房數(shù)據(jù),使用SimpleKmeans聚類算法,使得具有屬性:房屋售價、房屋規(guī)格、房屋朝向、房屋樓層、房屋類型、建筑時間、產(chǎn)權(quán)、房屋性質(zhì)、裝修情況、地段的2400余條實例各屬性分別分6個簇聚類在一起,同一類間的屬性相似度較高。
關(guān)鍵詞:數(shù)據(jù)挖掘;二手房屋價格;網(wǎng)絡(luò)爬蟲;聚類分析;SimpleKmeans
近幾年,我國的房屋地產(chǎn)銷售市場發(fā)展十分迅速,房屋價格上升較快,這也對二手房屋的銷售起到了一定的刺激作用。一系列輿論的導向,讓越來越多的人群被重新卷入到“追求高價”的房屋購買怪圈中,一定程度上也對政府決策行為產(chǎn)生干擾。因此探究影響房屋價格的多種因素就顯得尤為重要,本文以昆明市二手的住房為范例,做出聚類分析。
在以昆明二手房源為樣本聚類分析中,可通過以下幾個數(shù)據(jù)支撐挖掘過程,一是明確要解決的問題,確定挖掘目標。根據(jù)不同的目標選擇不同的數(shù)據(jù)挖掘的方法。本文選擇SimpleKmeans算法,是WEKA平臺中的K-means算法,目的使同一簇中的實例間相似度較高。二是數(shù)據(jù)的準備。本文通過利用Python語言編寫了多進程網(wǎng)絡(luò)爬蟲程序,在完成數(shù)據(jù)抓取任務(wù)的同時保證了大規(guī)模數(shù)據(jù)輸出的穩(wěn)定性。三是數(shù)據(jù)預(yù)處理。在數(shù)據(jù)挖掘的過程中,數(shù)據(jù)預(yù)處理起到了十分重要的作用,它決定了數(shù)據(jù)挖掘的成敗。因為在利用各種方式獲得的原始數(shù)據(jù)中,會存在大量的缺失值或者嚴重偏離預(yù)期的數(shù)據(jù),在預(yù)處理階段會對數(shù)據(jù)挖掘結(jié)果明顯產(chǎn)生影響的數(shù)據(jù)進行補充、刪除、離散化等處理。四是數(shù)據(jù)挖掘。根據(jù)數(shù)據(jù)的類型、特點,選擇合適的數(shù)據(jù)挖掘工具、方法進行挖掘,得到數(shù)據(jù)中潛在的信息。五是結(jié)論與分析。對結(jié)果進行驗證、說明,獲得結(jié)論,做出解釋。
一、數(shù)據(jù)獲取
(一)爬蟲系統(tǒng)需求分析
利用Python語言編寫趕集網(wǎng)二手房網(wǎng)絡(luò)爬蟲程序完成原始數(shù)據(jù)獲取。具體功能包括對售房標題、樓層、產(chǎn)權(quán)、裝修情況等20余個屬性信息進行抓取并保存在MongoDB數(shù)據(jù)庫中。為了保證爬蟲程序能夠順利完成,保證數(shù)據(jù)輸出的高效性,同時程序的運行結(jié)果能夠滿足基本的功能需求,因此有必要在實現(xiàn)系統(tǒng)前進行分析,設(shè)計出符合需求的工作流和功能模塊。
本文研究設(shè)計爬蟲程序主要由于三個模塊組成。1. 抓取頁面。從起始頁面開始搜索,服務(wù)器發(fā)送request包,能夠下載http協(xié)議和https協(xié)議的鏈接的網(wǎng)頁,構(gòu)造HTTP請求中的GET請求;2. 頁面解析。主要內(nèi)容是在抓取頁面后,利用BeautifulSoup4解析網(wǎng)頁,通過html標簽將數(shù)據(jù)提取出來。3. 主運行模塊。pool = multiprocessing.Pool(multiprocessing.cpu_count())創(chuàng)建進程池,實現(xiàn)進程池功能,實現(xiàn)了多進程爬蟲工作流,提高了爬蟲任務(wù)的執(zhí)行效率。當程序運行時,遇到異常錯誤需要跳過此異常繼續(xù)執(zhí)行并且記錄異常,保證后續(xù)運行中不會繼續(xù)訪問,例如404錯誤等異常頁面。這也就加大了對程序的可移植性和可靠性額要求。
(二)爬蟲功能設(shè)計
通過對發(fā)布信息平臺的對比,發(fā)現(xiàn)趕集網(wǎng)二手房數(shù)據(jù)更新速度快,頁面規(guī)則相對統(tǒng)一,便于解析網(wǎng)頁,因此選擇趕集網(wǎng)可以提取更全面的獲取二手房數(shù)據(jù),能更準確地對影響昆明二手房源售價的因素做出分析。但是趕集網(wǎng)發(fā)布的數(shù)據(jù)也存在一些問題,由于趕集網(wǎng)發(fā)布的售房信息也會存在失真的情況,經(jīng)過數(shù)據(jù)預(yù)處理后的數(shù)據(jù)集,可能有部分失真數(shù)據(jù)會使聚類分析產(chǎn)生偏差。原始數(shù)據(jù)通過網(wǎng)絡(luò)爬蟲實現(xiàn)抓取,網(wǎng)絡(luò)爬蟲利用網(wǎng)頁的URL來得到網(wǎng)頁的內(nèi)容,并且將抓取的數(shù)據(jù)直接返回給用戶,不需要人工瀏覽器獲取。
在爬蟲項目中經(jīng)常會遇到一些問題,比如,頻繁快速訪問會被封IP,通常會通過設(shè)置代理IP來解決這種情況,通過使用urllib.request.build_opener添加User-agent消息頭偽裝瀏覽器的方式繼續(xù)完成抓取。為了防止因為爬取速度過快而帶來的一系列問題,本文設(shè)計程序中通過time.sleep(4)方法增加等待時間,使爬蟲完成一次抓取便停頓4秒,延緩數(shù)據(jù)抓取時間。
1. 工具選擇
Python語言自帶了urllib,urllib2d等常用的庫。Python與其他編程語言進行比較可以發(fā)現(xiàn),Python抓取網(wǎng)頁文檔的接口更簡潔;相比其他動態(tài)腳本語言,如perl,shell,python的urllib2包提供了較為完整的訪問網(wǎng)頁文檔的API。python里擁有功能強大的第三方包。抓取的網(wǎng)頁基本都需要處理,通過beautifulsoap4可以清晰、快速地完成網(wǎng)絡(luò)剖析的工作,提取文本。
2. 網(wǎng)絡(luò)爬蟲的搜索策略
趕集網(wǎng)上的二手房源信息資源非常豐富,網(wǎng)絡(luò)爬蟲需要采取一定的策略,優(yōu)先爬去對聚類分析有幫助的數(shù)據(jù)。本文設(shè)計的趕集網(wǎng)爬蟲程序是基于深度優(yōu)先原則進行的,在聚類分析的過程中,需要的是大量的、來源可靠的數(shù)據(jù),在趕集網(wǎng)能提供網(wǎng)頁中盡可能多的一個連接一個連接進行抓取。這樣做的目的在于,抓取的數(shù)據(jù)量足夠大,使聚類分析的結(jié)果更接近實際情況。endprint
(三)爬蟲程序工作流
為了保證爬蟲在抓取過程中是高效的,使大規(guī)模抓取、輸出效率更加穩(wěn)定,在過程中設(shè)計了爬蟲工作流。在列表頁爬取所有二手售房的URL,存貯到MongoDB數(shù)據(jù)庫中,通過Python語句在數(shù)據(jù)庫中建立一個用來裝URL_list的表,Spider1的作用就是將所有列表的URL統(tǒng)統(tǒng)存入到URL_list中;Spider2將URL_list中所有鏈接依次取出并逐一訪問,獲得詳情頁信息。將二手售房的詳細信息存儲到數(shù)據(jù)庫item_indo中。在這里運用了MongoDB。是一種系統(tǒng)管理的資源可以通過計算機與節(jié)點直接相連的方式,不需要與本地相連的節(jié)點相連接,它的使用可以通過在程序中直接編程引入,較為方便,并且相比于其他常用數(shù)據(jù)庫,更能適合完成大量數(shù)據(jù)的存儲。在編譯器pycharm中安裝MongoDB的驅(qū)動pymongo, 通過MongoClient()的方法連接主機和端口。
設(shè)計數(shù)據(jù)結(jié)構(gòu)表、聚類屬性信息如表1和表2所示。
二、聚類分析技術(shù)在昆明二手房價中的應(yīng)用
聚類分析在生物學、電子商務(wù)等領(lǐng)域應(yīng)用較多,是數(shù)據(jù)挖掘和機器學習的重要內(nèi)容之一,它是一種無監(jiān)督的機器學習方式。聚類分析是把一組對象劃分為很多類,但是在每一類中的實例間的相似程度高,在沒有劃分到一類的對象之間的相似程度很低或者存在著某些的差異就無法聚類在一起,聚類中的簇會根據(jù)實際數(shù)據(jù)集的特征,按照數(shù)據(jù)之間的相似度來定義。這種分析的明顯優(yōu)勢就在于可以通過實現(xiàn)對類的全方面的、多層次的描述而實現(xiàn)信息的獲取。 聚類分析算法可以分為劃分方法、層次方法、基于密度的方法、基于網(wǎng)格的方法、基于模型的方法;基于劃分的方法主要包括有k—平均值算法,k—中心點算法?;趯哟蔚姆椒ㄖ饕荂URE和BIRCH算法?;诰W(wǎng)格的聚類方法具有代表性的是STING算法。典型的基于密度的聚類方法是DBSCAN算法。SimpleKmeans算法是在WEKA平臺中實現(xiàn)K-means算法。K-means聚類算法輸入聚類個數(shù)k以及n個實例數(shù),輸出符合方差最小標準的k個聚類,使得統(tǒng)一簇組成的類中實例間相似度較高,不同類的對象間相似度低或者因為一些原因無法聚類在一起。
(一)數(shù)據(jù)預(yù)處理
1. 數(shù)據(jù)預(yù)處理
原始數(shù)據(jù)中的數(shù)據(jù)一般都存在數(shù)據(jù)不完整、重復(fù)或模糊等情況,很少能直接滿足算法研究的要求,在數(shù)據(jù)挖掘的過程中,如果只重視對算法的研究而忽略了數(shù)據(jù)預(yù)處理階段的實現(xiàn),從某種程度上說,會失去數(shù)據(jù)挖掘的意義。并且,原始數(shù)據(jù)中沒有研究價值的數(shù)據(jù)很多,都會對數(shù)據(jù)挖掘算法的執(zhí)行效率和挖掘的結(jié)果產(chǎn)生嚴重的影響,造成結(jié)果偏差。因此,對原始數(shù)據(jù)進行合理的預(yù)處理是數(shù)據(jù)挖掘研究過程中成功與否的關(guān)鍵。
2. 屬性選擇、數(shù)據(jù)清洗
數(shù)據(jù)預(yù)處理包含了很多的步驟。數(shù)據(jù)選擇主要包含選擇合適的屬性、屬性的合成、實例的選擇等;數(shù)據(jù)清理時去除數(shù)據(jù)集中明顯偏離期望值或明顯不符合常理的數(shù)據(jù)、處理重復(fù)值、缺失值,處理遺漏掉的數(shù)據(jù)和清洗臟數(shù)據(jù);數(shù)據(jù)合成則利用原始數(shù)據(jù)生成更貼合實際的新的屬性。數(shù)據(jù)合并是將原來疏散的幾個數(shù)據(jù)集依照一定的標準和原則歸并在一起;數(shù)據(jù)格式化多應(yīng)用于解決數(shù)據(jù)中不一致的情況。
利用Python撰寫的網(wǎng)絡(luò)爬蟲獲取了趕集網(wǎng)網(wǎng)站上的二手房源發(fā)布信息的標題、以及有關(guān)二手房出售的相關(guān)信息包含24個屬性的7000余條數(shù)據(jù)。
通過對獲得的數(shù)據(jù)觀察發(fā)現(xiàn),數(shù)據(jù)出現(xiàn)重復(fù)問題,在周邊教育、醫(yī)療設(shè)施等屬性中存在的數(shù)據(jù)值缺失、不一致等問題較為嚴重,而在采集到的月供款數(shù)據(jù)中,原始數(shù)據(jù)嚴重偏離期望值,不符合實際。去除屬性中特殊符號,刪除嚴重缺失實例的屬性如:周邊學校、醫(yī)療設(shè)施、購物渠道等。在Excel中完成數(shù)據(jù)篩選,選擇具有實際意義的數(shù)據(jù),將數(shù)據(jù)另存為CSV文件,WEKA平臺可直接對CSV文件操作。
(二)分裂數(shù)據(jù)集、測試集
在聚類器選擇中,使用Percentage split(按照比例分割)。使用默認設(shè)置66%,既在供聚類分析的數(shù)據(jù)集中,取出特定66%的數(shù)據(jù)作為訓練集,剩余數(shù)據(jù)作為測試集,用來評價聚類器的性能。
(三)聚類分析結(jié)果
如圖2所示。
三、結(jié)語
在聚類分析結(jié)果中,Within cluster sum of squared errors:1604.7416693522332用來評價聚類的好壞,其數(shù)值越小就意味著聚在一個簇中的實例間的距離越小。同時這個值也會受到“seed”參數(shù)的影響,設(shè)定隨機種子數(shù)不同,所得到的這個數(shù)值也不同,在本文中,設(shè)定的“seed”值是100,得到Within cluster sum of squared errors: 1604.7416693522332,是最理想的結(jié)果。
在本文中,參與聚類分析的數(shù)據(jù)集包含了九種屬性的共計2400多實例,在額外簇(Full Data)中顯示整個數(shù)據(jù)集,設(shè)置的6個簇包含的實例數(shù)分別為:216,410,414,360,421,626,數(shù)據(jù)集中的所有實例全部歸為各簇中。部分購房者在購房時對房屋的朝向有一定的要求,這是在本文中進行聚類分析的影響因素之一,對房屋的朝向的選擇可能是受一些歷史傳統(tǒng)觀念的影響,并且,我國處于北半球,南向、南北朝向的房屋采光效果明顯好于其他方向,利于通風,是購買者在購買時會考慮的因素,在聚類分析結(jié)果中,每個簇所在的列對應(yīng)的房屋朝向都是南北朝向;在房屋類型中,分為公寓、普通住宅、別墅三種類別,普通住宅類別較為集中;房屋產(chǎn)權(quán)性質(zhì)同理,聚集在70年商品房類別中。數(shù)據(jù)集中的精裝修、毛坯、中等裝修、豪華裝修、簡單裝修五種情況,除簇4所在列為毛坯,其余簇所在列均為精裝修類別。在對房屋性質(zhì)的描述中:常有滿五不唯一,不滿五年,滿五唯一,滿五年等方式描述。滿五唯一含義是指從房產(chǎn)證出證開始計算,已經(jīng)等于或大于五年的房屋并且戶主在這個省份內(nèi)沒有其他登記擁有的住房。一般在這種情形下可免房子的個稅和營業(yè)稅,而滿五不唯一不免征個所得的稅。因此房屋的性質(zhì)也是在二手房購買時,購買者通常會考慮的一些因素,不滿五年的列表聚集在0、2、3、4中。
參考文獻:
[1]李雄軍.穩(wěn)定我國房價的政策探討[J].重慶工商大學學報(社會科學版),2008(01).
[2]高文林.二手房價格評估的影響因素及方法選擇[J].中國房地產(chǎn),2012(08).
(作者單位:霍姝宇,昆明理工大學校團委;王春萍,昆明理工大學圖書館;史朝陽,昆明理工大學管理與經(jīng)濟學院。王春萍為通訊作者)endprint