[問題] 關於K-fold交叉驗證的一段程式碼

看板Python作者 (Tombo)時間3年前 (2021/03/08 19:30), 3年前編輯推噓4(4032)
留言36則, 5人參與, 3年前最新討論串1/2 (看更多)
不好意思,打擾了 想請教下面圖片中關於 實作四折的k fold交叉驗證的程式碼 (出自市面上的教學書) http://imgur.com/LM1nonA
自己的理解是 交叉驗證只建立一次模型 之後執行k次拆解訓練集去訓練跟驗證 但圖中迴圈中會呼叫四次build_model方法 不過為什麼不會變成重新建立四次新模型,而覆蓋之前的權重? 自己以為會是建立一次編譯模型後 再連續四次用切割過的不同子資料集 呼叫fit做訓練就好 謝謝 ----- Sent from JPTT on my Sony I4193. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.121.145 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1615203035.A.66F.html ※ 編輯: Tombo (111.71.121.145 臺灣), 03/08/2021 19:31:42

03/08 23:32, 3年前 , 1F
每次的訓練集不同,模型就不同,等於 5 folds 給你 5
03/08 23:32, 1F

03/08 23:32, 3年前 , 2F
個模型
03/08 23:32, 2F

03/08 23:36, 3年前 , 3F
而為何不同,就是因為模型會根據 training data fit
03/08 23:36, 3F

03/08 23:36, 3年前 , 4F
出它的 weights / parameters
03/08 23:36, 4F

03/08 23:53, 3年前 , 5F
我最後的問法有問題沒講清楚,我是想連續用k個不同的分割資
03/08 23:53, 5F

03/08 23:53, 3年前 , 6F
料集來一口氣訓練完成,但是他的做法不是會一次又一次覆蓋
03/08 23:53, 6F

03/08 23:53, 3年前 , 7F
權重,而不能巡迴一遍資料集
03/08 23:53, 7F
※ 編輯: Tombo (140.122.136.109 臺灣), 03/08/2021 23:55:29

03/09 00:05, 3年前 , 8F
想問哪本教科書,感恩
03/09 00:05, 8F

03/09 10:48, 3年前 , 9F
我不太確定我理解的對否,但這樣的概念不就是1個訓練
03/09 10:48, 9F

03/09 10:48, 3年前 , 10F
集,然後你用不同的batch size
03/09 10:48, 10F

03/09 13:07, 3年前 , 11F
tensorflow與keras- python深度學習應用實務,這本書 /他會
03/09 13:07, 11F

03/09 13:07, 3年前 , 12F
分割成子資料集,跟不同驗證資料集,所以好像也不太算bach si
03/09 13:07, 12F

03/09 13:07, 3年前 , 13F
ze不同而已??就像最新回文的那位版友說的可以加強論證的
03/09 13:07, 13F

03/09 13:07, 3年前 , 14F
感覺,抱歉最近才剛學習很多不了解
03/09 13:07, 14F

03/09 18:17, 3年前 , 15F
不同的initialization weight有一定程度的會影響模型表
03/09 18:17, 15F

03/09 18:17, 3年前 , 16F
現,所以通常會重新創建.(模型可能會學到上個模型留下來
03/09 18:17, 16F

03/09 18:17, 3年前 , 17F
的pattern)
03/09 18:17, 17F

03/09 19:37, 3年前 , 18F
看完大家的回覆跟再看一次書後,應該是自己誤解交叉驗證的
03/09 19:37, 18F

03/09 19:37, 3年前 , 19F
背後精神,感覺是透過子資料集創建不同模型(所以需要重建
03/09 19:37, 19F

03/09 19:37, 3年前 , 20F
),再透過這k個模型用平均數據或是其他方法找出結論,不是
03/09 19:37, 20F

03/09 19:37, 3年前 , 21F
用同一個模型重複訓練不同子資料集
03/09 19:37, 21F

03/10 08:11, 3年前 , 22F
原po如果你用其他可解釋性高的機器學習算法就不用重建,
03/10 08:11, 22F

03/10 08:11, 3年前 , 23F
像是線性回歸之類的,因為答案是唯一,不會因初始化影響
03/10 08:11, 23F

03/10 08:11, 3年前 , 24F
,反正你只要得知error,所以這本書為何要重建其實是因
03/10 08:11, 24F

03/10 08:11, 3年前 , 25F
為他用了NN,NN只能找到局部最優解,不像線性回歸,所以
03/10 08:11, 25F

03/10 08:11, 3年前 , 26F
導致每次NN的重量權值是不同的,甚至有可能被init weigh
03/10 08:11, 26F

03/10 08:11, 3年前 , 27F
t影響。我認為原po的盲點應該在這 ,Kfold 就只是交叉驗
03/10 08:11, 27F

03/10 08:11, 3年前 , 28F
證的手法,你問我模型該不該保留等MSEMAE都符合需求要去
03/10 08:11, 28F

03/10 08:11, 3年前 , 29F
做預測時再保留就行
03/10 08:11, 29F

03/10 18:08, 3年前 , 30F
其實K-fold就是驗證而已,並沒有打算要用這K個模型找結論
03/10 18:08, 30F

03/10 18:09, 3年前 , 31F
用多個模型綜合得到結論的方式有很多種,例如我回應文提到
03/10 18:09, 31F

03/10 18:11, 3年前 , 32F
的bagging、另外boosting、random forest也都是
03/10 18:11, 32F

03/10 18:11, 3年前 , 33F
他們在「做法上」有些地方看起來跟K-fold有相似性,但意義
03/10 18:11, 33F

03/10 18:12, 3年前 , 34F
上並不是相同的
03/10 18:12, 34F

03/10 18:12, 3年前 , 35F
只是「剛好」你可以把K-fold的K個模型留下來做bagging省去
03/10 18:12, 35F

03/10 18:13, 3年前 , 36F
重train的時間而已,但就只是剛好可利用而已
03/10 18:13, 36F
文章代碼(AID): #1WHWhRPl (Python)
文章代碼(AID): #1WHWhRPl (Python)