[ML] 機器學習基石:第十五講 Validation

ML:基礎學習
課程:機器學習基石
簡介:第十五講 Validation

Model 挑選的問題

假設有 M 個 models H1,H2,,HM 對應的演算法則有 A1,A2,,AM
目標:選出最小 EoutHm 對應的演算法為 Am
Eout 未知,該如何選?
  • 用眼睛看?
    • 不行
    • 在第十二講提過,內部大腦運作後,加進去不見得比較好
  • 最好的 Einm=argmin1mM(Em=Ein(Am(D)))
    • 不行
    • Φ1126 永遠比 Φ1  好,加了 λ 的反而比較差
    • 假設在 H1,H2,,HM 挑出 gm,相當於在聯集 H1H2HM 取,這會造成 model 複雜度上升 dVC(H1H2HM)
  • 最好的 Etestm=argmin1mM(Em=Etest(Am(D)))
    • 似乎可行
    • Eout(gm)Etest(gm)+O(logMNtest)
      第四講的 finite-bin Hoeffding P[Ein(g)Eout(g)>ϵ]2Me2ϵ2N
    • 該如何找出測試資料?不可能,存在於未來的考試
  • 最好的 Evalm=argmin1mM(Em=Eval(Am(Dtrain)))
    • 從原有的 D 分出一些資料 Dval
    • 乾淨,未被任何演算法污染過

驗證

Eout(gm)Eval(gm)+O(logMK)

流程圖
Eout(gm)Eout(gm)Eval(gm)+O(logMK)
由下圖可看出
  • Eval(g)Eout(g)
    • 需要較大的 K,才能保證兩者很接近
  • Eout(g)Eout(g)
    • 需要較小的 K,這樣訓練的資料才會多,才能保證兩者很接近
  • 實務經驗上通常 K=N5

訓練 N 個資料,需要花 N2 的時間
K=N5,且有 25 個 model,請問需要花多少時間找到 gm
T=25(45N)2+N2=17N2 可以發現,若直接找最小的 Ein 反而時間還花得比較多 25N2

Leave-one-out Cross Validation

假設 K=1,Dval(n)=(xn,yn)Eval(n)(gn)=err(gn(xn),yn)=en
那麼 en 如何接近 Eout(g) 呢?取平均的 Eval(n)
Eloocv(H,A)=1Nn=1Nen=1Nn=1Nerr(gn(xn),yn) EDEloocv(H,A)=ED1Nn=1Nen=1Nn=1NEDen=1Nn=1NEDtrainE(xn,yn)en=1Nn=1NEDtrainE(xn,yn)err(gn(xn),yn)=1Nn=1NEDtrainEout(gn)=1Nn=1NEout(N1)=Eout(N1)
從下圖看出,使用 EloocvEin

缺點 Leave-one-out Cross Validation

  • 極度花時間
  • linear regression 有公式解,故可實現
  • Error 不夠穩定
  • 在實務上不常使用

V-Fold Cross Validation

想法與 leave-one-out 一樣,但不是只拿一筆,而是切成十等份,然後輪流做為驗證
Ecv(H,A)=1Vv=1VEval(v)(gv)m=argmin1mM(Em=Ecv(Hm,Am))
實際經驗上,通常切為十份

訓練 N 個資料,需要花 N2 的時間
若為 10-fold,且有 25 個 model,請問需要花多少時間找到 gm
T=(910N)21025+N2=81100N21025+N2=812N25+N2=4052N2+N2=4072N2

結論

  • 驗證工具選用
    • 若計算上允許,V-Fold 會比只有一次的驗證還好
    • 5-Fold or 10-Fold 通常已足夠好,不需用到 Leave-One-Out
  • 實際流程
    1. 訓練:在各個 hypotheses 選出第一名
    2. 驗證:針對每個第一名測試,並再選出最好
    3. 測試:實際上戰場,不做任何選擇
  • 驗證還是比測試樂觀,因有選擇就可能存在污染的風險
    驗證的表現再好,都沒用,只有測試的表現才最重要

留言