iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 13
0
AI & Data

跟著Google學ML系列 第 13

[Day 13] Feature Crosses特徵組合

Ref.: Feature Crosses

Encoding Nonlinearity

這邊的概念很簡單,就是把Feature組合在一起餵進model。主要的問題像是下面這張圖,我們很難用單一的feature去分類。
https://ithelp.ithome.com.tw/upload/images/20181013/20103835uapRGaSWPk.jpg
單獨以x or y當特性實在無法,但z = xy就有正負號,下圖就更容易理解了。
https://ithelp.ithome.com.tw/upload/images/20181013/20103835lmYbqBezDy.jpg
把z (綠色)當成一個新的feature帶入model訓練,就能得出很好的結果了。

原本的訓練方式可能是f = b + w_1*x + w_2*y,之後變成f = b + w_1*x + w_2*y + w_3*z,多考慮z這個feature。當然,z現在是x * y,也可能是x * x,或者可能是x_1 * x_2 * x_3,就看之後可能要怎麼組合你的synthetic feature z了。

Crossing One-Hot Vectors

這邊的概念更簡單的說,就是組合有種AND運算的感覺。所以我們昨天文章說的Binning或One-hot vector做 feature cross 就會有AND的效果。

height = [
  [150, 160),
  [160, 170),
  [170, 180)
]

gender = ["male", "female"]

height_x_gneder = [
  [150, 160) AND "male", [160, 170) AND "male", [170, 180) AND "male",
  [150, 160) AND "female", [160, 170) AND "female", [170, 180) AND "female"
]

Google文章內的範例是用經度緯度去分,當然還可以有更多種的分法,像時間搭配其他因素等等。

動手玩看看: Playground

第一個練習沒有Play的按鈕,是要手動調整線上的weight(hover上去就可以囉)。
https://ithelp.ithome.com.tw/upload/images/20181013/20103835E0romwq6GG.jpg


上一篇
[Day 12] Representation
下一篇
[Day 14] Regularization正規化-Simplicity
系列文
跟著Google學ML30

尚未有邦友留言

立即登入留言