[ML] 機器學習基石:第十二講 Nonlinear Transformation

ML:基礎學習
課程:機器學習基石
簡介:第十二講 Nonlinear Transformation

利用轉換空間,從非線性變到線性

xXΦzZΦ2(x)=(1,x1,x2,x12,x1x2,x22)w~=(w0~,w1~,w2~,w3~,w4~,w5~)HΦ2={h(x):h(x)=h~(Φ2(x)) for some linear h~ on Z}
Φ1 不一定存在,所以實際上是將點對應過去確認輸出,再畫回來
事實上,特徵的轉換 Φ 也是一種轉換
若轉換為二次式 Φ2xRd,請問 Φ2 的 dimension 為多少?
二次項:(d2)+d
一次項:d
常數項:1
總共:d22+3d2+1

Φ 的代價

ΦQ(x)=(1,x1,x2,,xd,x12,x1x2,,xd2,x1Q,x1Q1x2,,xdQ) 如下,共有這麼多項 z=ΦQ(x),w~ 需要計算與儲存
所以 Q 變大,會導致計算效率變低與儲存空間變大
1w0~+d~others=(Q+dQ)=(Q+dd)=O(Qd)
重複組合排列概念
簡單來說
先用 d = 3, Q = 2 的 2 次方項來看
x1mx2nx3o
也就是有 3(d) 個空箱是放逗號
有 2(Q) 個空箱是放次方
m+n+oQ=2
可能為常數或一次方,故多個放多餘次方的項 p
m+n+o+p=Q=2
故想像 (m,n,o,p)

空空空空空
xx,,, => x12
x,x,, => x1x2
x,,x, => x1x3
x,,,x => x1
,xx,, => x22
,x,x, => x2x3
,x,,x => x2
,,xx, => x32
,,x,x => x3
,,,xx => 1

所以從 5 個空箱 (Q + d)
挑出 3 個空箱 (d) 來擺放逗號
或是
所以從 5 個空箱 (Q + d)
挑出 2 個空箱 (Q) 來擺放次方

w~=d~+1=O(Qd)dVC(HΦQ)
有其上限
dVC(HΦQ)d~+1
d~+2Z 無法 shatter
所以 d~+2X 必定無法 shatter
所以 Q 變大,會導致 dVC 變大,使得複雜度變高
  • Ein 會變小
  • Eout 卻遠離 Ein 

如何挑選 Q ?

用眼睛挑選嗎?
考慮以下這張圖,以下步驟 dVC 看似在減少
  1.  Φ2:z=(1,x1,x2,x12,x1x2,x22),dVC=6
  2. 那是不是可以改為 z=(1,x12,x22),dVC=3 
  3. 或者 z=(1,x12+x22),dVC=2 
  4. 甚至 z=(sign(0.6x12x22)),dVC=1
實際上你的腦中已做了計算,這些計算實際上也是個複雜的 model,所以也需考慮進去
為了 VC-safely,Φ 需要在偷看資料前就被決定,不然很可能被人為所影響

簡單範例

Q = 50, xR2,請問 d~為多少?
d~=(Q+22)1=525121=1325
可以發現轉換導致 dimension 變超大,那麼要考慮是否有足夠資料可使用?

Φ 相互間的關係

Φ0(x)=(1)Φ1(x)=(Φ0(x),x1,x2,,xd)Φ2(x)=(Φ1(x),x12,x1x2,,xd2)Φ3(x)=(Φ2(x),x13,x12x2,,xd3)=ΦQ(x)=(ΦQ1(x),x1Q,x1Q1x2,,xdQ)
gi=argminhHiEin(h)H0H1H2H3dVC(H0)dVC(H1)dVC(H2)dVC(H3)Ein(g0)Ein(g1)Ein(g2)Ein(g3)
如下圖,所以使用高維度 H1126 不見得會比較好

安全做法:不要一開始就套進高維度轉換

  1.  從 H1 開始試
    1. 假如 Ein(g1) 足夠小,那麼就 ok,且又安全
    2. 不夠小,那麼再慢慢地增加維度,唯一浪費的只有計算量而已

線性 model 優先:
簡單,有效率,安全,做得還不錯

留言