圓州率
🌐

Feature Image

多階段連續製程預測

作品集, 資料科學, 機器學習, 監督式學習
一個多階段連續製程的工廠產線資料集,本實驗透過原料數據與機台參數預測產品輸出規格。
   最後更新:

引言

封面來自 Library of Congress. (1937, March 16). Exterior – Ford Assembly Plant East Side, showing Oil Well #6 in the foreground, northeast of the assembly plant 是福特汽車公司的工廠組裝工廠。

資料來自於 Multi-stage continuous-flow manufacturing process,是一個真實的產線資料,由於資料的匿名性,我們無從得知這是什麼樣的產線,也無從得知當中變數的實際意義。但根據其介紹得知,首先由三台機器平行製造零件,接著經過兩階段的組合零件。目標為預測組合的成品結果,因此我們推測實際目的可能是組合成本較高,若預期成品不佳,則可以提早捨棄此樣本,能省下部分成本。

機台示意圖

生產機 1 ┐
生產機 2 ┼— 組合機 1 — 組合機 2 
生產機 3 ┘

資料介紹

原始資料是一個 14,088 x 116 的表格,其中約有 14,000 個樣本與 116 個特徵,特徵包含:

  • 時間戳
  • 濕度
  • 溫度
  • 生產機 1 至 3 號的 36 個狀態,包含馬達轉速、材料狀態等
  • 組合機 1 的 3 個狀態
  • 組合機 1 的預期測量數值 15 個
  • 組合機 1 的實際測量數值 15 個
  • 組合機 2 的 14 個狀態
  • 組合機 2 的預期測量數值 15 個
  • 組合機 2 的實際測量數值 15 個

其中「預期測量數值」是工廠期待產品的規格,「實際測量數值」是真實生產的產品規格。根據任務描述,首要目標是預測「組合機 1 的實際測量數值 15 個」,為簡化問題先將目標設定為預測「組合機 1 的實際測量數值 1 個」。

經調整後的資料為 14,032 x 42,利用以下資訊:

  • 濕度
  • 溫度
  • 生產機 1 至 3 號的 36 個狀態,包含馬達轉速、材料狀態等
  • 組合機 1 的 3 個狀態

預測「組合機 1 的實際測量數值 1 個 Stage1.Output.Measurement0.U.Actual」。數據展示如下表,部分欄位因命名過長因此重新命名。

HumidityTemperatureMachine1.RawMaterialFeederParameterStage1.Output.Measurement0.U.Actual
17.2423.531241.2612.72
17.2423.531246.0912.34
17.2423.531246.2912.34

探索性資料分析 EDA

為簡化描述,稱預測目標 Stage1.Output.Measurement0.U.Actualyy,其餘特徵依序稱為 x1x_1x41x_{41}

預測目標

首先值得注意的是 yy 的時間序列分布,大約有 1% 的異常值。

yy 的時間序列圖。

大部分的 yy 落在 12.9±0.512.9 \pm 0.5 的區間,占比超過 99%。

正常 yy ([12.4,13.4]\in [12.4, 13.4])分布圖。

yy數量比例
13.4\geq 13.4250.0018
12.413.412.4 \sim 13.413,9750.9920
12.4\leq 12.4880.0062

相關性

異常相關性

每筆「實際測量數值」都有其對應的「預期測量數值」,其中約有 <1%< 1\% 的預期測量數值為 0,其餘 99%99\% 資料具有相同預期測量數值。在 yy 出現過小異常值時,大多都落在預期測量數值設定為 0 時。

另一方面,考慮過大異常發生時的情況,令 tag\text{tag} 為一個指示是否為過大異常的標籤,並觀察 tag\text{tag} 與其他變數的相關係數。相關係數圖顯示出 tag 與其他變數的相關係數接近 0。

tag={1if y>13.40if y[12.4,13.4] \begin{align*} \text{tag} = \begin{cases} 1 & \text{if } y > 13.4 \\ 0 & \text{if } y \in [12.4, 13.4] \\ \end{cases} \end{align*}

tag (最右側) 與變數相關係數,tag 與其他變數的相關係數接近 0。

變數相關性

觀察各變數與 yy 的相關係數,考慮全部資料的相關係數,yy 與各變數的相關係數全都接近 0;然而考慮具有正常 yy 資料的相關係數,就呈現出明顯的相關性。值得注意的是,具有正常 yy 的資料約占 99%99\% 以上,也就是僅移除 <1%< 1\% 的資料就能使資料具有明顯相關性。

全資料相關係數,yy 與其他變數的相關係數接近 0。

具有正常 yy 資料的相關係數,yy 與其他變數出現明顯相關性。

探索性小結

  • yy 存在 <1%< 1\% 的過大與過小異常值。
    • 過小異常值與「預期測量數值」的設定有關。
    • 過大異常值在相關係數與初步的建模中都難以分辨。
  • 全體資料中, yy 與其他變數的相關係數皆接近 0。
  • 具有正常 yy 資料中,yy 與其他變數呈現明顯相關性。

小結,暫且移除異常 yy

建立模型

以 5-fold cv 分割資料,線性回歸做為基準模型,與最佳模型 XGBoosts,平均表現如下表

ModelRMSERsquared
Linear0.0760.589
XGBoost0.0440.863

XGBoosts 殘差圖

模型解釋性 SHAP

SHapley Additive exPlanations (SHAP) 是一種解釋模型的方法,啟發自博弈論 (對局論) 的關鍵人物 Lloyd Stowell Shapley 的 Shapley Value。原始的問題描述的是合作賽局理論,是將合作的總收益公平的分配給所有人的方法。

Shapley Value

有 3 個用戶合作產生收益,例如 1 號與 2 號玩家合作收益 (value) 寫成 v(x1,x2)=50v (x_1, x_2) = 50,其中收益如下

PlayerValue
x1x_110
x2x_230
x3x_35
x1,x2x_1, x_250
x1,x3x_1, x_335
x2,x3x_2, x_340
x1,x2,x3x_1, x_2, x_3100

則 Shaply value 計算方式為「考慮新玩家加入後所增加收益的平均」,例如原本只有 x2x_2 貢獻為 v(x2)v (x_2),加入 x1x_1 的合作貢獻為 v(x2,x1)v (x_2, x_1),則 x1x_1 造成的增加收益為 v(x2,x1)v(x2)v (x_2, x_1) - v (x_2)

Orderx1x_1 ContributionValue
x1,x2,x3{\color{red} x_1}, x_2, x_3v(x1)v (x_1)10
x1,x3,x2{\color{red} x_1}, x_3, x_2v(x1)v (x_1)10
x2,x1,x3x_2, {\color{red} x_1}, x_3v(x2,x1)v(x2)v (x_2, x_1) - v (x_2)20
x2,x3,x1x_2, x_3, {\color{red} x_1}v(x2,x3,x1)v(x2,x3)v (x_2, x_3, x_1) - v (x_2, x_3)65
x3,x1,x2x_3, {\color{red} x_1}, x_2v(x3,x1)v(x3)v (x_3, x_1) - v (x_3)35
x3,x2,x1x_3, x_2, {\color{red} x_1}v(x3,x2,x1)v(x3,x2)v (x_3, x_2, x_1) - v (x_3, x_2)65

x1x_1 的貢獻 (Shaply value) 則為所有上述情況的平均

ϕ1=10+10+20+65+35+65634.17 \begin{align*} \phi_1 = \frac{10 + 10 + 20 + 65 + 35 + 65}{6} \approx 34.17 \end{align*}

ϕj\phi_j 為第 jj 位玩家的 Shaply value,考慮 pp 個玩家的情境,則

ϕj=S{x1,x2,,xp}\{xj}S!(pS1)!p!(v(S{xj})v(S)) \begin{align*} \phi_j = \sum_{S \subseteq \{ \contia{x}{p} \} \backslash \{ x_j \} } \frac{|S| ! (p - |S| - 1) !}{p!} (v (S \cup \{ x_j \}) - v (S)) \end{align*}

可以理解為選擇玩家 xjx_j 後,考慮出現在 jj 以前的玩家們組成 SS,其中 SS 的選擇數有 S!|S|! 個,jj 以後的玩家為則有 (pS1)!(p - |S| - 1)!,例如前述的例子

SSOrderx1x_1 ContributionValue
{}\{\}x1,x2,x3{\color{red} x_1}, x_2, x_3v(x1)v (x_1)10
x1,x3,x2{\color{red} x_1}, x_3, x_2
{x2}\{x_2\}x2,x1,x3x_2, {\color{red} x_1}, x_3v(x2,x1)v(x2)v (x_2, x_1) - v (x_2)20
{x3}\{x_3\}x3,x1,x2x_3, {\color{red} x_1}, x_2v(x3,x1)v(x3)v (x_3, x_1) - v (x_3)35
{x2,x3}\{x_2, x_3\}x2,x3,x1x_2, x_3, {\color{red} x_1}v(x2,x3,x1)v(x2,x3)v (x_2, x_3, x_1) - v (x_2, x_3)65
x3,x2,x1x_3, x_2, {\color{red} x_1}

則計算後可得,ϕ1=34.17\phi_1 = 34.17ϕ2=41.66\phi_2 = 41.66ϕ3=24.17\phi_3 = 24.17

而 Shaply 的方法之所以合理,因其滿足:

  1. 效率性:所有人的貢獻和等於總價值。

    j=1pϕj=v(x1,x2,,xp) \begin{align*} \sum_{j = 1}^{p} \phi_j = v (\contia{x}{p}) \end{align*}
  2. 對稱性:若兩個人在所有情況下對合作的影響都相同,則貢獻應相同。對任意 S{x1,x2,,xp}\{xi,xj}S \subseteq \{ \contia{x}{p} \} \backslash \{ x_i, x_j \}

    v(S{xi})=v(S{xj})ϕi=ϕj \begin{align*} v (S \cup \{ x_i \}) = v (S \cup \{ x_j \}) \Rightarrow \phi_i = \phi_j \end{align*}
  3. 零貢獻為零:若某人的加入完全不影響合作價值,則其貢獻為 0。對任意 S{x1,x2,,xp}\{xj}S \subseteq \{ \contia{x}{p} \} \backslash \{ x_j \}

    v(S{xj})=v(S)ϕj=0 \begin{align*} v (S \cup \{ x_j \}) = v (S) \Rightarrow \phi_j = 0 \end{align*}

SHapley Additive exPlanations (SHAP)

帶著 Shaply value 的觀念至機器學習裡面,考慮特徵 x1,x2,,xp\contia{x}{p} 為玩家們,合作貢獻出 y^\hat y,而我們想回答的問題是:

模型預測值是如何由各個特徵貢獻而來的?

首先,ϕ0\phi_0 是預測平均值,而對某筆預測來說,而每個特徵 xjx_j 所貢獻為 ϕj\phi_j,因此可表達為

y^(x)=ϕ0+j=1pϕ(x)j \begin{align*} \hat y (x) = \phi_0 + \sum_{j = 1}^{p} \phi (x)_j \end{align*}

Force Plot 考慮單一預測是如何從各特徵的貢獻,知道預測高於或低於平均的理由,例如第一筆預測值低於平均 0.27,主要理由是

  • FirstStage.CombinerOperation.Temperature1.U.Actual 導致預測 + 0.15
  • Machine3.MaterialTemperature.U.Actual 導致預測 - 0.25

XGBoosts SHAP Force Plot

Summary Plot 若考慮全體樣本,每個點表示一個樣本,顏色表示數值大小。觀察特徵在不同大小所對應的 SHAP value,例如第一個特徵 Machine3.MaterialTemperature.U.Actual,在顏色偏黃時,SHAP < 0;也就是該數值較小時,模型傾向輸出降低 y^\hat y

XGBoosts SHAP Summary Plot

Dependence Plot 考慮單變在不同數值時對模型貢獻的差異,例如在 xx 較小時,SHAP < 0,模型傾向降低 y^\hat y;在 xx 較大時,SHAP 0\approx 0,對模型貢獻小。

XGBoosts SHAP Dependence Plot

SHAP 考慮不同的特徵對模型的影響,但 Shaply value 的計算涉及大量排列組合,且預測時沒辦法做到"不放"某個特徵,因此更多是由區間採樣或某樣本與平均距離的差異下手,例如 Shapley Sampling 或 Kernel SHAP,甚至還有針對樹模型,如 XGBoost 的 SHAP 優化算法,方法多樣這邊就不贅述。

最後 SHAP 除了計算成本高外,使用上須注意的點主要是

  • 不能做為因果推論,SHAP 僅解釋模型決策的「邊際貢獻 (去除一個特徵的貢獻)」,這在資料具有強共線性時更容易影響邊際貢獻。建議同時考慮相關性矩陣。
  • 別過度解釋單一樣本,SHAP 僅考慮當下的輸入,對於局部解釋並不穩定。建議考慮一群樣本的 SHAP 值分布。
  • 注意基準值偏誤,ϕ0\phi_0 為模型預測的基準線,但模型若不合理,SHAP 也會錯得很合理。建議參考 Residual Plot 的表現。

討論

給工廠的建議,可以怎麼調整 yy?在變數名稱裡面若有 C 則表示可控變數 (controllable),U 則為不可控制變數 (uncontrollable),因此準確的問題為

在可控變數中,如何調整 yy

大多變數都帶有複雜的相關性,然而 Machine1.Zone2Temperature.C.Actual 與其他變數幾乎無關的同時,對 y^\hat y 卻帶有影響,在數值較大時,y^\hat y 會越小;但在對上 yy 時的點散圖無呈現出明顯關係,我們認為理由是,對 yy 的影響較小,容易被視為是雜訊,但實際能提供微調空間。

SHAP Machine1.Zone2Temperature.C.Actual Dependence Plot

Machine1.Zone2Temperature.C.Actual vs y Scatter Plot

總結

  1. 存在極度異常值。部分 xxyy 在數秒鐘內掉落至異常值後又回到原本狀態,幾乎無法辨別出模式。建議在測量或資料清洗時多加留意。
  2. XGBoost 提供了一個較為穩定的預測模型,預測誤差落控制在 3% 以內,約 86% 的測試 R2R^2 保證了模型學習了大多數資料特徵。
  3. SHAP 能在複雜模型裡提供解釋性。能得知單筆預測的理由,同時也能觀察群體在不同特徵時的表現。
  4. xxyy 相關係數接近 0,並不表示無法對預測提供貢獻。例如 Machine1.Zone2Temperature.C.Actual 就是與 yy 接近 0 相關係數,同時點散圖也幾乎無法觀察出相關性,然而卻能對預測提供貢獻。

參考資料

  1. Lundberg, S. M., & Lee, S. I. (2017). A unified approach to interpreting model predictions. Advances in neural information processing systems, 30.
  2. Si, Yong, et al. (2025). Machine Learning-Based Prediction of Mortality in Geriatric Traumatic Brain Injury Patients.