1 of 57

台北科技大學,經管系,陳擎文�

特徵工程

Feature Engineering

Feature Construction

2 of 57

什麼時候要做

特徵工程?

3 of 57

什麼時候要做特徵工程?

  • (1).如果先把原始數據用機器學習model去訓練,再評估evaluate模型的『準確率不高(例如0.69)
    • 如何才能提高model的預測準確率呢?
    • 可以『從處理特徵欄位(x,y)入手』
    • 處理『特徵欄位』
      • X特徵值:把數據分群
      • Y標籤的特徵值:轉換成『常態分佈』
    • 可以明顯提高model預測的準確率

4 of 57

登入舊版Azure ML Studio平台,新增一個experiment

5 of 57

登入舊版Azure ML Studio

  • (1).舊版登入網址,不用登入『Azure雲端』
    • https://studio.azureml.net/
  • (2).新增一個experiment
    • 命名: AML-07-特徵工程

6 of 57

修改專案名稱: AML-07-特徵工程

7 of 57

讀入汽車價格資料集dataset

Automobile price data (Raw)

8 of 57

汽車價格資料集:Automobile price data (Raw)

  • dataset🡪 Automobile price data (Raw)

9 of 57

visualize�注意:這個欄位,雖然是整數1,2,3,但它代表的意義的各種『代表符號類別』�

10 of 57

有缺值的欄位:normalized-losses

11 of 57

有缺值的欄位

  • 有缺值的欄位
    • normalized-losses (numerical feature)
    • num-of-doors(string type文字)
    • engine-type(string type文字)
    • Bore(numerical feature數值)
    • stroke(numerical feature數值)
    • Price(numerical feature)

12 of 57

疑問1:為什麼symbolling

(象徵)欄位要修改成類別格式

疑問2:若不改,會影響到計算的結果嗎?

13 of 57

為什麼symbolling (象徵)欄位要修改成類別格式

  • 1.回答:會,會影響到計算結果
    • 例如:若要計算『關聯性分析』,數值格式,類別格式的結果,會不同
  • 2.真正原因: symbolling (象徵)欄位
    • 這個欄位是『單標籤,多元類別
    • 每個答案(1,2,3,4),彼此沒有順序性
    • 所以要轉成『OneHotEncoder』獨熱編碼
    • (1,2,3,4) 轉換後變成:
    • 【1000】,【0100】,【0010】,【0001】
    • 若沒有轉換,結果當然不同

14 of 57

加入1個

Edit MetaDatas元件來修改欄位型態

15 of 57

加入1個Edit MetaDatas元件來修改欄位型態

  • edit 🡪 Edit MetaDatas 🡪拖曵1個

16 of 57

把『上面』欄位,都改成類別型態category

17 of 57

修改以下11個欄位,改成catoegory型態

  • Select columns:
    • 1.symboling
    • 3.Make,
    • 4.Fuel-type,
    • 5.aspiration,
    • 6.num-of-doors,
    • 7.body-style,
    • 8.drive-wheels,
    • 9.engine-location,
    • 15.engine-type,
    • 16.num-of-cylinders,
    • 18.fuel-system,

18 of 57

修改以下11個欄位,改成catoegory型態

19 of 57

修改以下11個欄位,改成�make catoegory型態

20 of 57

結論:遇到類別屬性的欄位,都要修改

  • 1.只要是類別欄位:
    • 不管欄位格式是『文字』,或『數值』
  • 2.建議
    • 都改成『獨熱編碼OneHotEncoder』
  • 3.方法使用『 Edit MetaDatas元件』
    • 改成 『make catoegory』型態

21 of 57

結果

22 of 57

Run, Visualize:�1. symboling已經修改成Categorical Feature�

23 of 57

CleanMissingData填補缺值

24 of 57

填補缺值的原則,方法1

  • 原則1:
    • 有缺值欄位,就全部刪除列

25 of 57

第1種的特徵工程

Feature Engineering

Feature Construction

26 of 57

使用Group Categorical Value 元件

新增新的Feature

27 of 57

使用Group Categorical Value 元件新增新的Feature

  • 觀念:
    • 從舊有欄位,萃取出新的特徵參數,可以幫助提高模型的預測準確率
    • 例如:取自然對數ln(x1)
    • 例如:取cos(x1)
    • 例如:x1^2+x1*x2

28 of 57

氣缸數原本的文字類別有7種

  • two
  • Three
  • Four
  • Five
  • Six
  • Eight
  • Twelve

29 of 57

氣缸數原本的文字類別有

30 of 57

使用Group Categorical Value 元件新增新的Feature

  • 把氣缸數的範圍,縮小成3種
    • X<4,,4<x<6,x>6

31 of 57

使用Group Categorical Value 元件新增新的Feature

  • 把氣缸數的範圍,縮小成3種
    • X<4,,4<x<6,x>6

32 of 57

使用Group Categorical Value 元件新增新的Feature

  • 設定參數

33 of 57

結果:Run,Visualize

  • 新增一個特徵欄位:number of cylinders(2)

34 of 57

第2種的特徵工程

Feature Engineering

Feature Construction

35 of 57

使用Apply Math Operation元件

取代成的Feature

36 of 57

使用Apply Math Operation元件取代成的Feature

  • 標籤(price)的分佈圖,不是常態分佈,不利於AI模型的學習與預測,想辦法把它轉成常態分佈

37 of 57

如何把標籤(price) 的分佈,轉成常態分佈

  • 方法:使用『 Apply Math Operation 』元件,加入數學函數,轉換成常態分佈
    • 例如:把price加上『自然對數ln(x)』,變常態分佈

38 of 57

使用Apply Math Operation元件取代成的Feature

  • Ln:自然對數
  • Inplace:取代

39 of 57

結果:Run,Visualize

  • Price變成:常態分佈圖

40 of 57

Split把資料分割成

Train,test

(0.7),(0.3)

split Data

41 of 57

Split把資料分割成�Train,test (0.7),(0.3)

  • 查詢:split 🡪 split Data🡪0.7

42 of 57

使用數學model

迴歸:決策樹迴歸模型

Bootsted Decision Tree regression

43 of 57

使用數學model:迴歸:決策樹迴歸模型Bootsted Decision Tree regression

44 of 57

訓練model

Train model

45 of 57

訓練model,Train model

46 of 57

設定『目標值Label』是哪個欄位?

launch column selector

47 of 57

設定目標值:點按tain model�🡪launch column selector🡪輸入price

48 of 57

設定『目標值Label』的欄位:price

49 of 57

讓模型學習,並且計算loss,accuracy:

score model(就是model.fit())

50 of 57

讓模型學習,並且計算loss,accuracy:�score model🡪2個連線

51 of 57

評估模型成效

準確率

Evaluate model

52 of 57

評估模型成效準確率:evaluate

53 of 57

先Run,再visualize 資料集

  • MAE,MSE,r^2(coefficient of Determination)
  • coefficient of Determination=線性擬合度

54 of 57

比較:有處理缺值,對迴歸預測的線性擬合度r^2的影響

  • 沒有處理缺值:

  • 有處理缺值:則提高(線性擬合度r^2),提高預測準確率

  • 建立特徵工程,提高(線性擬合度r^2),提高預測準確率
    • 新增特徵欄位:氣缸數3區
    • 標籤price:改成『常態分佈』

55 of 57

誤差值的直方圖hist

56 of 57

結論

57 of 57

結論:建立特徵工程,可提高(線性擬合度r^2,決定係數),可提高預測準確率

  • 建立特徵工程,提高(線性擬合度r^2,決定係數),提高預測準確率
  • (1).使用Group Categorical Value 元件新增新的Feature
    • 例如:新增特徵欄位:氣缸數合併成3區

  • (2).使用『 Apply Math Operation 』元件,加入數學函數,轉換成常態分佈
    • 例如:標籤price:改成自然對數ln『常態分佈』