參賽情況 | |
---|---|
參賽時間 | 2020-4-1 |
結果提交時間 | 2020-4-6 |
最終結果(均方誤差MSE) | 0.1153 |
競賽排名 | 前3% |
1. 項目概述
- 項目背景:影響火力發電的核心因素是鍋爐所產生的蒸汽量。鍋爐產生的蒸汽量受到燃料供給量、供水量、鍋爐的床溫、鍋爐的壓力等諸多因素的影響。
- 項目要求:利用鍋爐傳感器采集到的鍋爐工況數據,對鍋爐所產生的蒸汽量進行預測。
- 項目數據:數據為鍋爐傳感器采集的關於鍋爐工況的脫敏數據。數據分成訓練數據(train.txt)和測試數據(test.txt),其中字段”V0”-“V37”,這38個字段是特征變量,”target”字段是目標變量。
- 評估指標:本項目結果評估指標為均方誤差(Mean Squared Error, MSE)。
2. 項目思路
該項目的基本思路如下圖所示。項目所有流程均基於Python實現。
3. 問題定義
該項目要求利用給定的數據(共包括38個特征,數值型)來對蒸汽量進行預測,因此考慮采用回歸方法進行預測。同時,為了提高預測的准確率(盡量降低MSE),考慮基於集成學習思想的多個回歸模型集成方法。
4. 數據觀察
- 利用Python第三方庫pandas_profiling對訓練集生成描述性統計報告。發現該數據均為數值型數據,無缺失值。
- 合並訓練集與測試集,對數據在每個特征上的分布進行可視化,觀察訓練集與測試集在每個特征上的分布情況。通過觀察發現:V5、V9、V11、V17、V22、V28特征上訓練集與測試集分布差異較大,如下圖所示。
- 通過數據分布可視化,除了發現存在訓練集與測試集分布不均的情況外,還發現數據在許多特征上存在偏態性。
5. 數據預處理
- 異常值處理:給定數據經過脫敏,無法了解每個特征的具體含義,所以異常值的界定較為模糊,所以在項目中沒有進行異常值處理。經過多次實驗發現該項目異常值處理與否對最終結果影響不大。
- 缺失值處理:經過數據觀察,該脫敏數據數據完整,不存在缺失值。
- 數據偏態處理:通過觀察每個特征的數據分布,對右偏數據采用對數化處理;對左偏數據采用指數化處理。
6. 特征工程
- 通過比較訓練集與測試集在每個特征上的分布,刪除訓練集與測試集分布差異較大的特征:V5、V9、V11、V17、V22、V28。
- 對特征進行方差分析,判斷特征所包含的信息量。指定一個方差閾值,刪除低於該閾值的特征。
- 單變量選擇:對於該回歸問題,基於方差分析中的f_regression,根據相關性由大到小對特征進行排序,選擇前18個特征。
7. 多模型訓練
對於該回歸問題,本項目選擇的模型有:
模型名稱 |
---|
以linear為核函數的支持向量回歸機(SVR) |
線性回歸(Linear Regression)模型 |
Lasso回歸模型 |
ElasticNet回歸模型 |
嶺回歸模型1(以polynominal為核函數) |
嶺回歸模型2(以linear為核函數) |
XGBregreressor模型 |
LGBMRegressor模型 |
深度學習KreasRegressor模型 |
通過K折交叉驗證計算上述模型的MSE的均值和標准差。
8. 集成學習
對訓練好的多模型進行簡單的集成融合,生成最終的模型Average_model
9. 預測
使用Average_model對測試集進行蒸汽量預測,得到最終結果:
最終均方誤差 |
---|
0.1153 |