[問題] 交叉驗證的流程請益
看板DataScience作者wheado (principal component QQ)時間2年前 (2022/01/28 12:37)推噓4(4推 0噓 15→)留言19則, 7人參與討論串1/2 (看更多)
最近有一個機器學習任務,是一個簡單的二元分類模型,
但是有一個問題想請教大家,
我想用交叉驗證 K-fold 的方法來驗證並且選擇模型,
但我的訓練、驗證、流程被質疑學理不通,
別人的論文不會這樣做,我不知道產品能不能這樣做。
我覺得我的作法沒有問題,但又有點害怕真的我腦袋有問題,
我想跟版上的有經驗的前輩請益,再回頭跟長官討論。
我將我的作法寫在下面,
=========================訓練、驗證、測試流程============================
首先將資料集 Data 切成 train 跟 test
train 切成 k 塊,以 4 為例, A, B, C, D
k=1, B + C + D 定義 train-train , A 定義 train-validation
我有七種模型,你可以想像用不同的 backbone (resnet, mobilenet,...)
訓練完成我在 A 上可以得到 7 個 AUC 。
k=2, A + C + D 定義 train-train , B 定義 train-validation
我有七種模型,同上
訓練完成我在 B 上可以得到 7 個 AUC 。
k=3, A + B + D 定義 train-train , C 定義 train-validation
我有七種模型,同上
訓練完成我在 C 上可以得到 7 個 AUC 。
k=4, A + B + C 定義 train-train , D 定義 train-validation
我有七種模型,同上
訓練完成我在 D 上可以得到 7 個 AUC 。
以上都跟 test 無關,只在 train 中。
最後我會得到 k*(3+3+1) 個模型,我全部在 test 上做驗證,
可以得到所有模型在測試集上的評估數據。
產品端可以將全部的模型都上線,但是伺服器費用高,所以不能全上。
需要挑選上線的模型,挑選 N 個模型,由單一表現最高的開始往下挑,
舉個例子來說明我的挑選方法:
fold-k model_n 代表第 k 個 fold 裡面第 n 個模型
k = 1,2,3,4 有 4 個 fold
n = 1,2,3,4,5,6,7 我有七個模型架構
top-1 ensemble
挑 test 上表現最好的第一個模型,
假設來自 fold-3 model_1 ,其中 test AUC 0.86 。
top-2 ensemble
挑 test 上表現最好的前兩個模型,預測結果兩者取平均,
假設來自 fold-3 model_1 、 fold-1 model_3 ,其中 test AUC 0.87
top-3 ensemble
挑 test 上表現最好的前三個模型,預測結果三者取平均,
假設來自 fold-3 model_1 、 fold-1 model_3 、 fold-3 model_2 ,
其中 test AUC 0.88 。
top-4 ensemble
挑 test 上表現最好的前四個模型,預測結果四者取平均,
假設來自 fold-3 model_1 、 fold-1 model_3 、
fold-3 model_2 、 fold-4 model_1,
其中 test AUC 0.875 。
發現在選到第四個模型綜合結果下降了,所以就挑選前三個模型,
當作產品的 classifier ,當然預測結果是取平均。
==============================================================
挑選模型是從所有的 fold 當中訓練的所有模型來挑選。
請問這樣做產品會有很嚴重的邏輯錯誤在裡面嗎?
有的話在哪邊?
還是我應該簡單點,切 train, validation, test 這樣訓練一次,
不要做 K-fold ,但先前的經驗告訴我 ensemble 這種作法會提昇一個檔次,
所以我會想往這樣走,
而且透過不同的模型架構以及 K-fold 作法可以獲得更多的模型。
我不知道我的邏輯錯在哪?
懇請高手指導,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.12.48 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1643344620.A.B8A.html
※ 編輯: wheado (111.254.12.48 臺灣), 01/28/2022 12:37:38
※ 編輯: wheado (111.254.12.48 臺灣), 01/28/2022 12:39:30
※ 編輯: wheado (111.254.12.48 臺灣), 01/28/2022 12:42:36
※ 編輯: wheado (111.254.12.48 臺灣), 01/28/2022 12:45:39
※ 編輯: wheado (111.254.12.48 臺灣), 01/28/2022 12:50:24
→
01/28 14:12,
2年前
, 1F
01/28 14:12, 1F
→
01/28 14:12,
2年前
, 2F
01/28 14:12, 2F
→
01/28 14:12,
2年前
, 3F
01/28 14:12, 3F
→
01/28 14:12,
2年前
, 4F
01/28 14:12, 4F
→
01/28 14:12,
2年前
, 5F
01/28 14:12, 5F
推
01/28 14:23,
2年前
, 6F
01/28 14:23, 6F
推
01/28 15:03,
2年前
, 7F
01/28 15:03, 7F
→
01/28 15:03,
2年前
, 8F
01/28 15:03, 8F
→
01/28 15:03,
2年前
, 9F
01/28 15:03, 9F
→
01/28 15:03,
2年前
, 10F
01/28 15:03, 10F
→
01/28 15:24,
2年前
, 11F
01/28 15:24, 11F
推
01/28 15:35,
2年前
, 12F
01/28 15:35, 12F
→
01/28 17:30,
2年前
, 13F
01/28 17:30, 13F
→
01/28 17:30,
2年前
, 14F
01/28 17:30, 14F
→
01/28 17:30,
2年前
, 15F
01/28 17:30, 15F
推
01/28 17:30,
2年前
, 16F
01/28 17:30, 16F
→
01/28 17:32,
2年前
, 17F
01/28 17:32, 17F
→
01/28 17:32,
2年前
, 18F
01/28 17:32, 18F
→
01/28 18:11,
2年前
, 19F
01/28 18:11, 19F
討論串 (同標題文章)
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章