数据竞赛:第四届工业大数据竞赛-虚拟测量
原文首發于我的公眾號
背景
注塑成型作為做常見的一種塑料制品加工工藝,它所加工的產品在生活中隨處可見,例如電子產品、汽車配件、玩具以及其他眾多消費品。由于成型系統較為復雜并且對環境較為敏感,注塑成型加工過程中的不穩定因素很容易導致產品不良的發生,造成經濟損失。所以我們建立注塑成型大數據,來感知這些不可見的干擾因素,然后通過分析建模解決甚至避免現場痛點問題。比如成型過程的異常檢測預警及不良品的識別,有助于減少甚至避免不合格品的產生,對于管控產品質量、降低生產成本有重要的作用。同時,針對異常產生現場人員因經驗差異導致調機無法規范化的問題,如果能夠根據成型過程數據和異常事件進行建模分析,改進調機策略,將會節省大量的時間成本和經濟成本。
任務
要求選手針對成型工藝品質異常中尺寸超規問題進行虛擬量測。根據訓練集所提供所有模次產品的過程數據和相對應的實際量測值(標簽)進行虛擬量測模型建模,然后對測試集中的產品進行尺寸預測,即虛擬量測。
數據
本次競賽的數據集包含以下多種來源:
傳感器高頻數據:該數據來自于模溫機及模具傳感器采集的數據,文件夾內每一個模次對應一個csv文件,單個模次時長為40~43s,采樣頻率根據階段有20Hz和50Hz兩種,含有24個傳感器采集的數據;
成型機狀態數據(data_spc):該數據來自成型機機臺,均為表征成型過程中的一些狀態數據,每一行對應一個模次,數據維度為86維;
機臺工藝設定參數(data_set):文件夾中含有注塑成型的81種工藝設定參數;
產品測量尺寸(size):文件夾內含有每個模次產品的3維尺寸;
分析
首先根據任務與數據簡單查看數據。查看所有特征列,列名,類型,空值統計,基本describe信息。
查看目標列的信息。首先是趨勢:
目標列的分布:
查看各個特征與目標的關系,以及各個特征訓練集與測試集分布的不同。
建模
在數據探索性分析基礎上,就是建模過程。首先,可以把metrics函數寫出來。然后是特征導入,模型、驗證、提交各個部分。baseline寫完之后,首先保證驗證部分是合理的,判斷依據是本地測試結果與線上提交結果的同步,允許微小不同,但應保持同步。
對于常規的表格問題,首選嘗試自然是lightgbm,除了性能好之外,還可以方便的輸出特征重要性,進行特征選型。我的基本模型是這樣的,lightgbm和交叉驗證融合到一起。
def model():predictions = np.zeros(len(X_test))for i, (train_index, val_index) in enumerate(skf.split(X_train,y_train)):print("fold {}".format(i))X_tr, X_val = X_train.iloc[train_index], X_train.iloc[val_index]y_tr, y_val = y_train.iloc[train_index], y_train.iloc[val_index]lgb_train = lgb.Dataset(X_tr, y_tr)lgb_val = lgb.Dataset(X_val, y_val)clf = lgb.train(lgb_params, lgb_train, num_round=2000, valid_sets = [lgb_train, lgb_val],verbose_eval=50, early_stopping_rounds = 50)print('best iteration = ', clf.best_iteration)predictions += clf.predict(X_test, num_iteration=clf.best_iteration) / skf.n_splitsreturn predictions迭代與后處理
從數據、特征、模型去考慮細致深入的改進。錯誤分析,嘗試尋找tricks。
也值得紀念一下自己第一次認真參加的數據比賽。決賽的翻車自然就是另一個故事了。
以上做的細致一點,初賽可以達到1e5以下。雖然離第一結果很遠,但可以維持在top20以內。但是決賽前三天,風云突變,這個成績只能排50以外了。
彎路
我的大多嘗試都越來越差,即使本地測試提高了,排行榜也可能差遠了。
其實沒什么彎路,只是嘗試了太多不起作用的調整,目標后來甚至是能堅持完賽,別放棄就好。若干年后的一個秋天,當我回想起我第一次參加數據比賽的經歷,因為好好了解了一下注塑機的歷史,大概只記得注塑機的發明動力源自以前的臺球都是昂貴的象牙做的。
聯系方式
公眾號搜索:YueTan
總結
以上是生活随笔為你收集整理的数据竞赛:第四届工业大数据竞赛-虚拟测量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot 配置多个请求服务代
- 下一篇: 浅谈String str = ““ 和