天天看點

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

本期由 阿裡雲MVP &優秀 ACE(阿裡雲開發者社群)

郭翔雲 為大家分享機器學習之從資料預處理到特征建構談天池工業AI競賽模型訓練。通過天池工業AI競賽示例,示範從資料觀察到特征建構,再到模型訓練驗證評估的一個機器學習的完整流程。

視訊:

https://yq.aliyun.com/live/597
【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練
分享分為三部分:

  • 基于天池工業AI大賽-智能制造品質預測的賽題進行示例分析;

    1.1賽題與資料了解

1.2資料預處理

1.3特征建構

1.4模型與參數選擇

  • 個人經驗總結;
  • 個人推薦。

一、賽題分析

1.1賽題與資料了解

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

賽題示例分析選取的是阿裡雲天池大資料競賽平台上的天池工業AI大賽-智能制造品質預測賽題。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

首先我們來看賽題分析。

本次比賽提供了生産線上不同工序的參數資料。通過這些參數特征設計模型,預測與之對應的特性數值。

賽題的難點在于生産過程複雜,參數衆多,存在空值和異常值。

賽題的價值在于通過建立算法模型,希望能夠提前發現目前工序中所存在的問題,避免問題流入到後道工序,減少生産資源浪費,優化産品良率。

評測名額選取的是MSE,MSE的值越小代表預測結果越好。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

在我們拿到資料的時候,首先要對資料進行觀察,通過觀察,可以發現資料包含以下特點:

特點1,資料包含ID列、工具列、參數列,訓練集包含目标列。

特點2,參數列和目标列經過脫敏處理,無法得知其實體意義。

比如我們來看下面的資料示例,我們會發現參數列的名稱為210X1、210X2等,是經過脫敏處理的,也就是說我們無法從業務角度進行考慮。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

特點3,通過觀察時間,發現參數列并不是從左到右依次産生的。

比如我們來看下面的資料示例,我們會發現下面的5列參數列的發生順序依次是5、4、1、3、2.

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

特點4,部分參數列存在缺失值、單一值和重複列情況。我們可以看下面的資料示例。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

特點5,一道工序内,機台的種類直接影響了多個參數列的資料分布。

我們來看下面的資料示例。我們可以發現後面的參數列明顯受到前面TOOL列的影響,比如參數210X1,在工具M下數值為101左右,在工具N下數值為89左右,而在工具O下數值為98左右。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

特點6,部分參數列中的缺失值被機器自動以0或其他異常值進行填充,上述現象存在于同工序下的多個工具中。我們可以看下面的資料示例。

1.2 資料與處理

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

基于上面總結的6個資料特點,我進行了以下資料預處理操作。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

1、将資料集依照工序列分割為不同的工序單元。

大部分工序列都是以Tool開頭的,但是也有幾列比較特殊的,比如Chamer ID、OPERATION ID和Chamber列。我們來看一下該如何處理。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

通過觀察,可以發現Chamber ID後面的資料,同時受到TOOL1和Chamber ID的影響,是以把TOOL1和Chamber ID合并作為工具列。

而對于OPERATION ID和Chamber列,後面的資料僅受此列資料的影響,是以把它們看做獨立的工序列。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

2、對資料列的初步清理,先後删除空值占全列40%以上的列、方差為0的列和重複列。

3、對日期列的處理。對于8位、14位、16位的日期資料,因為資料是2016年以後的資料,是以把日期列轉為2016年1月1日以來所經曆的秒數。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

5、對各列的0值和NA值,填充工具内内非零非NA元素的平均值。

1.3 特征建構

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

在工業生産中,每一項參數都有标準值,我們該如何評價實際參數的好壞呢?

以冰箱這種典型工業産品為例,我們當然是希望冰箱的溫度控制越精确越好,能耗越低越好。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

基于以上思考,我們可以總結出兩種評價參數好壞的方式。1、與标準值的內插補點,也就是所謂的能耗越低越好。2、相對标準值內插補點的絕對量,也就是溫度控制越精确越好。

在這種思路下,除了原值以外,我又建立了兩類額外特征備選。

将組内平均值看做标準值。特征1,與标準值的差,看作偏內插補點err。特征2,與标準值的差的絕對值,看作偏離量errabs。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

進一步地,兩列互動能否作為特征呢?比如時間列,單一的時間戳是無意義的,那麼兩列時間戳之差就有可能表示某道工序所耗費的時間,可以作為一列新特征。

同樣的,既然差我們可以做,那麼和差積商我們是不是都可以嘗試。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

是以,對于雙因子,我建構了加減乘除反除5個備選特征,将這些因子當做新的獨立的因子,像單因子一樣考慮原值、偏內插補點和偏離量。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

我們來看特征建構的流程。

1、計算單因子和雙因子互動列并納入備選特征。

對于單因子X,建立原始值X,X與組内平均值的偏內插補點X_err,X與組内平均值的偏差絕對量X_errabs。

對于雙因子X和Y。計算X和Y的和差積商反除,同時建立上述五列值的樣本值與組内平均值的偏內插補點err,平均值的偏差絕對量errabs。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

那麼單雙因子備選特征具體是怎麼計算的呢?

我們首先看單因子備選特征。以210X1為例,假設資料僅包含如下12行,對于工具M,我們計算210X1的平均值為101.6375,原始值與平均值的差為210X1_err,差的絕對值為210X1_errabs。工具N、O也是一樣的計算方式。我們将210X1、210X1_err和210X1_errabs作為備選特征。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

對于雙因子備選特征。我們以210X1乘210X2為例,假設資料僅包含以下12行。對于工具M,先分别計算210X1乘210X2,對乘法結果計算均值mean。用乘法結果與均值的差作為err,差的絕對值作為errabs。同理,工具N、O也是一樣的計算方式。将210X1210X2、210X1210X2_err、210X1*210X2_errabs作為備選特征。對于加減乘除反除都是同樣的計算方式。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

我們來約定一下單雙因子的描述方式。單因子記作X、Xerr、Xerrabs,雙因子記作f(X,Y)、f (X,Y)_ err 、f (X,Y)_ erabs。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

接下來我們對建構産出的特征進行篩選。這裡選用的方法是計算備選特征與特征值Value的pearson相關性。

記某特征X與特征值Value的pearson相關性(絕對值)為Pearson(X,Value)。

對于單因子,我們要求Pearson相關性大于0.2。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

對于雙因子,我們要求雙因子的pearson大于0.24并且雙因子的pearson分别比各自的單因子pearson大于0.05。這裡主要是為了強調因子互動帶來的額外相關性。

對于單雙因子的門檻值,是基于目前資料的實驗結果給出的,可以進行适當調整。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

随後填充inf和标準化,共計産出單因子425列,雙因子4756列。

單雙因子相關系數最高的十維如下所示。

這裡需要注意的一點是,下表列出的僅為相關系數較高的列,并不是模型中的重要特征列。

1.4 模型與參數選擇

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

在初賽及複賽階段,在testA公布前,采用的是Train五折交叉驗證。在testA公布後,采用的是Train訓練的模型結果預測testA。評價名額選用的是mse和R方。

選用這樣的模型評價方式主要是為了客觀考察模型在新資料集的泛化能力。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

在初賽階段,标準化嘗試過全體标準化、組内标準化、将訓練集測試集分開和和合并标準化等。最後選用的方案是基于目前的特征建構結果,最後标準化。

降維嘗試過PCA、SelectKBest等,一直效果不佳,複賽後因送出機會有限,就不再嘗試降維。

模型嘗試過SVR、Lasso、XGBoost等,最後根據模型效果,主要選用Lasso、XGBoost和GBDT。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

複賽階段基于多版本資料和多模型的比較,選擇最優的資料和模型。

資料包括單雙因子帶err、純單因子、跨工序單雙因子無err等,模型包括Lasso和XGBoost。最後根據資料和模型結果,選用的是單雙因子帶err,XGBoost。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

最終資料及XGBoost模型參數如下。

利用train資料訓練testA的結果,mse為0.02013,R方為0.63564.

将train和testA拼接,利用全部單、雙因子資料,最終預測testB。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

預測結果中的30維重要因子排序如上所示。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

那麼整套資料處理的全流程如下。我們拿到資料的時候首先要對資料進行觀察,基于資料了解進行資料預處理,包括分工序、删無效字段和NA、0的補值。然後建構單雙因子特征,計算特征相關性,利用相關性門檻值進行特征篩選,補inf後進行Z-Score标準化。模型嘗試Lasso、SVR等,最後選取Lasso、XGBoost和GBDT。根據模型評估結果選用XGBoost。最後進行參數優化并産出最終預測結果。

二、總結與讨論

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

在進行資料分析模組化的過程中,我的個人經驗包含以下幾點:

觀察資料,了解業務。在解決問題的全過程中,要保持對資料的重視,甚至可以嘗試“人工”智能。

注重特征。在機器學習領域有一句名言,資料和特征決定了機器學習的上限,模型隻是去逼近它。我們可以嘗試基于業務邏輯和自身的問題了解,積極構造新特征。

模型選擇。當特征很複雜時,可以考慮使用簡單模型。當特征較為簡單時,可以嘗試考慮複雜模型。

最後一定要注重模型的泛化能力和可解釋性。

三、 個人推薦

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

在機器學習領域,經常有一些小夥伴自稱自己是“煉丹師”,模型調參和改bug就像煉丹一樣,靠的是經驗和運氣。那麼對于經驗,可以從書籍、課程中獲得理論指導,論文中擷取原理推導,在公開資料集、項目和競賽中進行實踐,同時通過一些部落格或者技術沙龍學習他人的經驗。

【ACE成長記第4期】美女程式員分享:機器學習之資料預處理到特征構模組化型訓練

書籍推薦:李航老師的《統計學習方法》、周志華老師的《機器學習》,還有《集體智慧程式設計》、《機器學習實戰》以及《深度學習》

論文推薦:arXiv.org

競賽推薦:kaggle、阿裡雲天池大資料競賽平台。

以上就是本次的技術分享内容,如有不足,請多多指教,謝謝Thanks(・ω・)ノ

繼續閱讀