最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

深入研究k折交叉驗(yàn)證(K fold Cross Validation)

2021-08-18 18:08 作者:深度之眼官方賬號(hào)  | 我要投稿

機(jī)器學(xué)習(xí)方法常常不能直接對(duì)數(shù)據(jù)進(jìn)行建模,因?yàn)樗鼈儗W(xué)習(xí)的是訓(xùn)練集的特定特征,而這些特征在測(cè)試集中是不存在的。所以這些特征并不具有代表性,我們處于Overfitting的情況。(有不同意見(jiàn)后臺(tái)來(lái)和學(xué)姐討論,別直接取關(guān),嚶嚶嚶~)


當(dāng)模型擬合過(guò)多的訓(xùn)練數(shù)據(jù)時(shí),就會(huì)出現(xiàn)這種情況,而且它不能在新的樣本中泛化。不過(guò)有很多方法可以解決這個(gè)問(wèn)題,比如:正則化、選擇最佳超參數(shù)和K折交叉驗(yàn)證。


上周學(xué)姐介紹了K折交叉驗(yàn)證基本知識(shí)點(diǎn)的講解,今天我們來(lái)深入研究一下。


因?yàn)槟P偷墓憩F(xiàn)與它具有相關(guān)作用,簡(jiǎn)單地將數(shù)據(jù)分成訓(xùn)練集和測(cè)試集并不能真正了解模型的性能。比如,當(dāng)看到訓(xùn)練集的準(zhǔn)確率是90%覺(jué)得很準(zhǔn)確,但在看到60%的測(cè)試準(zhǔn)確率之后,會(huì)覺(jué)得肯定是出了什么問(wèn)題。


所以一般的想法是將數(shù)據(jù)集分成k個(gè)部分,k-1個(gè)用于訓(xùn)練,一個(gè)用于驗(yàn)證/測(cè)試。這樣的話(huà),我們可以將數(shù)據(jù)集分成5折,因此4折將用于訓(xùn)練模型,而剩余的折用于評(píng)估模型的性能。如果這樣進(jìn)行分區(qū),需要每次更改用于評(píng)估模型的折疊位置并重復(fù)5次。


為了更好地了解所有要使用的工具,我將使用來(lái)自Kaggle的Titanic數(shù)據(jù)集展示最常用的交叉驗(yàn)證技術(shù)。


Kaggle數(shù)據(jù)集:

https://www.kaggle.com/c/titanic/data

代碼:

https://github.com/eugeniaring/sklearn-tutorial/blob/main/titanic-kcv.ipynb


由于測(cè)試集不包含目標(biāo)標(biāo)簽,本教程中僅使用訓(xùn)練集。這是避免過(guò)度擬合的一種方法,過(guò)程中會(huì)使用較少的訓(xùn)練數(shù)據(jù)來(lái)訓(xùn)練模型,并在驗(yàn)證集中進(jìn)行評(píng)估。

本教程大綱:

  • 交叉驗(yàn)證

  • 留一法交叉驗(yàn)證

  • K折交叉驗(yàn)證

  • 分層K折交叉驗(yàn)證

  • 時(shí)間序列交叉驗(yàn)證


01?交叉驗(yàn)證


經(jīng)典和老式的方法是將數(shù)據(jù)集分解為3個(gè)固定子集:


常見(jiàn)的選擇是使用 60% 進(jìn)行訓(xùn)練,20% 用于驗(yàn)證,20% 用于測(cè)試。我們可以根據(jù)數(shù)據(jù)集的大小決定這些比例。對(duì)于一個(gè)小數(shù)據(jù)集,這個(gè)比例是可以的;當(dāng)有更多數(shù)據(jù)時(shí),可以考慮較大的訓(xùn)練集百分比和較小的驗(yàn)證集和測(cè)試集百分比。


接下來(lái)我們使用具有已處理特征的Titanic數(shù)據(jù)集的方法。在訓(xùn)練模型之前,我們將訓(xùn)練數(shù)據(jù)分為訓(xùn)練集和驗(yàn)證集。



一旦數(shù)據(jù)被拆分,我們訓(xùn)練決策樹(shù)分類(lèi)器并在驗(yàn)證集中對(duì)其進(jìn)行評(píng)估。


02?留一法交叉驗(yàn)證


第二種方法將觀察結(jié)果分為兩部分:


n-1個(gè)觀測(cè)值來(lái)擬合模型,剩余的觀測(cè)值用于評(píng)估它。此操作將重復(fù)n次。接下來(lái)按照相同的推理說(shuō)明函數(shù)LeaveOneOut是如何工作的:



現(xiàn)在使用cross_val_score函數(shù)來(lái)應(yīng)用留一法。cv是決定用不同方法分割數(shù)據(jù)集的策略的參數(shù)。在下面的例子中,使用了Leave One Out對(duì)象。


得到每次分裂的預(yù)測(cè)和準(zhǔn)確度,然后計(jì)算所有獲得值的平均值。結(jié)果表明,該方法的準(zhǔn)確度低于交叉驗(yàn)證方法,這可能是因?yàn)槊看尾鸱謹(jǐn)?shù)據(jù)集并使用不同的驗(yàn)證折疊不會(huì)高估驗(yàn)證準(zhǔn)確性。但通常它不是首選方法,因?yàn)榉指钪袥](méi)有隨機(jī)性,而且計(jì)算成本很高。我們可以嘗試用其他方法。


03?K折交叉驗(yàn)證


如前所述,在K折交叉驗(yàn)證中,我們將數(shù)據(jù)集分成k個(gè)折疊,k-1用于訓(xùn)練模型,剩余的一個(gè)用于評(píng)估模型,不斷重復(fù)這個(gè)操作k次。


用下面這個(gè)例子來(lái)了解這種方法如何拆分?jǐn)?shù)據(jù)集,為簡(jiǎn)單起見(jiàn),我們僅使用5折,并指定shuffle等于True以進(jìn)行隨機(jī)拆分:



以上我們觀察到,每個(gè)折疊中具有正類(lèi)和負(fù)類(lèi)(幸存/未幸存)的樣本數(shù)量不同,這是因?yàn)門(mén)itanic數(shù)據(jù)集具有不平衡的類(lèi)。


接下來(lái)看模型的性能如何,此次在函數(shù)cross_val_score中應(yīng)用了KFold對(duì)象:


性能比使用前一種方法要好得多。但是還有一個(gè)問(wèn)題,就是正類(lèi)和負(fù)類(lèi)的觀察數(shù)量是不同的:



結(jié)果:幸存的人數(shù)少于死亡人數(shù)。


還有一種更好的方法來(lái)管理不平衡的類(lèi),稱(chēng)為分層K折交叉驗(yàn)證。


04?分層K折交叉驗(yàn)證



分層K折交叉驗(yàn)證的工作方式與K折交叉驗(yàn)證相同,唯一的區(qū)別是它確保每個(gè)分類(lèi)值的觀察百分比相同。本案例中有兩個(gè)類(lèi),Survived 和 Not Survived。


下面的示例中,分層K交叉驗(yàn)證根據(jù)變量Survival劃分?jǐn)?shù)據(jù)集。


現(xiàn)在,可以看到從一層到另一層的不同類(lèi)的樣本數(shù)量沒(méi)有變化或略有變化,是因?yàn)槲覀冋诟鶕?jù)目標(biāo)變量對(duì)數(shù)據(jù)集進(jìn)行分層。



所有折疊的平均準(zhǔn)確率為79.79%。它比用前一種方法獲得的略小,但我仍然認(rèn)為這種方法對(duì)此類(lèi)數(shù)據(jù)更有效(歡迎討論)。


05?Time Series Cross Validation



最后一種方法是時(shí)間序列交叉驗(yàn)證。當(dāng)存在與時(shí)間相關(guān)的數(shù)據(jù)時(shí),它很有用,因此我們需要保留數(shù)據(jù)的順序。通過(guò)隨機(jī)化,我們將失去觀察之間的依賴(lài)關(guān)系。


在第一步中,我們不像其他方法那樣取所有樣本來(lái)訓(xùn)練和評(píng)估模型,而只是取一個(gè)子集。在第一步之后,每個(gè)訓(xùn)練集都是來(lái)自之前的訓(xùn)練和驗(yàn)證集的組合,我們每次都添加一個(gè)較小的數(shù)據(jù)來(lái)評(píng)估模型。只有在最后一次拆分中,我們才能使用所有數(shù)據(jù)。


在示例中,我們使用了5折,未指定,因?yàn)樗荰imeSeriesSplit中的默認(rèn)參數(shù)。


現(xiàn)在按照之前完成的相同程序進(jìn)行操作:


end?總結(jié)

本文說(shuō)明了將數(shù)據(jù)拆分為子集的最廣為人知的方法,但是還是需要使用相同的數(shù)據(jù)集嘗試更多方法,看看哪種方法更好。從本文實(shí)驗(yàn)來(lái)看最好的方法通常是K折交叉驗(yàn)證和分層K折交叉驗(yàn)證。希望學(xué)姐的這篇教程對(duì)大家有所幫助!


每天18:30分更新

關(guān)注+星標(biāo)+在看

不迷路看好文



深入研究k折交叉驗(yàn)證(K fold Cross Validation)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阳信县| 彝良县| 略阳县| 泸溪县| 贞丰县| 新田县| 中江县| 肃宁县| 伊通| 郁南县| 吴桥县| 当阳市| 永新县| 翁牛特旗| 厦门市| 寿光市| 那坡县| 江门市| 鹤峰县| 博兴县| 抚顺市| 浦东新区| 霸州市| 赤峰市| 玛纳斯县| 平定县| 汉中市| 胶南市| 抚松县| 南开区| 宜川县| 镇雄县| 绥棱县| 台北市| 越西县| 昌江| 恩施市| 平和县| 温宿县| 栖霞市| 柯坪县|