国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

房?jī)r(jià)預(yù)測(cè)機(jī)器學(xué)習(xí)之集成學(xué)習(xí)

2018-02-28 02:31:28勵(lì)嘉豪曾丹
電子技術(shù)與軟件工程 2018年20期

勵(lì)嘉豪 曾丹

摘要

房?jī)r(jià)預(yù)測(cè)是大數(shù)據(jù)處理的經(jīng)典命題。本文基于kaggle平臺(tái)的房?jī)r(jià)預(yù)測(cè)數(shù)據(jù)集,實(shí)現(xiàn)了特征分析、特征清洗、特征工程、特征選擇、模型選擇和集成學(xué)習(xí)。其中特征工程中對(duì)多達(dá)79個(gè)特征的處理以及使用Stacking進(jìn)行集成學(xué)習(xí)是本文的亮點(diǎn)除了stacking學(xué)習(xí)法,本文還嘗試了boosting學(xué)習(xí)法的XGB和LGBM以及Bagging學(xué)習(xí)法,最終在kaggle.com的最好成績(jī)?yōu)?.11274,在世界 4000多只隊(duì)中排名TOP4%,這證明本文模型有效得預(yù)測(cè)了房?jī)r(jià)同時(shí)避免了過(guò)擬合。

【關(guān)鍵詞】Housing data;Feature RMSE;Stacking;Engineering;boosting

1 引言

Kaggle平臺(tái)的房?jī)r(jià)預(yù)測(cè)是大數(shù)據(jù)處理的經(jīng)典熱門(mén)比賽。kaggle將使用Root-Mean-Squared-Error(RMSE)來(lái)評(píng)價(jià)預(yù)測(cè)房?jī)r(jià)的對(duì)數(shù)和實(shí)測(cè)房?jī)r(jià)的對(duì)數(shù),使用對(duì)數(shù)意味著你對(duì)高價(jià)和低價(jià)房屋價(jià)格預(yù)測(cè)的準(zhǔn)確度對(duì)最終結(jié)果的影響將會(huì)同等。

關(guān)于RMLSE(使用對(duì)數(shù)的均方根誤差):

Cli代表了觀(guān)測(cè)值,Pi代表了預(yù)測(cè)值,IIS代表的是記錄個(gè)數(shù)。

在現(xiàn)有結(jié)構(gòu)化數(shù)據(jù)比賽中,隨機(jī)森林RF和梯度提升回歸樹(shù)GBDT是比較熱門(mén)的,也是kaggle所推薦的算法。論文【1】通過(guò)MSE來(lái)評(píng)估模型,并選取了XGB,Lasso和Ridge的按權(quán)組合,最終得分0.11390;論文【2】通過(guò)Lasso選擇特征并使用隨機(jī)森林回歸預(yù)測(cè),由于其并未提供最終得分故對(duì)其結(jié)果不予比較;論文【3】使用65%LASSO和35%GBR的模型組合,最佳得分為0.11260。本文中的Bagging學(xué)習(xí)法正是由隨機(jī)森林所集成,而大殺器XGB則是GBDT的強(qiáng)化版,它采用二階導(dǎo)數(shù)計(jì)算,增加正則項(xiàng)防止過(guò)擬合。

同時(shí)由于數(shù)據(jù)量不大,所以本文不考慮采用深度學(xué)習(xí)算法而是選擇了更適合處理小數(shù)據(jù)量的淺層學(xué)習(xí),因此對(duì)于特征的預(yù)處理就尤為關(guān)鍵,特別是在初始特征高達(dá)79個(gè)的情況下,如何有效地進(jìn)行特征工程值得深思與推敲。

在數(shù)據(jù)分析中,本文利用python的matplollib和seabom包等使數(shù)據(jù)可視化,統(tǒng)計(jì)數(shù)據(jù)總量,分析數(shù)據(jù)是否正態(tài)分布,繪制相關(guān)圖并考慮哪些特征對(duì)最終結(jié)果又較大的影響。

數(shù)據(jù)清洗中對(duì)79個(gè)特征的缺失值進(jìn)行處理,清洗異常點(diǎn),并調(diào)整訓(xùn)練集的價(jià)格使之符合正態(tài)分布。

在特征工程中,本文將一些數(shù)值型變量轉(zhuǎn)換為分類(lèi)變量,對(duì)一些序列型數(shù)據(jù)進(jìn)行編碼,增加新的特征,對(duì)傾斜較嚴(yán)重的數(shù)值型數(shù)據(jù)通過(guò)BOX COX進(jìn)行矯正,最后對(duì)分類(lèi)變量進(jìn)行durarn、展開(kāi)。

在模型選擇方面,本文通過(guò)交叉驗(yàn)證選擇了LASSO,RIDGE,ELA,SVR,KR-R等模型,并分別調(diào)參。

在模型融合學(xué)習(xí)法中,使用Stacking構(gòu)建兩層學(xué)習(xí)器,用第一層訓(xùn)練的結(jié)果去預(yù)測(cè)第二層,并將stacking結(jié)果與其他學(xué)習(xí)法XGB,Bagging,以及LGBM按權(quán)相加,最終輸出提交的預(yù)測(cè)樣本。

2 特征分析

使用Python的工具包,可以使數(shù)據(jù)之間的聯(lián)系變得更加立體,這對(duì)于數(shù)據(jù)工程師來(lái)說(shuō)是不可或缺的技能。Kaggle提供了三個(gè)CSV文件,分別是訓(xùn)練集train.esv,測(cè)試集test.csv,以及提交樣本submission.csv。訓(xùn)練集和測(cè)試集由79個(gè)特征構(gòu)成,其中36個(gè)是數(shù)值型特征,43個(gè)是類(lèi)別特征,訓(xùn)練集有1460個(gè)樣本,而測(cè)試集中有1459個(gè)樣本。

2.1 查看銷(xiāo)售量與月份的關(guān)系

如圖1所示。

2.2 研究SalePrice和GrLivArea的關(guān)系

如圖2所示。

除此之外,本文繪制了特征效果圖以及挖掘最相關(guān)的五個(gè)特征,研究了SalePrice和overallqual的關(guān)系,以及替相關(guān)度較高的特征做散點(diǎn)圖,在此不——列舉。

3 特征清洗

3.1 異常值清洗

異常值對(duì)于最終結(jié)果的影響不容小覷,所以我們第一步選擇對(duì)異常值進(jìn)行清洗。通過(guò)前面特征分析時(shí)的經(jīng)驗(yàn),我們敏銳地發(fā)現(xiàn)在圖6中,存在前者大于4000而后者卻低于30000的情況,于是我們將這些異常值清除。

3.2 調(diào)整價(jià)格

由于價(jià)格分布不符合正態(tài)分布,所以對(duì)價(jià)格進(jìn)行10Glp變換使之符合正態(tài)分布。

3.3 處理缺失值

通過(guò)定義的查缺函數(shù),我們可以得到缺失值情況:

如表1,可以看到有將近34個(gè)特征有缺失值,其中POOLQC的缺失量高達(dá)2900多.缺失值處理如下:

PoolQC:

除三個(gè)特例(有面積無(wú)質(zhì)量)用平均值填充外,其余填None。

IotFrontage:

使用與Neighborhood相關(guān)的多項(xiàng)式擬合。

GaragcYrBIt:

離散化后填None。

MSZonging:

按出現(xiàn)最多的組合填。

其余缺失值分別填0,None或眾數(shù)。

4 特征工程

本文的特征工程是一大亮點(diǎn),基于79個(gè)不同的原始特征,本文分別對(duì)其進(jìn)行變換,使之盡可能提升回歸任務(wù)的準(zhǔn)確性。

4.1 標(biāo)簽化

首先將一些類(lèi)別型特征轉(zhuǎn)換為數(shù)值型特征標(biāo)簽化。

4.2 創(chuàng)造新屬性

(1)基于某一項(xiàng)原始特征的特殊取值構(gòu)建的新特征,以right_season為例,將mosold特征中為5,6,7月的樣本season定義為1,其余定義為0,那么right season就代表了這個(gè)樣本是否是在房市旺季出售(從對(duì)mosold特征分析的圖表6可以知道5,6,7月份銷(xiāo)售量最大)。

(2)對(duì)訓(xùn)練樣本的SalePrice做分類(lèi),分類(lèi)結(jié)果存在新特征Price_Category中,低于15000的為0,15000到25000之間為1,大于25000的為2。同時(shí)我們選用了支持向量機(jī)SVM對(duì)測(cè)試樣本進(jìn)行超平面劃分,對(duì)測(cè)試樣本的Price_Category進(jìn)行分類(lèi),這個(gè)預(yù)測(cè)區(qū)間對(duì)將來(lái)的回歸預(yù)測(cè)有重要影響。

4.3 離散化

增加完新變量以后,對(duì)涉及年份的特征進(jìn)行離散化。這樣做除了增強(qiáng)了模型的非線(xiàn)性能力外,還從一個(gè)很大權(quán)值管理一個(gè)特征,拆分成了許多小的權(quán)值管理這個(gè)特征多個(gè)表示,降低了特征值擾動(dòng)對(duì)模型為穩(wěn)定性影響,也降低了異常數(shù)據(jù)對(duì)模型的影響,進(jìn)而使得模型具有更好的魯棒性。

最后,對(duì)數(shù)值型數(shù)據(jù)去四分之三位標(biāo)準(zhǔn)化處理。對(duì)一部分?jǐn)?shù)據(jù)使用BOX COX進(jìn)行轉(zhuǎn)換使之符合正態(tài)分布。

5 特征選擇

如圖3,對(duì)現(xiàn)有數(shù)據(jù)做特征選擇,選出重要的特征,進(jìn)行特征組合,生成新增有用特征,同時(shí)不重要的特征需要考慮剔除。本文選用LASSO進(jìn)行特征選擇:

選擇最重要的特征例如'LotArea','TotalBsmtSF','GrLivArea','GarageArea','KitchenQual'和其他特征相結(jié)合,通過(guò)定義自動(dòng)生成函數(shù),更快生成大量的新特征。同時(shí)添加了一些重要的冗余項(xiàng),組合生成三個(gè)新特征House,Area,Rooms:分布表示了房屋總面積,帶上車(chē)庫(kù)總面積和房間總個(gè)數(shù)。不重要的特征例如TotConfig Cornef等則被剔除。

6 模型選擇

在回歸模型的選擇上,本文初始考慮了14個(gè)模型,為了鑒別他們的好壞,定義了基于RMSE的交叉驗(yàn)證評(píng)估指標(biāo)。所謂交叉驗(yàn)證法,就是將訓(xùn)練集再劃分,分為K個(gè)大小相似的互斥子集,每次訓(xùn)練K-1個(gè)子集,剩下的那個(gè)子集作為驗(yàn)證集,最后將K個(gè)驗(yàn)證結(jié)果平均。交叉驗(yàn)證主要用于評(píng)價(jià)模型的泛化能力,從而進(jìn)行模型選擇。本文采用十折交叉驗(yàn)證,即取K=10。經(jīng)初步驗(yàn)證,各模型(參數(shù)默認(rèn)狀態(tài)下)得分如表2。

總體看來(lái),樹(shù)模型普遍不如線(xiàn)性模型,分析下來(lái)覺(jué)得是特征稀疏化帶來(lái)的影響。

于是基于初步驗(yàn)證,本文選擇了Ridge,Lasso,Gbr,Svr,Ela,Bay,Ker,Xgb,LGB這9個(gè)模型。接下來(lái)是對(duì)單個(gè)模型的調(diào)參,通過(guò)定義的調(diào)參函數(shù),利用GridSearchCV(網(wǎng)格搜索)對(duì)模型進(jìn)行參數(shù)調(diào)整。調(diào)參以后各模型得分如表3.

7 集成學(xué)習(xí)

本文集成學(xué)習(xí)策略方面分為Stacking和其他。

7.1 其他學(xué)習(xí)方法

Bagging是并行式集成學(xué)習(xí)方法最著名的代表,采樣T個(gè)包含m個(gè)訓(xùn)練樣本的采樣集,對(duì)此訓(xùn)練出T個(gè)基學(xué)習(xí)器,最后對(duì)這些基學(xué)習(xí)器采用簡(jiǎn)單平均法得到最終結(jié)果。

如表4,本文使用Ridge作為基學(xué)習(xí)器,對(duì)bagging得分進(jìn)行評(píng)價(jià):

可以看到相比于單個(gè)Ridge,Bagging提高了泛化性能。

Xgboost(極度梯度提升)由CAR]回歸樹(shù)集成,是屬于boosting類(lèi)的集成學(xué)習(xí)。與GBDT相比,XGB對(duì)代價(jià)函數(shù)進(jìn)行了二階泰勒展開(kāi),同時(shí)用到了一階與二階導(dǎo)數(shù)。另一方面,xgboost在損失函數(shù)里加入的正則項(xiàng),正則項(xiàng)里包含了樹(shù)的葉子節(jié)點(diǎn)個(gè)數(shù)、每個(gè)葉子節(jié)點(diǎn)上輸出score的L2模的平方和。從Bias-variance tradeoff角度來(lái)講,正則項(xiàng)降低了模型的vanance,使學(xué)習(xí)出來(lái)的模型更加簡(jiǎn)單,防止過(guò)擬合。

lightGBM也是Boosting集成學(xué)習(xí)的一種,包含兩個(gè)關(guān)鍵點(diǎn):light即輕量級(jí),GBM梯度提升機(jī)。與XGB相對(duì)比,在過(guò)濾數(shù)據(jù)樣例尋找分割值時(shí),LightGBM使用的是全新的技術(shù):基于梯度的單邊采樣(GOSS)(XGBoost則通過(guò)預(yù)分類(lèi)算法和直方圖算法來(lái)確定最優(yōu)分割)。GOSS保留所有的大梯度樣例,并在小梯度樣例上采取隨機(jī)抽樣。為了使用相同的數(shù)據(jù)分布,在計(jì)算信息增益時(shí),GOSS在小梯度數(shù)據(jù)樣例上引入一個(gè)常數(shù)因子。因此,GOSS在減少數(shù)據(jù)樣例數(shù)量與保持已學(xué)習(xí)決策樹(shù)的準(zhǔn)確度之間取得了很好的平衡。

7.5 Stacking學(xué)習(xí)法

對(duì)于stacking學(xué)習(xí)法的個(gè)體學(xué)習(xí)器需要考慮的標(biāo)準(zhǔn)是好而不同,基于這個(gè)準(zhǔn)則本文選擇并分析了以下模型

7.2.1 Lasso&Ridge

兩個(gè)模型都引入了正則化項(xiàng),其中Lasso引入的是L1范數(shù)而Ridge引入的是L2范數(shù)。這兩個(gè)范數(shù)都有助于降低過(guò)擬合的風(fēng)險(xiǎn),同時(shí)L1范數(shù)可以帶來(lái)額外的好處,稀疏解,即只有少數(shù)重要特征權(quán)重非0,相當(dāng)于做了特征選擇。

7.2.2 ELA

彈性網(wǎng)絡(luò)在嶺回歸和Lasso回歸中進(jìn)行了折中,通過(guò)混合比(mix ratio)r進(jìn)行控制:r=0:彈性網(wǎng)絡(luò)變?yōu)閹X回歸r=1:彈性網(wǎng)絡(luò)便誤Lasso回歸。

7.2.3 KNN

一種常用的監(jiān)督學(xué)習(xí)方法,對(duì)于給定的測(cè)試樣本,基于某種距離度量出訓(xùn)練集中與之最近的K個(gè)樣本,對(duì)這K個(gè)樣本的目標(biāo)值進(jìn)行平均得到預(yù)測(cè)值。作為懶惰學(xué)習(xí)的著名代表,此類(lèi)學(xué)習(xí)技術(shù)在訓(xùn)練階段僅僅把樣本保存起來(lái),訓(xùn)練時(shí)間開(kāi)銷(xiāo)為0,直到收到測(cè)試樣本才開(kāi)始處理。

7.2.4 BAY

貝葉斯學(xué)習(xí)過(guò)程可簡(jiǎn)述在前一個(gè)訓(xùn)練集合的后驗(yàn)概率上,乘以新的測(cè)試樣本點(diǎn)的似然估計(jì),得到新的集合的后驗(yàn)概率。其優(yōu)點(diǎn)有:

(1)貝葉斯回歸對(duì)數(shù)據(jù)有自適應(yīng)能力,可以重復(fù)的利用實(shí)驗(yàn)數(shù)據(jù),并防止過(guò)擬合。

(2)貝葉斯回歸可以在估計(jì)過(guò)程中引入正則項(xiàng)。

7.2.5 SVR

支持向量回歸與傳統(tǒng)回歸不同之處在于傳統(tǒng)回歸模型通常直接基于模型輸出和真實(shí)輸出之間的差別來(lái)計(jì)算損失,除非兩者完全相同,誤差才為0,而SVR允許一個(gè)最大為E的偏差,即模型輸出和真實(shí)輸出誤差大于E時(shí)才計(jì)算損失,間隔帶內(nèi)的訓(xùn)練樣本被認(rèn)為是預(yù)測(cè)正確的。

簡(jiǎn)單的stacking將各個(gè)模型平均相加,考慮到各個(gè)個(gè)體學(xué)習(xí)器性能差別不大,我們不用賦予他們不同的權(quán)值,簡(jiǎn)單的平均處理可能更好。平均以后評(píng)分如表5所示。

考慮兩層stacking,對(duì)這個(gè)過(guò)程稍微做些詳細(xì)的解釋。以十折交叉驗(yàn)證為例,假設(shè)第一層的模型1是Ridge,我們訓(xùn)練集有1400行,測(cè)試集有1400行(大致)。首先將整個(gè)訓(xùn)練樣本分為10份,每次用其中的9份1260行,剩下的一份就是140行,每次拿基于那九份1260行訓(xùn)練出的Ridge模型對(duì)剩下的140行進(jìn)行預(yù)測(cè),第一次會(huì)得到140行1列的a1,同時(shí),還要拿這個(gè)模型對(duì)原來(lái)1400行的測(cè)試集進(jìn)行預(yù)測(cè),得到1400行1列的b1,因?yàn)槭鞘郏允我院髸?huì)得到a1到a10和b1到b10.之后,把10個(gè)140行的ax(x取值1到10)拼接起來(lái)就變成了1400行1列的A1。而對(duì)于b1-b10,取平均,將1400行10列變成1400行1列的B1。以上是對(duì)于第一個(gè)模型的操作,如果第一層一共有4個(gè)模型,那么就會(huì)得到A1,A2,A3,A4和B1,B2,B3,B4.將A1-A4合并為1400行4列的train data,將B1-B4合并為1400行4列的test data,讓第二層的模型以train data為輸入,test data為輸出進(jìn)行訓(xùn)練,便是一個(gè)兩層stacking集成學(xué)習(xí)的流程。集成學(xué)習(xí)以后的評(píng)分如表6。

可以看到兩層stacking集成學(xué)習(xí)結(jié)果比簡(jiǎn)單平均效果要好。

8 結(jié)果

最后,用訓(xùn)練完成的模型對(duì)測(cè)試集進(jìn)行訓(xùn)練,通過(guò)定義的函數(shù)計(jì)算測(cè)試結(jié)果與訓(xùn)練樣本結(jié)果的對(duì)數(shù)均方差。幾個(gè)模型對(duì)數(shù)均方差如表7。

最終提交的結(jié)果選取Stacking,XGB,LGBM和Bagging按一定權(quán)值相加,以Stacking為主,得分最高為0.11274最后排名全球4000支隊(duì)中TOP4%。

9 總結(jié)與展望

本文展示了一個(gè)結(jié)構(gòu)化數(shù)據(jù)比賽的所有流程。包括對(duì)特征的清洗,缺失值的填充,擴(kuò)展新特征,選擇特征,選擇模型,調(diào)模型參數(shù),以及模型融合。

缺失值填充的時(shí)候需要注意樣本的數(shù)據(jù)分布,不能盲目填充0或者None,擴(kuò)展的特征必須是有價(jià)值的,不然會(huì)造成過(guò)多冗余,選擇特征的時(shí)候不能隨意刪減增加,防止丟失有用特征。最重要的一點(diǎn)是模型的選擇,基于數(shù)據(jù)樣本不同分布選擇不同模型,不能印象主義,要實(shí)際驗(yàn)證以后選擇合適的模型。尤其是Stacking的第一層基學(xué)習(xí)器,要遵守好而不同的原則,避免質(zhì)量層次不齊或者類(lèi)型重復(fù)的現(xiàn)象。

在將來(lái),對(duì)新特征進(jìn)行更多創(chuàng)造性的構(gòu)造將成為首要任務(wù),對(duì)數(shù)據(jù)樣本做進(jìn)一步的挖掘。同時(shí),特征選擇的時(shí)候做到有用的全保留,沒(méi)用的盡量刪減,減少學(xué)習(xí)任務(wù)難度,模型的選擇范圍也將進(jìn)一步縮小,做到真正的好而不同。

參考文獻(xiàn)

[1]ChenchenFan Zechen Cui XiaofengZhong 'House Prices Prediction withMachine Learning AlgorithmsICMLC2018:6-10.

[2]Bharatendra Rai'Feature Selectionand Predictive Modeling ofHousing Data Using Random Forest'International Journal of Industrialand Systems Engineering Vol:11,No:4,2017.

[3]Sifei Lu,Zengxiang Li,ZhengQin,Xulei Yang,Rick Siow MongGoh'A Hybrid Regression Techniquefor House Prices Prediction'IEEE International Conference onIndustrial Engineer ing&EngineeringManagement,2018:319-323.

[4]https://www.kaggle.com/serigne/stacked-regressions-top-4-on-leaderboard

[5]周志華‘機(jī)器學(xué)習(xí).

沂水县| 田林县| 台安县| 嵊州市| 和顺县| 大英县| 孟州市| 三原县| 贵南县| 友谊县| 普安县| 迁安市| 沭阳县| 乐清市| 高唐县| 礼泉县| 开远市| 河东区| 天津市| 大厂| 崇礼县| 礼泉县| 绥阳县| 安塞县| 绥江县| 荆门市| 满城县| 綦江县| 德安县| 宝坻区| 同仁县| 通山县| 紫云| 凤冈县| 抚远县| 类乌齐县| 孙吴县| 鹤壁市| 沂源县| 乾安县| 和硕县|