日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

首先需要搞明白,為什么需要交叉驗(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)證太重要了!

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

  • 模型性能評(píng)估:交叉驗(yàn)證有助于估計(jì)模型在未見數(shù)據(jù)上的表現(xiàn)。通過(guò)在多個(gè)數(shù)據(jù)子集上訓(xùn)練和評(píng)估模型,交叉驗(yàn)證提供了比單一訓(xùn)練-測(cè)試分割更穩(wěn)健的模型性能估計(jì)。
  • 數(shù)據(jù)效率:在數(shù)據(jù)有限的情況下,交叉驗(yàn)證充分利用了所有可用樣本,通過(guò)同時(shí)使用所有數(shù)據(jù)進(jìn)行訓(xùn)練和評(píng)估,提供了對(duì)模型性能更可靠的評(píng)估。
  • 超參數(shù)調(diào)優(yōu):交叉驗(yàn)證通常用于選擇模型的最佳超參數(shù)。通過(guò)在不同數(shù)據(jù)子集上使用不同的超參數(shù)設(shè)置來(lái)評(píng)估模型的性能,可以確定在整體性能上表現(xiàn)最好的超參數(shù)值。
  • 檢測(cè)過(guò)擬合:交叉驗(yàn)證有助于檢測(cè)模型是否對(duì)訓(xùn)練數(shù)據(jù)過(guò)擬合。如果模型在訓(xùn)練集上的表現(xiàn)明顯優(yōu)于驗(yàn)證集,可能表明存在過(guò)擬合的情況,需要進(jìn)行調(diào)整,如正則化或選擇更簡(jiǎn)單的模型。
  • 泛化能力評(píng)估:交叉驗(yàn)證提供了對(duì)模型對(duì)未見數(shù)據(jù)的泛化能力的評(píng)估。通過(guò)在多個(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ù)得到利用。通過(guò)平均分?jǐn)?shù)及標(biāo)準(zhǔn)差等指標(biāo),提供了對(duì)模型性能的真實(shí)度量

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

一切還得從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)

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

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

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

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

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

StratifiedKFold

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

在有的分類問(wèn)題中,即使將數(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è)問(wèn)題,在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)

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

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

ShuffleSplit

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

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

Sklearn中也有提供接口:

from sklearn.model_selection import ShuffleSplit

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

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

TimeSeriesSplit

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

from sklearn.model_selection import TimeSeriesSplit

cross_validation = TimeSeriesSplit(n_splits=7)

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

如圖,驗(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ù)集,也就是說(shuō)生成數(shù)據(jù)的過(guò)程不會(huì)受到其他樣本的影響。

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

可以理解為需要對(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)練的模型是否能夠很好地泛化到其他未見過(guò)的組別,所以在進(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ù)處理真的很重要。

分享到:
標(biāo)簽:交叉 驗(yàn)證
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定