《基于XGBoost算法的租房價格預測實證探究》14000字(論文)_第1頁
《基于XGBoost算法的租房價格預測實證探究》14000字(論文)_第2頁
《基于XGBoost算法的租房價格預測實證探究》14000字(論文)_第3頁
《基于XGBoost算法的租房價格預測實證探究》14000字(論文)_第4頁
《基于XGBoost算法的租房價格預測實證探究》14000字(論文)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1緒論研究背景自改革開放以來,我國中西部地區(qū)形成了一股向北上廣深等經(jīng)濟高速發(fā)展區(qū)域?qū)ふ夜ぷ鞯睦顺?。截止?020年,我國每年都有數(shù)億人背井離鄉(xiāng)選擇到大城市去尋找工作。因為遠離家鄉(xiāng),所以衣食住行是他們每天必須要考慮的事情。對于剛到大城市的人來說,租房就成了他們的首要選擇。城市的租房價格差異巨大,房子價格因區(qū)域,交通,環(huán)境等因素而大受影響。樓房會因為靠近校區(qū)或是緊鄰地鐵線而價格上漲,同一區(qū)域的住房也會因為某棟樓房的采光和通風好而價格上漲,這些因素都影響著房屋的價格。未經(jīng)過改造的老舊小區(qū)即使是環(huán)境破舊也會因為地理位置的優(yōu)勢而導致價格高于環(huán)境良好、地理位置不佳的新建小區(qū)。隨著社會的發(fā)展,北上廣等地區(qū)為了改變城市面貌,開始拆除“城中村”區(qū)域,改造老舊小區(qū)。這樣的改變導致大量可供出租的房屋被拆除,給長期租房的打工者們帶來了巨大的生活壓力。另一方面,隨著城市的不斷擴建,大量的新樓房被建成,但由于商圈沒有形成、人文環(huán)境差等因素,許多擁有多處房產(chǎn)的戶主也選擇出租房子。出于房價和工作變更的考慮,租房就成為了就業(yè)者最具性價比的選擇。本文便是在這一時代熱點下,通過租房的價格數(shù)據(jù)建立模型來完成對租房價格的分析與預測。1.2研究的目的和意義1.2.1研究的目的房子是一個人的安生立命之所,不管是為了組建家庭還是為了事業(yè)而拼搏,有房可居始終是一個前提。隨著社會經(jīng)濟的發(fā)展,老百姓的生活水平有了顯著的提高。在基本上已經(jīng)解決溫飽問題的今天,人們開始追求更高層次的精神生活,也開始越來越注重子女的教育?!皩W區(qū)房”、“獨棟別墅”等新型住房概念層出不窮。房子不再僅僅被賦予簡單的居住意義,而帶來了更多的商業(yè)價值。過去幾年中出現(xiàn)的“炒房熱”更是讓房價一飛沖天。盡管政府已經(jīng)出臺大量住房相關(guān)的政策,為了控制房價更是提出了“房子是用來住的,不是用來炒的”的口號,但現(xiàn)如今的房子價格依舊讓不少人望而興嘆。對于即將踏入社會的大學畢業(yè)生群體,租房會是他們的第一選擇。但是,還是有不少人利用租房價格的信息差來賺取利益。2017年,“深圳女二手房東擁有400多套出租房,年收入過百萬”一事火遍全國。一個低價的房子經(jīng)過二次轉(zhuǎn)手出租便可從中攫取利益,可見租房現(xiàn)狀中存在信息不透明導致的價格差異問題。在實際生活當中,研究租房的相關(guān)問題有利于解決當?shù)氐木蜆I(yè)問題。研究各個特征同租房價格的關(guān)系能夠幫我們找到其中影響租房價格的主要因素。通過分析這些因素的影響能夠幫助有租房需求的人提供更多的現(xiàn)實考慮。1.2.2研究的意義對于剛參加工作的年輕人來說,租房是一個占比非常大的開支。但是房租的價格又是同城市的生活水平息息相關(guān)。為了吸引更多的大學生在當?shù)剡M行就業(yè),解決他們的住房問題就能夠為當?shù)匚嗟娜瞬?。根?jù)生活的經(jīng)驗來看,人們在租房的時候會根據(jù)自己的實際需求去選擇租房。本文通過建立模型的方式能夠找到與房租價格相關(guān)的特征,幫助當?shù)卣盐兆夥渴袌龅膬r格調(diào)動風向。同時也能夠幫助租房市場中的銷售人員提供合理的租房房價指導。在研究各個因素同租房價格的關(guān)聯(lián)關(guān)系時需要用到大量的數(shù)據(jù),研究人員需要通過復雜的處理步驟來進行數(shù)據(jù)處理,在數(shù)據(jù)處理這一過程當中,從租房數(shù)據(jù)的采集到數(shù)據(jù)清洗,把清洗后的數(shù)據(jù)進行分析,每一個步驟都有可能產(chǎn)生錯誤。因此我們需要理論結(jié)合實際,對于那些無關(guān)緊要的數(shù)據(jù)可以進行刪除操作,然后對數(shù)據(jù)進行進一步的特征處理。國內(nèi)外關(guān)于價格預測相關(guān)的研究項目非常之多,其中研究房價的預測是主流問題。但是影響房價的因素眾多,從不同的角度去研究房價問題,即使是運用了相同的模型,這樣也會導致結(jié)果產(chǎn)生非常大的差異。模型的泛化能力差,模型參數(shù)不能更新也會導致價格預測的結(jié)果不準確。正是出于這樣的考慮,房價預測的相關(guān)研究一直是一個值得被關(guān)注的題目。當?shù)卣谘芯亢椭付ㄒ粋€與房價相關(guān)的政策時,往往會聽取專家的意見,但如果專家進行預測的模型不能準確地預測未來租房市場地走向,這樣會使得與租房相關(guān)的政策不能很好地落實。因此必須要運用租房價格預測模型從多角度進行分析,選擇不同地參數(shù)對模型進行調(diào)優(yōu),使模型能都預測更加準確地結(jié)果。本文正是通過建立xgboost模型對租房價格進行預測,為租房價格預測問題提供了一種角度進行分析。1.3國內(nèi)外研究現(xiàn)狀1.3.1國內(nèi)研究現(xiàn)狀徐富強等人利用線性組合預測模型對合肥房地產(chǎn)地房價進行預測,他們對模型的改進方法是利用誤差的絕對值并且使這些誤差達到最小。通過計算樹增益的方法,計算單個模型的預測值在整個模型中的權(quán)重來建立能預測的模型。該模型的優(yōu)勢是利用了神經(jīng)網(wǎng)絡(luò)和支持向量機在多種影響變量的環(huán)境中能夠良好地訓練的優(yōu)勢,顯著地提高了模型對預測結(jié)果地準確度。羅黨等人在傳統(tǒng)的GM(1,1)模型上做出改進,在原有的模型上加入BP神經(jīng)網(wǎng)絡(luò)模型,建立了一個基于灰色BP神經(jīng)網(wǎng)絡(luò)的組合模型,并利用該模型對鄭州市的商品房價格進行預測。他們采用兩種模型分別進行對比,將GM(1,1)模型對鄭州市的商品房價格預測結(jié)果與灰色BP神經(jīng)網(wǎng)絡(luò)的組合模型對鄭州市的商品房價格預測結(jié)果進行對比。結(jié)果顯示,灰色BP神經(jīng)網(wǎng)絡(luò)的組合模型相比于傳統(tǒng)的GM(1,1)模型在預測的結(jié)果方面有更高的精確度,對實際問題的適應性更強。郭小娟同樣是使用對比的方法對灰色殘差修正模型進行改進。一種是基于BP神經(jīng)網(wǎng)絡(luò)的灰色殘差修正模型,一種是基于UGM模型的灰色殘差修正模型。實驗首先建立了灰色殘差修正模型,得到模型的預測結(jié)果。再分別通過BP神經(jīng)網(wǎng)絡(luò)和UGM模型對灰色殘差模型加以改進,得到改進后的模型預測結(jié)果。結(jié)果顯示,改進后的模型更能反應房價市場的變化趨勢。魏云云等人利用灰色關(guān)聯(lián)分析的方法對西安市近幾年房價的統(tǒng)計數(shù)據(jù)進行數(shù)據(jù)處理。他們得到影響房價的主要特征。再利用BP神經(jīng)網(wǎng)絡(luò)模型對房價進行預測。這種處理的思路是在模型進行預測之前,利用灰色關(guān)聯(lián)分析的方法獲得主要的特征。這樣能夠提高模型的訓練速度,得到的預測結(jié)果也會更好。張志峰抓取南京市二手房的數(shù)據(jù)集,通過對數(shù)據(jù)進行簡單的數(shù)據(jù)處理,再對數(shù)據(jù)進行可視化分析。經(jīng)過簡單的分析之后,對數(shù)據(jù)集進行特征提取。最后建立xgboost模型使用處理后的數(shù)據(jù)進行訓練,并對預測的結(jié)果同線性回歸和lasso回歸得出的結(jié)果進行比較。最后得出的結(jié)論是xgboost相比與回歸模型具有更好的預測效果,應用性更強。1.3.2國外研究現(xiàn)狀Kotakinabalu等人通過比較的方法,將反向傳播人工神經(jīng)網(wǎng)絡(luò)的預測誤差和模糊回歸的預測誤差相比較。反向傳播人工神經(jīng)網(wǎng)絡(luò)的預測結(jié)果比模糊回歸的預測結(jié)果要好。Bla等人通過建立非結(jié)構(gòu)化的協(xié)方差矩陣混合模型對舊金山地區(qū)的短租房銷售業(yè)績進行分析。分析結(jié)果顯示短租房的收入業(yè)績與供給等特征無關(guān)。這一結(jié)果為Airbnb短租房公司提供了建設(shè)性的幫助。1.4本文組織結(jié)構(gòu)本文主要研究的是短租房的租房價格分析與價格預測的問題,從現(xiàn)時情況出發(fā),選取正規(guī)租房網(wǎng)站的短租數(shù)據(jù)集。首先對數(shù)據(jù)的結(jié)構(gòu)進行了簡單的分析,然后刪除重復的數(shù)據(jù),經(jīng)過對數(shù)據(jù)集進行特征提取,運用決策樹模型進行特征選擇,然后根據(jù)xgboost算法進行建模,把特征數(shù)據(jù)輸入進行訓練。根據(jù)網(wǎng)格搜索的方法對模型的參數(shù)進行調(diào)優(yōu),最后畫出模型預測值和真實值之間的對比圖并以此來判斷模型預測的結(jié)果。本文的結(jié)構(gòu)為如下五章:第一章的緒論部分介紹了本文的研究背景,研究問題的目的和意義。同時闡述了國內(nèi)外有關(guān)房價數(shù)據(jù)分析與價格預測的研究內(nèi)容。第二章相關(guān)理論與技術(shù)部分介紹了項目開發(fā)所需要用到的開發(fā)環(huán)境,與數(shù)據(jù)處理有關(guān)的技術(shù),用于進行特征選擇的決策樹模型以及xgboost算法。第三章數(shù)據(jù)特征處理與可視化部分介紹的是對數(shù)據(jù)基本的數(shù)據(jù)清洗操作、對數(shù)據(jù)進行特征提取以及提取完特征后數(shù)據(jù)的可視化。第四章基于xgboost模型的租房價格預測部分介紹的是介紹的模型的構(gòu)建過程,這其中包括模型相關(guān)的參數(shù)介紹以及利用網(wǎng)格搜索進行調(diào)參,最后是模型預測結(jié)果的對比圖。第五章總結(jié)與不足部分介紹的是對項目設(shè)計和所遇到的問題的總結(jié),包括技術(shù)和溝通等方面。不足是對設(shè)計完成后項目還可以改進的總結(jié)。1.5本章小結(jié)本章主要介紹了研究租房數(shù)據(jù)分析與價格預測的研究背景。討論了自改革開放以來我國出現(xiàn)的外地打工熱潮。并隨著社會經(jīng)濟的快速發(fā)展,當人們的工資上漲速度跟不上房價上漲速度時,相比于買房,租房就成為了大多數(shù)人的選擇。這種租房選擇的原因是多方面的,舊城改造與城中村的拆毀給長期租房的人帶來了巨大的生活壓力。而另一方面利用租房信息差二次出租房屋也成為了一種賺錢的手段。這一章還對研究的目的和意義進行了討論。房子是一個人安家立命之本,但是房子不再僅僅只擁有的居住功能,還附帶了更多的商業(yè)價值。希望通過本文的研究,可以對那些真正有租房需求的人提供一點現(xiàn)實的考量。本章的第三部分是對國內(nèi)外有關(guān)租房價格預測研究的一個概括。通過研究可以發(fā)現(xiàn),國內(nèi)對于房價預測的研究主要是運用的神經(jīng)網(wǎng)絡(luò)模型和XGBboost模型,并通過參數(shù)調(diào)優(yōu)的方式和多模型的融合來增強模型的預測精度。國外的研究方式也是通過人工神經(jīng)網(wǎng)絡(luò)或者是混合模型的方法來對與房價有關(guān)的問題進行研究。本章的第四個部分討論了項目的主要設(shè)計流程,以及論文撰寫的結(jié)構(gòu)設(shè)計。主要是從現(xiàn)時情況出發(fā),通過選取正規(guī)租房網(wǎng)站的短租數(shù)據(jù)集。首先對數(shù)據(jù)的結(jié)構(gòu)進行了簡單的分析,然后刪除重復的數(shù)據(jù),經(jīng)過對數(shù)據(jù)集進行特征提取,運用決策樹模型進行特征選擇,然后根據(jù)XGBoost算法進行建模,把特征數(shù)據(jù)輸入進行訓練。根據(jù)網(wǎng)格搜索的方法對模型的參數(shù)進行調(diào)優(yōu),最后畫出模型預測值和真實值之間的對比圖并以此來判斷模型預測的結(jié)果。論文撰寫的主體思路是依照項目設(shè)計的功能模塊進行撰寫的,詳細地闡述了各個部分的設(shè)計內(nèi)容。2相關(guān)理論與技術(shù)2.1項目開發(fā)環(huán)境本次項目開發(fā)所用的開發(fā)工具是pycharm,這是一款由Jetbrains開發(fā)的Python的IDE編輯工具。Pycharm開發(fā)工具具有根據(jù)已編寫的代碼對剩下的代碼進行填補,能夠自動檢查代碼中的錯誤并用紅線提示,能對項目中缺失的模塊進行報錯處理,還同時具有強大的導航界面等一系列特色功能。此外,因為pycharm擁有豐富的web框架,所以在pycharm中還可以進行web項目的開發(fā)。最為重要的是pycharm能夠從互聯(lián)網(wǎng)中下載各種數(shù)學和科學包,這些操作都可以通過pycharm中包含的控制臺上輕松完成。本次項目開發(fā)所用的編程語言是python。Python編程開發(fā)語言發(fā)展至今已經(jīng)形成了多個版本,本次項目所使用的python版本是3.7版本,這是目前主流的項目開發(fā)版本。Python具有許多強大豐富的功能,例如資源眾多的函數(shù)庫。Python的優(yōu)點有如下5個方面。一是相比于c語言或是java語言,python的語法更加容易讓人理解。對于沒有其它編程語言基礎(chǔ)的人來說,python語言的易讀性會讓新手更加快速學會這門編程語言。通過了解程序的業(yè)務(wù)邏輯能夠更加容易設(shè)計出想要的應用程序。二是python代碼的開源性使得python的程序代碼能夠不斷地被優(yōu)化。程序中的漏洞能夠被找到且成為開發(fā)者學習的案例,其他人也能夠通過設(shè)計新的功能或者利用算法來對程序進行優(yōu)化。三是在編寫python代碼的過程中,用戶能夠直接在運行窗口進行編寫。編寫的程序不需要編譯器,這是因為python自帶的解釋器能夠獨立對代碼進行編譯。用戶也可以在未寫完整個程序的情況下進行運行和測試。四是python擁有許多內(nèi)置的類和模塊,在編寫程序的時候只需要將類或者是模塊直接進行調(diào)用就可以完成想要的功能。如果python中沒有想要調(diào)用的包,用戶可以通過python指令在互聯(lián)網(wǎng)上下載安裝。用戶還可以自己編寫模塊,然后直接調(diào)用。五是python代碼有很強的平臺移植性。用戶可以在不同的操作系統(tǒng),不同的接口中對程序的代碼進行測試和運行。程序項目中的虛擬環(huán)境能夠使程序在不同設(shè)備上調(diào)試時無需重新安裝包。2.2標簽編碼本次項目對數(shù)據(jù)進行特征處理所需要用到的技術(shù)為labelencoder,也就是標簽編碼,也叫標準化標簽。該技術(shù)對數(shù)據(jù)進行處理的手段通常將數(shù)據(jù)集中單個標簽的全部離散數(shù)據(jù)進行數(shù)值化。如果數(shù)據(jù)包含8個數(shù)據(jù),則標簽編碼就將數(shù)據(jù)轉(zhuǎn)換成0到7之間的數(shù)。標準化標簽技術(shù)通常用于處理含有大小關(guān)系的數(shù)據(jù)。在數(shù)據(jù)處理中還有一種技術(shù)通常也會被用到。這種技術(shù)叫獨熱編碼,在國外的學術(shù)期刊中通常把該技術(shù)稱之為one-hotcode。對于包含多個特征的數(shù)據(jù),獨熱編碼用1來表示單個特征,用0來表示其他特征。這種獨特的編碼方式解決了含有多個特征的復雜數(shù)據(jù)處理問題,同時也為數(shù)據(jù)處理的過程提供了更多的特征。但是這種方式處理有多個屬性多個狀態(tài)的數(shù)據(jù)時會使得處理結(jié)果更加復雜。所以在一般情況下,在使用這種編碼方式的同時還需要使用pca主成分分析法來對數(shù)據(jù)的多個特征進行降維處理。在分析實際問題的過程中,一些數(shù)據(jù)間大小關(guān)系本身具有實際意義,不能直接將其簡單地數(shù)值化。再加上有一些模型對數(shù)據(jù)的大小關(guān)系比較敏感,直接將特征數(shù)值化會影響模型訓練的結(jié)果,比如邏輯回歸模型的預測結(jié)果就能被數(shù)據(jù)的特征處理過程所影響。還有其他一些對數(shù)據(jù)不太敏感的模型,比如說樹模型。所以在使用labelencoder進行標簽編碼的時候要考慮使用范圍。對于在哪種場景下使用標簽編碼,在哪種場景下使用獨熱編碼,可以做一個大致的分類。對于那些不考慮數(shù)據(jù)間的邏輯關(guān)系且數(shù)據(jù)的特征不眾多復雜,數(shù)據(jù)的標簽可以直接進行數(shù)值化的情況下可以是使用獨熱編碼。比如對性別,地球七大洲名稱等數(shù)據(jù)特征少且不存在邏輯關(guān)系的特征進行特征處理就可以使用獨熱編碼。在編碼的過程中,對男性特征標記為1,女性則標記為0,這樣便實現(xiàn)了對標簽的編碼過程。對于那些需要考慮邏輯關(guān)系的數(shù)據(jù),需要使用標簽編碼。邏輯關(guān)系包含順序邏輯關(guān)系。比如成績的排名,家庭不同成員的輩份。這些數(shù)據(jù)的特征間都一個固定的排序關(guān)系。使用標簽編碼便可以在不破壞數(shù)據(jù)原有的邏輯關(guān)系的同時對數(shù)據(jù)進行編碼。選用那種模型還可以通過所使用的模型來進行判斷。對于數(shù)值間的邏輯關(guān)系不敏感的模型,比如說樹模型,就可以使用標簽編碼。因為一些樹模型在訓練的過程中,它的最大深度被限制。如果使用獨熱編碼產(chǎn)生非常多的特征,但是樹模型又無法繼續(xù)分裂而不得不將一些多余的特征舍棄。對于數(shù)值間邏輯關(guān)系比較敏感的模型則需要使用獨熱編碼。例如邏輯回歸模型,對特征進行簡單的編碼處理會使得模型的訓練效果下降。如果要考慮特征間的邏輯關(guān)系則需要使用獨熱編碼。2.3決策樹決策樹是樹模型的一種。其樹模型是由根節(jié)點、父親節(jié)點、子節(jié)點和葉子結(jié)點組成。每個數(shù)據(jù)的樣本特征會從根節(jié)點輸入。經(jīng)過不同的分裂路徑,最終的葉圖2-3決策樹子節(jié)點便是最終的決策結(jié)果。(2-3)一個好的決策樹模型是要對數(shù)據(jù)的屬性進行最優(yōu)的劃分,盡量把相同的屬性樣本劃分到同一范圍。我們可以使用純度對劃分的準確度來進行描述,劃分的準確度越高則屬性的純度越高,劃分的準確度越低則屬性的純度越低。屬性的純度可以通過計算的方式來進行描述。計算的結(jié)果稱為信息熵?,F(xiàn)在假設(shè)數(shù)據(jù)集的樣本為D,則樣本集的信息熵為:通過計算出來的值越小,則樣本的純度越高。決策樹模型的另一個特點就是節(jié)點分裂。在節(jié)點分裂的過程中決策樹魔心會使用信息增益比來選擇如何去分裂。通常情況下,決策樹會選擇分支較多的屬性進行分裂。通過類似求平均數(shù)的過程去用信息增益率來除以節(jié)點個數(shù)得到信息增益率,這樣的分裂效果比較合理。其計算公式如下:(2-3)其中Info_Ratio

表示信息增益,

InstrinsicInfo表示分裂子節(jié)點數(shù)據(jù)量的信息增益,其計算公式為:(2-3)其中instrinsicinfo是分裂節(jié)點的熵,如果子節(jié)點個數(shù)越大,分裂節(jié)點的熵值越大,由此得到的信息增益比就會越小,就會導致決策樹模型在分裂的過程中的效果變差。通過增加決策樹分裂時的信息增益率能夠使得節(jié)點在分裂時選擇多屬性的結(jié)點進行分裂的概率變低。通過公式可以看出,如果決策樹模型的信息增益率越高,表明分裂時的效果越好。2.4XGBoost算法XGBoost模型是由在國外進行學習研究的陳天奇等人提出。XGBoost模型的相關(guān)論文一經(jīng)發(fā)表便在學術(shù)領(lǐng)域產(chǎn)生了巨大的反響?,F(xiàn)如今,XGBoost模型被廣泛地應用于機器學習競賽以及國內(nèi)的一些深度學習網(wǎng)站中。XGBoost模型在原有的提升樹模型基礎(chǔ)上作出改進,并取得了很好的效果。XGBoost的主要算法思想是:不斷地添加子樹模型,通過樹模型的節(jié)點進行特征分裂。每次生成的新的樹模型便相當于一個新的函數(shù),用于計算之前預測的差值。如果我們要預測一個樣本,就可以把這個樣本的特征輸入到子樹模型中。子樹模型就對應這一個葉子節(jié)點,葉子節(jié)點得到的數(shù)值是子樹模型的預測分數(shù),將每個葉子節(jié)點的數(shù)值相加即可得到該樣本特征的最終預測結(jié)果。XGBoost算法的目標函數(shù):(2-4)XGBoost模型的目標函數(shù)由兩部分組成。觀察值與預測值之間的殘差以及目標函數(shù)的正則化項。我們通過調(diào)試觀測值與預測值之間的殘差來優(yōu)化目標函數(shù)。通過不斷地生成決策樹來擬合之前預測地殘差,使得殘差越來越小以達到優(yōu)化目標函數(shù)的目的。之前我們介紹了如何通過計算葉子節(jié)點的分數(shù)以及如何用這寫葉子節(jié)點的分數(shù)相加得到最終XGBoost模型預測的結(jié)果。我們還需要知道增強樹模型結(jié)構(gòu)是如何生成的。決策樹的生成必須要考慮節(jié)點的分裂方式。在增強樹模型中去尋找最佳分裂點和最佳特征是該模型的分裂方式。XGBoost利用貪心算法即通過遍歷每一個特征的分裂點,并且利用XGBoost模型的目標函數(shù)值來對特征分裂點進行評價。通過判斷分裂后的函數(shù)值與葉子節(jié)點的目標函數(shù)值之間的信息增益比,如果增益比較高則進行分裂;否則不分裂。同時XGBoost還設(shè)置了閾值來限制樹分裂的最大深度。2.5網(wǎng)格搜索GridSearchCV的通俗說法是網(wǎng)格搜索法。網(wǎng)格搜索包含兩個部分,第一部分是網(wǎng)格搜索(GridSearch),第二部分是交叉驗證(CV)。網(wǎng)格搜索是指在指定的參數(shù)范圍內(nèi),按照指定的步驟對參數(shù)依次進行調(diào)整,通過對不同參數(shù)組合進行訓練和比較,找到最優(yōu)的參數(shù)組合。網(wǎng)格搜索這種調(diào)優(yōu)手段是通過遍歷范圍內(nèi)的全部的參數(shù),有點類似于貪心算法,直到最終找到模型訓練的最優(yōu)組合參數(shù)。第二部分交叉驗證,在進行交叉驗證的過程中通常是指定一個參數(shù)值,通過實驗經(jīng)驗選擇的交叉驗證參數(shù)為10的參數(shù)值?;蛘呤鞘褂媒徊骝炞C參數(shù)為n的參數(shù)值,這種交叉驗證方法稱為留一法。在進行機器學習模型訓練的時候,一些參數(shù)的調(diào)優(yōu)往往需要人工去調(diào)整,這種參數(shù)被稱之為超參。最常見的超參有人工神經(jīng)網(wǎng)絡(luò)模型中的隱藏層的個數(shù)、樹模型中樹分裂的最大深度等參數(shù)。參數(shù)的調(diào)優(yōu)出現(xiàn)問題會導致模型的預測結(jié)果出現(xiàn)問題。一般情況下有兩種調(diào)優(yōu)方式。一種是通過實驗經(jīng)驗得到的參數(shù)調(diào)優(yōu)方法;一種是通過一定的方法對各個參數(shù)進行調(diào)優(yōu)。本項目中使用到的網(wǎng)格搜索法便是這一種。網(wǎng)格搜索的缺點是只能調(diào)優(yōu)模型中的幾個參數(shù),當需要調(diào)優(yōu)的參數(shù)個數(shù)很大時,調(diào)優(yōu)的復雜度增大,調(diào)優(yōu)的時間也會變得很長。2.6r2評分標準r2評分標準即為決定系數(shù)。決定系數(shù)表示的是因變量被自變量所影響的程度。通過該決定系數(shù)模型對數(shù)據(jù)的預測準確度。如果決定系數(shù)越大,則模型的預測準確度越高;如果決定系數(shù)越小則模型的預測準確度越低。其表達式為:(2-6)公式中SSR是總體離差平方和,SST是回歸平方和。從公式中我們可以知道,r2評分標準即決定系數(shù)是總體離差平方和與回歸平方和之比。決定系數(shù)的最終取值在0到1之間,決定系數(shù)越接近1,說明模型的解釋程度越好。通過該系數(shù)我們能判斷出模型對預測結(jié)果的解釋程度。判斷模型預測的優(yōu)劣程度通常使用的是r2評分標準。2.7本章小結(jié)本章主要介紹了項目設(shè)計過程中涉及到的相關(guān)理論與技術(shù)。主要介紹了項目的運行環(huán)境,項目開發(fā)語言與使用的模型和調(diào)參技術(shù)。Pycharm開發(fā)工具具有根據(jù)已編寫的代碼對剩下的代碼進行填補,能夠自動檢查代碼中的錯誤并用紅線提示,能對項目中缺失的模塊進行報錯處理的優(yōu)點。項目使用的編程開發(fā)語言Python的優(yōu)點有相比于c語言或是java語言,python的語法更加容易讓人理解。對于沒有其它編程語言基礎(chǔ)的人來說,python語言的易讀性會讓新手更加快速學會這門編程語言。python代碼的開源性使得python的程序代碼能夠不斷地被優(yōu)化。python自帶的解釋器能夠獨立對代碼進行編譯。本章還介紹了標簽編碼技術(shù),并于數(shù)據(jù)處理中常用的獨熱編碼作為對比,從數(shù)值類型,模型選擇等方面對兩種技術(shù)進行了類比。比如說在哪種場景下使用標簽編碼,在哪種場景下使用獨熱編碼,做了一個大致的分類。對于那些不考慮數(shù)據(jù)間的邏輯關(guān)系且數(shù)據(jù)的特征不眾多復雜,數(shù)據(jù)的標簽可以直接進行數(shù)值化的情況下可以是使用獨熱編碼。對于那些需要考慮邏輯關(guān)系的數(shù)據(jù),需要使用標簽編碼。本章提及了兩種樹模型,一種是決策樹,一種是增強樹模型即XGBoost模型。決策樹模型是由根節(jié)點、父親節(jié)點、子節(jié)點和葉子結(jié)點組成。決策樹模型通過對數(shù)據(jù)的屬性進行最優(yōu)劃分,盡量把相同的屬性樣本劃分到同一范圍。通過類似求平均數(shù)的過程去用信息增益率來除以節(jié)點個數(shù)得到信息增益率,如果決策樹模型的信息增益率越高,表明分裂時的效果越好。這便是決策樹的構(gòu)建關(guān)鍵步驟。XGBoost算法的主要算法思想是通過不斷地添加子樹模型,通過樹模型的節(jié)點進行特征分裂。把每次生成的新的樹模型當成一個新的函數(shù),用來計算之前預測的差值。子樹模型對應這一個葉子節(jié)點,葉子節(jié)點得到的數(shù)值是子樹模型的預測分數(shù),將每個葉子節(jié)點的數(shù)值相加即可得到該樣本特征的最終預測結(jié)果。最后還介紹了調(diào)參方法-網(wǎng)格搜索法。網(wǎng)格搜索是指在指定的參數(shù)范圍內(nèi),按照指定的步驟對參數(shù)依次進行調(diào)整,通過對不同參數(shù)組合進行訓練和比較,找到最優(yōu)的參數(shù)組合。通過對這些技術(shù)的概括使我對python技術(shù)以及機器學習模型特別是樹模型有了更加全面的了解。3數(shù)據(jù)特征處理與可視化3.1數(shù)據(jù)來源本次項目的實驗數(shù)據(jù)來源于網(wǎng)絡(luò)博主通過爬蟲技術(shù)爬取的2020年4月份鏈家網(wǎng)站北京市各個區(qū)域的租房數(shù)據(jù)。數(shù)據(jù)的屬性包括單條數(shù)據(jù)的url,房源區(qū)域,房源維護時間,房源編號,租賃方式,房屋類型,房屋類型廳室,房屋類型面積,房屋類型精裝修,經(jīng)紀人,面積,朝向,維護,入住,樓層,電梯,車位,用水,用電,燃氣,采暖,租期,看房,付款方式,租金,押金,服務(wù)費,中介費。url是單個租房網(wǎng)頁的網(wǎng)址。通過訪問這個url可以找到房屋出租信息的頁面。房源區(qū)域是出租房屋所處在的北京市的地址,其中包含行政區(qū),所屬街道,所屬小區(qū)。房源維護時間是上一次維護該出租房屋的時間,房子的維護時間以年月日的形式顯示,其它未標注維護時間的房屋以井號形式顯示。房源編號是鏈家網(wǎng)站給每個出租房屋的編號,通過房源編號也能夠找到該出租房屋的房源信息。租賃方式是出租房屋的方式,通過觀察鏈家租房數(shù)據(jù)集中的數(shù)據(jù)可以發(fā)現(xiàn),租賃方式屬性中包含的數(shù)據(jù)都為整租的租賃方式,對后面數(shù)據(jù)的分析和特征的提取沒有幫助,所以將該屬性剔除。房屋類型是出租房屋的結(jié)構(gòu)類型,其中包括房屋的室、廳、衛(wèi)的數(shù)量和房屋面積。房屋類型廳室的數(shù)據(jù)與房屋類型的數(shù)據(jù)相同??赡苁窃谂廊〉倪^程中對頁面數(shù)據(jù)的范圍選取有問題,導致不同名稱的屬性包含的數(shù)據(jù)相同。對于重復的屬性,在開始的數(shù)據(jù)處理中采用刪除操作。房屋類型面積是出租房屋的總面積,房屋類型屬性的數(shù)據(jù)與后面面積屬性的數(shù)據(jù)相同。所以在開始的數(shù)據(jù)處理中對面積屬性進行刪除。房屋類型精裝修表示出租房屋經(jīng)過精裝修,未經(jīng)過精裝修或其它的數(shù)據(jù)用井號顯示。經(jīng)紀人是出租房屋所屬經(jīng)紀人,該屬性包含的數(shù)據(jù)較多,并且還含有缺失值。朝向是出租房屋的面朝方向,包含東、南、西、北和它們的組合朝向。維護是距離上一次維護房屋的時間,數(shù)據(jù)用今天,幾天前或者幾周前顯示。入住是可入住的時間,房屋的入住顯示三種可入住時間,分別是隨時入住,可以入住的時間以及用井號顯示未標注的入住時間。樓層表示出租房屋的所在樓層。分別用高中低樓層和樓層數(shù)顯示房屋的樓層。電梯表示出租房屋是否可以搭乘電梯。用有和無表示。車位表示出租房屋附帶車位的情況,分別用免費使用,租用車位和暫無數(shù)據(jù)顯示。用水、用電表示出租房屋的用水、用電方式,用水方式使用民水,商水,暫無數(shù)據(jù)顯示;用電方式使用民電、商電、暫無數(shù)據(jù)顯示。燃氣表示出租房屋附帶燃氣的情況,用有、無、暫無數(shù)據(jù)表示。采暖表示出租房屋的采暖方式。用集中供暖,自供暖,暫無數(shù)據(jù)顯示。租期表示出租房屋約定的租期,用幾年以內(nèi),幾個月以內(nèi),和暫無數(shù)據(jù)表示??捶勘硎境鲎夥课菁s定的看房時間,通過表示需要提前預約和一般下班后表示。付款方式表示出租房屋付款的方式,用季付和需咨詢表示。租金表示出租房屋的月付金額。該數(shù)據(jù)集爬取的租房信息包含多個屬性,但是其中一部分屬性雖然名稱不同但是數(shù)據(jù)相同,如房屋類型廳室、面積、押金、服務(wù)費、中介費等屬性,對于數(shù)據(jù)的分析過程沒有幫助,屬于重復數(shù)據(jù),所以剔除這些屬性。還有部分屬性如url、房源編號、租賃方式,這部分屬性雖然不是重復數(shù)據(jù),但是對房價數(shù)據(jù)分析無實際意義,所以同樣需要剔除。原數(shù)據(jù)集沒有行索引,所以還要給該數(shù)據(jù)集添加行索引。3.2數(shù)據(jù)特征處理3.2.1區(qū)域拆分轉(zhuǎn)化首先對區(qū)域?qū)傩赃M行特征處理,該屬性數(shù)據(jù)包含的是三個區(qū)域的字符串,所以要首先對字符做一個拆分,將一個區(qū)域字符串拆分成三個區(qū)域,分別是區(qū)域1、區(qū)域2和區(qū)域3。再分別對三個區(qū)域特征進行標簽化。圖3-2區(qū)域拆分轉(zhuǎn)化流程圖在進行字符串拆分的過程中采用的是split函數(shù)對以空格為分隔符的字符串進行分割,并利用lambd函數(shù)把值傳遞給apply函數(shù),最后通過apply函數(shù)把把值存儲到區(qū)域_1列表中。利用labelencoder函數(shù)對列表中的所有離散型數(shù)據(jù)轉(zhuǎn)換成數(shù)值,再對數(shù)值特征進行標準化處理。最后得到數(shù)值型的區(qū)域特征。區(qū)域_2和區(qū)域_3的數(shù)據(jù)存儲過程和數(shù)值化以及標準化過程也是如此。3.2.2日期提取通過datetime.datetime構(gòu)造函數(shù)對房源維護時間數(shù)據(jù)進行提取,并利用lambd函數(shù)把值傳遞給apply函數(shù),最后通過apply函數(shù)把值存儲到新構(gòu)建地列表號中。3.2.3房屋類型處理首先建立三個空列表用于存儲房屋類型中室、廳、衛(wèi)三個特征的數(shù)值。構(gòu)建一個名為fw(房屋)的函數(shù),re.findall正則表達式來獲取室、廳、衛(wèi)中三個特征的數(shù)值。通過append方法把數(shù)值存儲到三個列表中。圖3-2房屋類型處理流程圖3.2.4房屋類型精裝修處理房屋精裝修屬性只包含#和精裝修兩個標簽,所以在replace方法中使用0和1來代替#和精裝修。并最終存儲到房屋類型精裝修列表中。3.2.5維護時間提取構(gòu)建一個名為wh(維護)的函數(shù),把維護屬性中為“今天”的數(shù)據(jù)作為0返回。其他包含數(shù)值的字符串用正則表達式提取數(shù)字。把結(jié)果最終村春到一個名為維護的列表中。圖3-2維護時間提取流程圖3.2.6入住時間提取先分別構(gòu)建兩個用來存儲入住月份和入住日的列表。建立一個名為rz(入?。┑暮瘮?shù),把入住時間屬性中“隨時入住”標簽不存入列表中。再利用strptime方法分別提取入住月份和入住日。最后將值存儲到新的列表中。圖3-2入住時間流程圖3.2.7樓層特征處理先構(gòu)建一個列表,再構(gòu)建一個名為lc(樓層)的函數(shù),在函數(shù)中使用split方法對字符串進行切片,再返回樓層中高、中、低三個標簽。最后利用labelencoder進行標簽編碼。把編碼后的數(shù)值存儲到列表中。3.2.8其他特征處理在對數(shù)據(jù)集進行特征處理的過程中,有一些標簽的數(shù)據(jù)結(jié)構(gòu)比較簡單,只需要通過labelencoder方法對這些離散的數(shù)據(jù)進行數(shù)值化處理,并將最終的數(shù)據(jù)存儲到列表中便完成了特征處理工作。對于一些含有重復數(shù)據(jù)的標簽或者是與租金特征無關(guān)的一些標簽未被存儲到新的列表中,相當于對這些數(shù)據(jù)實現(xiàn)了刪除操作。3.3特征重要性可視化在對初始的數(shù)據(jù)集進行特征處理后,得到了一個新的數(shù)據(jù)集。該數(shù)據(jù)集中的數(shù)據(jù)全部經(jīng)過標簽編碼化處理,這樣能夠提升模型的訓練效果。通過1:3的比例把數(shù)據(jù)集拆分成測試集和訓練集。通過調(diào)用決策樹模型,并經(jīng)過決策樹模型對數(shù)據(jù)的訓練。通過來觀察出數(shù)據(jù)中每個特征的重要性程度。 圖3.3特征重要性從上面特征重要性一圖中可以看到,區(qū)域_1、區(qū)域_2、區(qū)域_3、房屋類型面積以及樓層等特征的重要性相比于其他特征較高,說明這幾個特征是影響租房價格的主要因素。3.4相關(guān)熱力圖通過觀察特征重要性圖,我們選擇特征重要性在0.01以上的特征。這樣得到了區(qū)域_1、區(qū)域_2、區(qū)域_3、房屋類型面積、經(jīng)紀人、朝向、樓層、號等特征。 圖3.4相關(guān)性熱力圖在圖中可以看到,與租金相關(guān)性較大的特征為區(qū)域_1、區(qū)域_2、區(qū)域_3。表示區(qū)域特征對于租金價格的變化影響較大。3.5本章小結(jié) 本章介紹了數(shù)據(jù)的來源、數(shù)據(jù)結(jié)構(gòu)和對數(shù)據(jù)的一些特征處理方法以及對特征的可視化過程。實驗數(shù)據(jù)來源于網(wǎng)絡(luò)博主通過爬蟲技術(shù)爬取的2020年4月份鏈家網(wǎng)站北京市各個區(qū)域的租房數(shù)據(jù)。數(shù)據(jù)的屬性包括單條數(shù)據(jù)的url,房源區(qū)域,房源維護時間,房源編號,租賃方式等。介紹了數(shù)據(jù)集中數(shù)據(jù)的結(jié)構(gòu)。比如租賃方式是出租房屋的方式,通過觀察鏈家租房數(shù)據(jù)集中的數(shù)據(jù)可以發(fā)現(xiàn),租賃方式屬性中包含的數(shù)據(jù)都為整租的租賃方式,對后面數(shù)據(jù)的分析和特征的提取沒有幫助,所以將該屬性剔除。房屋類型是出租房屋的結(jié)構(gòu)類型,其中包括房屋的室、廳、衛(wèi)的數(shù)量和房屋面積。房屋類型廳室的數(shù)據(jù)與房屋類型的數(shù)據(jù)相同??赡苁窃谂廊〉倪^程中對頁面數(shù)據(jù)的范圍選取有問題,導致不同名稱的屬性包含的數(shù)據(jù)相同。對于重復的屬性,在開始的數(shù)據(jù)處理中采用刪除操作。該數(shù)據(jù)集爬取的租房信息包含多個屬性,但是其中一部分屬性雖然名稱不同但是數(shù)據(jù)相同,如房屋類型廳室、面積、押金、服務(wù)費、中介費等屬性,對于數(shù)據(jù)的分析過程沒有幫助,屬于重復數(shù)據(jù),所以剔除這些屬性。還有部分屬性如url、房源編號、租賃方式,這部分屬性雖然不是重復數(shù)據(jù),但是對房價數(shù)據(jù)分析無實際意義,所以同樣需要剔除。原數(shù)據(jù)集沒有行索引,所以還要給該數(shù)據(jù)集添加行索引。接下來是對數(shù)據(jù)特征提取操作。代碼的展示通過流程圖加文字介紹的形式進行演示。以區(qū)域劃分特征提取為例。在進行字符串拆分的過程中采用的是split函數(shù)對以空格為分隔符的字符串進行分割,并利用lambd函數(shù)把值傳遞給apply函數(shù),最后通過apply函數(shù)把把值存儲到區(qū)域_1列表中。利用labelencoder函數(shù)對列表中的所有離散型數(shù)據(jù)轉(zhuǎn)換成數(shù)值,再對數(shù)值特征進行標準化處理。最后得到數(shù)值型的區(qū)域特征。最后通過化特征重要性圖來表示提取特征對租金特征的重要程度。相關(guān)性熱力圖表示的是各個特征之間的相關(guān)程度,相關(guān)系數(shù)越高,表示特征的關(guān)聯(lián)程度越高。4基于XGBoost模型的租房價格預測4.1XGBoost模型通過引入XGBRegressor函數(shù)來完成XGBoost模型的建立。根據(jù)實驗的經(jīng)驗總結(jié),我設(shè)定了一些模型初始的參數(shù)。如:1.learning_rate=[0.01,0.05,0.1]2.n_estimators=[300,500,700,900]3.max_depth=[3,6,10,15]這些值是通過前人的經(jīng)驗總結(jié)給出的,這些值以字典的格式儲存在param_grid中。4.2網(wǎng)格搜索調(diào)優(yōu)我采用網(wǎng)格搜索的方法對模型中的參數(shù)進行調(diào)優(yōu)。使用這種調(diào)優(yōu)方式是因為這是目前最為廣泛的對XGBoost模型進行參數(shù)調(diào)優(yōu)的方式。網(wǎng)格搜索調(diào)優(yōu)法的大致思路是通過給定的參數(shù)范圍和評分標準。網(wǎng)格搜索對模型在給定參數(shù)范圍的所有排列組合進行評分,選出最優(yōu)的參數(shù)組合。評分的方式是通過網(wǎng)格搜索中包含的交叉驗證方式實現(xiàn)的,交叉驗證的參數(shù)通常回取一個特定的值。本次項目所選用的評分標準是r2評分標準,交叉驗證參數(shù)是10。使用網(wǎng)格搜索方法按順序依次對learning_rate(學習率)、n_estimators(優(yōu)化樹個數(shù))、max_depth(樹最大深度)的參數(shù)進行調(diào)節(jié)。最終得到的最優(yōu)參數(shù)組合為:1.learning_rate=0.052.n_estimators=5003.max_depth=6r2評估指標的評估分數(shù)為0.8545,這表明經(jīng)過調(diào)優(yōu)后的該模型預測效果較好。4.3房租價格對比圖這是房租價格對比圖,橫軸表示的是樣本數(shù)量,縱軸表示的是租金價格。藍色折線表示的是真實租金,黃色折線表示的預測租金。通過觀察兩段折線的擬合程度,可以看到兩段折線的擬合程度較高,說明模型預測租金的結(jié)果比較準確。 圖4-3預測對比圖4.4本章小結(jié)本章介紹了XGBoost模型的參數(shù)選擇,利用網(wǎng)格搜索法對模型參數(shù)進行調(diào)優(yōu)。根據(jù)實驗的經(jīng)驗總結(jié),我設(shè)定了一些模型初始的參數(shù)。如學習率設(shè)置在0.01到0.1之間;優(yōu)化樹個數(shù)設(shè)置在300到900之間;樹的最大深度設(shè)置在3到15之間。通過網(wǎng)格搜索的方法找到最優(yōu)的參數(shù)組合模型。使用這種調(diào)優(yōu)方式是因為這是目前最為廣泛的對XGBoost模型進行參數(shù)調(diào)優(yōu)的方式。網(wǎng)格搜索調(diào)優(yōu)法的大致思路是通過給定的參數(shù)范圍和評分標準。網(wǎng)格搜索對模型在給定參數(shù)范圍的所有排列組合進行評分,選出最優(yōu)的參數(shù)組合。評分的方式是通過網(wǎng)格搜索中包含的交叉驗證方式實現(xiàn)的,交叉驗證的參數(shù)為10。最終得到的最優(yōu)參數(shù)組合為學習率0.05;優(yōu)化樹個數(shù)500;樹最大深度6;最終r2評估指標的評估分數(shù)為0.8545,這表明經(jīng)過調(diào)優(yōu)后的該模型預測效果較好。最終畫出一個房租價格對比圖,用橫軸表示的是樣本數(shù)量,縱軸表示的是租金價格。藍色折線表示的是真實租金,黃色折線表示的預測租金。通過觀察兩段折線

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論