自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

交叉驗(yàn)證太重要了!

人工智能
交叉驗(yàn)證是機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)中常用的一種技術(shù),用于評(píng)估預(yù)測(cè)模型的性能和泛化能力,特別是在數(shù)據(jù)有限或評(píng)估模型對(duì)新的未見數(shù)據(jù)的泛化能力時(shí),交叉驗(yàn)證非常有價(jià)值。

首先需要搞明白,為什么需要交叉驗(yàn)證?

交叉驗(yàn)證是機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)中常用的一種技術(shù),用于評(píng)估預(yù)測(cè)模型的性能和泛化能力,特別是在數(shù)據(jù)有限或評(píng)估模型對(duì)新的未見數(shù)據(jù)的泛化能力時(shí),交叉驗(yàn)證非常有價(jià)值。

那么具體在什么情況下會(huì)使用交叉驗(yàn)證呢?

  • 模型性能評(píng)估:交叉驗(yàn)證有助于估計(jì)模型在未見數(shù)據(jù)上的表現(xiàn)。通過在多個(gè)數(shù)據(jù)子集上訓(xùn)練和評(píng)估模型,交叉驗(yàn)證提供了比單一訓(xùn)練-測(cè)試分割更穩(wěn)健的模型性能估計(jì)。
  • 數(shù)據(jù)效率:在數(shù)據(jù)有限的情況下,交叉驗(yàn)證充分利用了所有可用樣本,通過同時(shí)使用所有數(shù)據(jù)進(jìn)行訓(xùn)練和評(píng)估,提供了對(duì)模型性能更可靠的評(píng)估。
  • 超參數(shù)調(diào)優(yōu):交叉驗(yàn)證通常用于選擇模型的最佳超參數(shù)。通過在不同數(shù)據(jù)子集上使用不同的超參數(shù)設(shè)置來(lái)評(píng)估模型的性能,可以確定在整體性能上表現(xiàn)最好的超參數(shù)值。
  • 檢測(cè)過擬合:交叉驗(yàn)證有助于檢測(cè)模型是否對(duì)訓(xùn)練數(shù)據(jù)過擬合。如果模型在訓(xùn)練集上的表現(xiàn)明顯優(yōu)于驗(yàn)證集,可能表明存在過擬合的情況,需要進(jìn)行調(diào)整,如正則化或選擇更簡(jiǎn)單的模型。
  • 泛化能力評(píng)估:交叉驗(yàn)證提供了對(duì)模型對(duì)未見數(shù)據(jù)的泛化能力的評(píng)估。通過在多個(gè)數(shù)據(jù)分割上評(píng)估模型,它有助于評(píng)估模型捕捉數(shù)據(jù)中的潛在模式的能力,而不依賴于隨機(jī)性或特定的訓(xùn)練-測(cè)試分割。

交叉驗(yàn)證的大致思想可如圖5折交叉所示,在每次迭代中,新模型在四個(gè)子數(shù)據(jù)集上訓(xùn)練,并在最后一個(gè)保留的子數(shù)據(jù)集上進(jìn)行測(cè)試,確保所有數(shù)據(jù)得到利用。通過平均分?jǐn)?shù)及標(biāo)準(zhǔn)差等指標(biāo),提供了對(duì)模型性能的真實(shí)度量

一切還得從K折交叉開始。

KFold

K折交叉在Sklearn中已經(jīng)集成,此處以7折為例:

from sklearn.datasets import make_regression
from sklearn.model_selection import KFold

x, y = make_regression(n_samples=100)

# Init the splitter
cross_validation = KFold(n_splits=7)

還有一個(gè)常用操作是在執(zhí)行拆分前進(jìn)行Shuffle,通過破壞樣本的原始順序進(jìn)一步最小化了過度擬合的風(fēng)險(xiǎn):

cross_validation = KFold(n_splits=7, shuffle=True)

這樣,一個(gè)簡(jiǎn)單的k折交叉驗(yàn)證就實(shí)現(xiàn)了,記得看源碼看源碼看源碼??!

StratifiedKFold

StratifiedKFold是專門為分類問題而設(shè)計(jì)。

在有的分類問題中,即使將數(shù)據(jù)分成多個(gè)集合,目標(biāo)分布也應(yīng)該保持不變。比如大多數(shù)情況下,具有30到70類別比例的二元目標(biāo)在訓(xùn)練集和測(cè)試集中仍應(yīng)保持相同的比例,在普通的KFold中,這個(gè)規(guī)則被打破了,因?yàn)樵诓鸱种皩?duì)數(shù)據(jù)進(jìn)行shuffle時(shí),類別比例將無(wú)法保持。

為了解決這個(gè)問題,在Sklearn中使用了另一個(gè)專門用于分類的拆分器類——StratifiedKFold:

from sklearn.datasets import make_classification
from sklearn.model_selection import StratifiedKFold

x, y = make_classification(n_samples=100, n_classes=2)

cross_validation = StratifiedKFold(n_splits=7, shuffle=True, random_state=1121218)

雖然看起來(lái)與KFold相似,但現(xiàn)在類別比例在所有的split和迭代中都維持一致。

ShuffleSplit

有的時(shí)候只是多次重復(fù)進(jìn)行訓(xùn)練/測(cè)試集拆分過程,也是和交叉驗(yàn)證很像的一種方式。

從邏輯上講,使用不同的隨機(jī)種子生成多個(gè)訓(xùn)練/測(cè)試集應(yīng)該在足夠多的迭代中類似于一個(gè)穩(wěn)健的交叉驗(yàn)證過程。

Sklearn中也有提供接口:

from sklearn.model_selection import ShuffleSplit

cross_validation = ShuffleSplit(n_splits=7, train_size=0.75, test_size=0.25)

TimeSeriesSplit

當(dāng)數(shù)據(jù)集為時(shí)間序列時(shí),不能使用傳統(tǒng)的交叉驗(yàn)證,這將完全打亂順序,為了解決這個(gè)問題,參考Sklearn提供了另一個(gè)拆分器——TimeSeriesSplit,

from sklearn.model_selection import TimeSeriesSplit

cross_validation = TimeSeriesSplit(n_splits=7)

如圖,驗(yàn)證集始終位于訓(xùn)練集的索引之后。由于索引是日期,不會(huì)意外地在未來(lái)的日期上訓(xùn)練時(shí)間序列模型并對(duì)之前的日期進(jìn)行預(yù)測(cè)。

非獨(dú)立同分布(non-IID)數(shù)據(jù)的交叉驗(yàn)證

前面所述方法均在處理獨(dú)立同分布數(shù)據(jù)集,也就是說生成數(shù)據(jù)的過程不會(huì)受到其他樣本的影響。

然而,有些情況下,數(shù)據(jù)并不滿足IID的條件,即一些樣本組之間存在依賴關(guān)系,Kaggle上的競(jìng)賽就有出現(xiàn),如Google Brain Ventilator Pressure,該數(shù)據(jù)記錄了人工肺在數(shù)千個(gè)呼吸過程中(吸入和呼出)的氣壓值,并且對(duì)每次呼吸的每個(gè)時(shí)刻進(jìn)行了記錄,每個(gè)呼吸過程大約有80行數(shù)據(jù),這些行之間是相互關(guān)聯(lián)的,在這種情況下,傳統(tǒng)的交叉驗(yàn)證無(wú)法工作,因?yàn)椴鸱挚赡軙?huì)“剛好發(fā)生在一個(gè)呼吸過程的中間”。

可以理解為需要對(duì)這些數(shù)據(jù)進(jìn)行“分組”,因?yàn)榻M內(nèi)數(shù)據(jù)是有關(guān)聯(lián)的,比如當(dāng)從多個(gè)患者收集醫(yī)療數(shù)據(jù)時(shí),每個(gè)患者都有多個(gè)樣本,而這些數(shù)據(jù)很可能會(huì)受到患者個(gè)體差異的影響,所以也需要分組。

往往我們希望在一個(gè)特定組別上訓(xùn)練的模型是否能夠很好地泛化到其他未見過的組別,所以在進(jìn)行交差驗(yàn)證時(shí)給這些組別數(shù)據(jù)打上“tag”,告訴他們?nèi)绾螀^(qū)分別瞎拆。

在Sklearn中提供了若干接口處理這些情況:

  • GroupKFold
  • StratifiedGroupKFold
  • LeaveOneGroupOut
  • LeavePGroupsOut
  • GroupShuffleSplit

強(qiáng)烈建議搞清楚交叉驗(yàn)證的思想,以及如何實(shí)現(xiàn),搭配看Sklearn源碼是一個(gè)肥腸不錯(cuò)的方式。此外,需要對(duì)自己的數(shù)據(jù)集有著清晰的定義,數(shù)據(jù)預(yù)處理真的很重要。

責(zé)任編輯:趙寧寧 來(lái)源: 啥都會(huì)一點(diǎn)的研究生
相關(guān)推薦

2022-03-23 10:09:27

CIOTarget公司首席

2025-04-10 00:11:01

2025-03-05 10:56:12

VLAN網(wǎng)絡(luò)IP

2014-03-17 09:31:36

Linux桌面

2022-12-15 16:53:55

2022-03-28 20:59:17

交叉驗(yàn)證模型

2025-01-22 07:59:59

2022-07-11 08:37:41

nacosSLB長(zhǎng)連接

2016-01-06 09:49:58

云計(jì)算服務(wù)器

2020-07-15 07:45:51

Python開發(fā)工具

2017-06-26 10:43:22

互聯(lián)網(wǎng)

2024-10-30 08:23:07

2025-01-15 11:25:35

2022-03-04 15:19:59

Spring BooJavaVert.x

2021-08-30 14:23:41

身份驗(yàn)證隱私管理網(wǎng)絡(luò)安全

2022-08-14 16:04:15

機(jī)器學(xué)習(xí)數(shù)據(jù)集算法

2013-12-18 14:17:00

操作系統(tǒng)邊緣化移動(dòng)設(shè)備

2021-02-15 15:20:08

架構(gòu)程序員軟件

2010-08-30 10:48:40

職場(chǎng)

2021-08-03 09:33:55

HTTP網(wǎng)絡(luò)協(xié)議TCP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)