sofasofa——震后修復(fù)預(yù)測

解決的問題是給每個災(zāi)后建筑提出不同的修復(fù)指導(dǎo)建議(無需處理、小規(guī)模修復(fù)、大規(guī)模修繕、重建)

數(shù)據(jù)下載地址

比賽提供了lightGBM和樸素貝葉斯兩種公開的標(biāo)桿算法。本文是基于公開的lightGBM標(biāo)桿算法的基礎(chǔ)上進(jìn)行優(yōu)化二次優(yōu)化,目前排名40。

從標(biāo)桿算法準(zhǔn)度0.78856到0.79571

lightGBM的介紹


本文的優(yōu)化步驟分為三步:

1、數(shù)據(jù)處理

2、特征選擇

3、調(diào)參


(一)、數(shù)據(jù)處理

1.1數(shù)據(jù)結(jié)構(gòu)

首先,讓我先來了解一下數(shù)據(jù)結(jié)構(gòu)。


優(yōu)化第一步是要對數(shù)據(jù)進(jìn)行一定處理,方便我們可以選擇對應(yīng)的數(shù)據(jù)或者特征值進(jìn)行預(yù)測

【代碼】


info()函數(shù)說明:

功能:用于給出樣本數(shù)據(jù)的相關(guān)信息概覽 :行數(shù),列數(shù),列索引,列非空值個數(shù),列類型,內(nèi)存占用

使用格式:data.info()

【分析】運行效果如下:有652936個觀測值,沒有缺失值


運行結(jié)構(gòu)

接下來檢查是否存在重復(fù)值

【代碼】


?輸出結(jié)構(gòu)是0,不存在重復(fù)值。


基于標(biāo)桿算法的思想,我們這里引入兩個特征,floor_decline和height_decline,用地震前的高度(樓層)減去地震后的高度(樓層)所生成的新的變量。

定義

1.2異常值處理

地震前后的樓層高度應(yīng)該是有變化的,或者是不變的,不可能存在地震后的樓層高度比地震前的樓層高度還要高,在此處表達(dá)為height_before>=height_after和floor_before>=floor_after,因此我對不滿足條件的數(shù)據(jù)進(jìn)行篩選并刪除掉。

【代碼】


運行結(jié)果如下


刪除異常值結(jié)果

我們可以看到刪掉了3360條數(shù)據(jù)。

我們也可以用均值或者眾數(shù)中位數(shù)等數(shù)據(jù)來替代異常值,我此處選的的刪掉異常值。大家也可以采取不同的方法進(jìn)行嘗試。data.loc()可以來進(jìn)行處理

1.3離群值處理

【介紹】

在建模預(yù)測之前,我們先對離群值進(jìn)行處理。根據(jù)正態(tài)分布的3sigma原則,我們將在3sigma之外的數(shù)據(jù)進(jìn)行刪除。3sigma原理可以簡單描述為:若數(shù)據(jù)服從正態(tài)分布,則異常值被定義為一組結(jié)果值中與平均值的偏差超過三倍標(biāo)準(zhǔn)差的值。即在正態(tài)分布的假設(shè)下,距離平均值三倍(為標(biāo)準(zhǔn)差)之外的值出現(xiàn)的概率很小,因此可認(rèn)為是異常值。樣本數(shù)目足夠大認(rèn)為近似服從正態(tài)分布。

【代碼】


通過代碼我們刪掉了異常值,我們查看一下刪除前后的數(shù)值對比。

運行結(jié)果

1.4分類特征處理

由最開始的數(shù)據(jù)結(jié)構(gòu)我們可以看出存在很多分類特征,比如ground_floor_type、land_condition等,我們可以采用獨熱編碼的方式來對分類特征進(jìn)行處理。(此處基于標(biāo)桿算法的處理思路)

獨熱編碼

【代碼】

以position_attached為例,獨熱編碼結(jié)果如下


獨熱編碼結(jié)果



(二)、特征選擇

2.1整體相關(guān)性分析

根據(jù)以上的數(shù)據(jù)處理之后,我們發(fā)現(xiàn)仍然存在很多的特征,那么這些特征是否都對我們的預(yù)測起到一定的作用呢?答案肯定不是。那么我們可以通過繪制熱力圖的方式來查看各個特征之間的相關(guān)性,刪除相關(guān)性差的特征來進(jìn)行更好地預(yù)測。

【代碼】


運行結(jié)果如下

熱力圖

【分析】

1、我們可以看出district_id、floor_before等變量與y的相關(guān)性較弱,那我們將這些特征刪除進(jìn)行最后的特征選擇。(此處選擇刪掉相關(guān)性小于0.2的特征)。

2、此處我們可以看出標(biāo)桿算法所引入的height_decline和floor_decline的相關(guān)與預(yù)測結(jié)果相關(guān)性較高。

3、我們可以看出floor_after與height_after具有強(qiáng)烈的相關(guān)性。這和我們的常識相符,這兩個預(yù)測變量存在強(qiáng)共線性,應(yīng)該考慮刪去一個。

【代碼】


特征選擇

基于以上的選擇,我們最終選擇了age、floor_decline、height_decline、height_after四個特征進(jìn)行預(yù)測


(三)調(diào)參

首先我們來了解lightGBM的參數(shù)調(diào)整有哪些


lightgbm的參數(shù)

3.1用gridSearchCV調(diào)參

關(guān)于調(diào)參的細(xì)節(jié)可以查看鏈接:關(guān)于lightGBM和gridsearchcv的參數(shù)調(diào)整

首先我們要初始化我們的模型,即給lightGBM的參數(shù)傳值,基于gridsearchcv來調(diào)參

【代碼】


調(diào)參

我們處理的多分類問題,故此處選擇的評價標(biāo)準(zhǔn)采用"accuracy",其他的相關(guān)參數(shù)在鏈接可以查看,此處不贅述。


多分類任務(wù)的評價標(biāo)準(zhǔn)

初始化完我們的模型之后,我們每次選擇兩個或者一個參數(shù)來進(jìn)行調(diào)參。雖然不能保證達(dá)到全局最優(yōu),但是至少滿足局部最優(yōu)。這對我們的選取的調(diào)參組合就有了一定要求,盡量選擇相互獨立的參數(shù)為一個組來進(jìn)行調(diào)參。


3.2調(diào)參結(jié)果

【介紹】lightGBM根本上來講是決策樹。可以固定樹的不同深度,對其他參數(shù)調(diào)整,返回準(zhǔn)確度最好的組合,作為最優(yōu)參數(shù)組合。調(diào)參的大體思路大體分為7步針對12個參數(shù)進(jìn)行調(diào)參。具體參考鏈接。以下是我的調(diào)參表:


調(diào)參表



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容