目錄
KFold
StratifiedKFold
ShuffleSplit
#TimeSeriesSplit
非獨立同分佈(non-IID)資料的交叉驗證
首頁 科技週邊 人工智慧 交叉驗證的重要性不容忽視!

交叉驗證的重要性不容忽視!

Nov 06, 2023 pm 08:17 PM
機器學習 交叉驗證

為了不改變原始意思,需要重新表達的內容是:首先需要弄清楚為什麼需要進行交叉驗證?

交叉驗證是機器學習和統計學中常用的技術,用於評估預測模型的性能和泛化能力,特別是在數據有限或評估模型對新的未見數據的泛化能力時,交叉驗證非常有價值。

交叉驗證的重要性不容忽視!

在哪些情況下會使用交叉驗證呢?

  • 模型效能評估:交叉驗證有助於估計模型在未見資料上的表現。透過在多個資料子集上訓練和評估模型,交叉驗證提供了比單一訓練-測試分割更穩健的模型效能估計。
  • 資料效率:在資料有限的情況下,交叉驗證充分利用了所有可用樣本,透過同時使用所有資料進行訓練和評估,提供了對模型效能更可靠的評估。
  • 超參數調優:交叉驗證通常用於選擇模型的最佳超參數。透過在不同資料子集上使用不同的超參數設定來評估模型的效能,可以確定在整體效能上表現最好的超參數值。
  • 偵測過擬合:交叉驗證有助於偵測模型是否對訓練資料過擬合。如果模型在訓練集上的表現明顯優於驗證集,可能表示存在過擬合的情況,需要進行調整,如正規化或選擇更簡單的模型。
  • 泛化能力評估:交叉驗證提供了模型對未見資料的泛化能力的評估。透過在多個資料分割上評估模型,它有助於評估模型捕捉資料中的潛在模式的能力,而不依賴隨機性或特定的訓練-測試分割。

交叉驗證的大致想法可如圖5折交叉所示,在每次迭代中,新模型在四個子資料集上訓練,並在最後一個保留的子資料集上進行測試,確保所有數據都得到利用。透過平均分數及標準差等指標,提供了模型表現的真實量測

交叉驗證的重要性不容忽視!

#一切都得從K折交叉開始。

KFold

在Sklearn中已經整合了K折交叉驗證,這裡以7折為例:

from sklearn.datasets import make_regressionfrom sklearn.model_selection import KFoldx, y = make_regression(n_samples=100)# Init the splittercross_validation = KFold(n_splits=7)
登入後複製

交叉驗證的重要性不容忽視!

還有一個常用操作是在執行拆分前進行Shuffle,透過破壞樣本的原始順序進一步最小化了過度擬合的風險:

cross_validation = KFold(n_splits=7, shuffle=True)
登入後複製

交叉驗證的重要性不容忽視!

這樣,一個簡單的k折交叉驗證就能夠完成了,請務必查看原始程式碼!請務必查看原始程式碼!請務必查看原始程式碼!

StratifiedKFold

StratifiedKFold是專門為分類問題而設計。

在有的分類問題中,即使將資料分成多個集合,目標分佈也應該保持不變。例如大多數情況下,具有30到70類別比例的二元目標在訓練集和測試集中仍應保持相同的比例,在普通的KFold中,這個規則被打破了,因為在拆分之前對資料進行shuffle時,類別比例將無法維持。

為了解決這個問題,在Sklearn中使用了另一個專門用於分類的拆分器類別-StratifiedKFold:

from sklearn.datasets import make_classificationfrom sklearn.model_selection import StratifiedKFoldx, y = make_classification(n_samples=100, n_classes=2)cross_validation = StratifiedKFold(n_splits=7, shuffle=True, random_state=1121218)
登入後複製

交叉驗證的重要性不容忽視!

儘管與KFold看起來相似,但現在在所有的split和迭代中,類別比例保持一致

ShuffleSplit

有時只需多次重複進行訓練/測試集分割的過程,這種方式與交叉驗證非常相似

在邏輯上來說,透過使用不同的隨機種子來產生多個訓練/測試集,應該在足夠多的迭代中,類似於一個穩健的交叉驗證過程

#Scikit-learn函式庫中也提供了對應的介面:

from sklearn.model_selection import ShuffleSplitcross_validation = ShuffleSplit(n_splits=7, train_size=0.75, test_size=0.25)
登入後複製

交叉驗證的重要性不容忽視!

#TimeSeriesSplit

當資料集為時間序列時,不能使用傳統的交叉驗證,這將完全打亂順序,為了解決這個問題,參考Sklearn提供了另一個拆分器——TimeSeriesSplit,

from sklearn.model_selection import TimeSeriesSplitcross_validation = TimeSeriesSplit(n_splits=7)
登入後複製

交叉驗證的重要性不容忽視!

##在驗證集始終位於訓練集的索引之後的情況下,我們可以看到圖形。這是由於索引是日期,這意味著我們不會意外地在未來的日期上進行時間序列模型的訓練,並對先前的日期進行預測

非獨立同分佈(non-IID)資料的交叉驗證

以上方法是針對獨立同分佈資料集進行處理的,即產生資料的過程不會受到其他樣本的影響

然而,在某些情況下,資料並未滿足獨立同分佈(IID)的條件,即某些樣本之間存在依賴關係。這種情況在Kaggle競賽中也有出現,例如Google Brain Ventilator Pressure競賽。這些數據記錄了人工肺在數千個呼吸過程中(吸入和呼出)的氣壓值,並且對每次呼吸的每個時刻進行了記錄。每個呼吸過程大約有80行數據,這些行之間是相互關聯的。在這種情況下,傳統的交叉驗證方法無法使用,因為資料的劃分可能會“剛好發生在一個呼吸過程的中間”

這可以被理解為需要對這些資料進行“分組”,因為組內資料是有關聯的。舉個例子,當從多個患者收集醫療數據時,每個患者都有多個樣本。然而,這些數據很可能會受到患者個體差異的影響,因此也需要進行分組

往往我們希望在一個特定組別上訓練的模型是否能夠很好地泛化到其他未見過的組別,所以在進行交差驗證時給這些組別資料打上“tag”,告訴他們如何區分別瞎拆。

在Sklearn中提供了若干介面處理這些情況:

  • GroupKFold
  • StratifiedGroupKFold
  • LeaveOneGroupOut
  • LeavePGroupsOut
  • LeaveOneGroupOut

#GroupShuffleSplit

######強烈建議搞清楚交叉驗證的思想,以及如何實現,搭配看Sklearn源碼是一個肥腸不錯的方式。此外,需要對自己的資料集有著清晰的定義,而資料預處理真的很重要。 ###

以上是交叉驗證的重要性不容忽視!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

15個值得推薦的開源免費圖片標註工具 15個值得推薦的開源免費圖片標註工具 Mar 28, 2024 pm 01:21 PM

圖像標註是將標籤或描述性資訊與圖像相關聯的過程,以賦予圖像內容更深層的含義和解釋。這個過程對於機器學習至關重要,它有助於訓練視覺模型以更準確地識別圖像中的各個元素。透過為圖像添加標註,使得電腦能夠理解圖像背後的語義和上下文,從而提高對圖像內容的理解和分析能力。影像標註的應用範圍廣泛,涵蓋了許多領域,如電腦視覺、自然語言處理和圖視覺模型具有廣泛的應用領域,例如,輔助車輛識別道路上的障礙物,幫助疾病的檢測和診斷透過醫學影像識別。本文主要推薦一些較好的開源免費的圖片標註工具。 1.Makesens

一文帶您了解SHAP:機器學習的模型解釋 一文帶您了解SHAP:機器學習的模型解釋 Jun 01, 2024 am 10:58 AM

在機器學習和資料科學領域,模型的可解釋性一直是研究者和實踐者關注的焦點。隨著深度學習和整合方法等複雜模型的廣泛應用,理解模型的決策過程變得尤為重要。可解釋人工智慧(ExplainableAI|XAI)透過提高模型的透明度,幫助建立對機器學習模型的信任和信心。提高模型的透明度可以透過多種複雜模型的廣泛應用等方法來實現,以及用於解釋模型的決策過程。這些方法包括特徵重要性分析、模型預測區間估計、局部可解釋性演算法等。特徵重要性分析可以透過評估模型對輸入特徵的影響程度來解釋模型的決策過程。模型預測區間估計

通透!機器學習各大模型原理的深度剖析! 通透!機器學習各大模型原理的深度剖析! Apr 12, 2024 pm 05:55 PM

通俗來說,機器學習模型是一種數學函數,它能夠將輸入資料映射到預測輸出。更具體地說,機器學習模型是一種透過學習訓練數據,來調整模型參數,以最小化預測輸出與真實標籤之間的誤差的數學函數。在機器學習中存在多種模型,例如邏輯迴歸模型、決策樹模型、支援向量機模型等,每種模型都有其適用的資料類型和問題類型。同時,不同模型之間存在著許多共通性,或者說有一條隱藏的模型演化的路徑。將聯結主義的感知機為例,透過增加感知機的隱藏層數量,我們可以將其轉化為深度神經網路。而對感知機加入核函數的話就可以轉換為SVM。這一

透過學習曲線辨識過擬合和欠擬合 透過學習曲線辨識過擬合和欠擬合 Apr 29, 2024 pm 06:50 PM

本文將介紹如何透過學習曲線來有效辨識機器學習模型中的過度擬合和欠擬合。欠擬合和過擬合1、過擬合如果一個模型對資料進行了過度訓練,以至於它從中學習了噪聲,那麼這個模型就被稱為過擬合。過度擬合模型非常完美地學習了每一個例子,所以它會錯誤地分類一個看不見的/新的例子。對於一個過度擬合的模型,我們會得到一個完美/接近完美的訓練集分數和一個糟糕的驗證集/測試分數。略有修改:"過擬合的原因:用一個複雜的模型來解決一個簡單的問題,從資料中提取雜訊。因為小資料集作為訓練集可能無法代表所有資料的正確表示。"2、欠擬合如

人工智慧在太空探索和人居工程中的演變 人工智慧在太空探索和人居工程中的演變 Apr 29, 2024 pm 03:25 PM

1950年代,人工智慧(AI)誕生。當時研究人員發現機器可以執行類似人類的任務,例如思考。後來,在1960年代,美國國防部資助了人工智慧,並建立了實驗室進行進一步開發。研究人員發現人工智慧在許多領域都有用武之地,例如太空探索和極端環境中的生存。太空探索是對宇宙的研究,宇宙涵蓋了地球以外的整個宇宙空間。太空被歸類為極端環境,因為它的條件與地球不同。要在太空中生存,必須考慮許多因素,並採取預防措施。科學家和研究人員認為,探索太空並了解一切事物的現狀有助於理解宇宙的運作方式,並為潛在的環境危機

使用C++實現機器學習演算法:常見挑戰及解決方案 使用C++實現機器學習演算法:常見挑戰及解決方案 Jun 03, 2024 pm 01:25 PM

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

可解釋性人工智慧:解釋複雜的AI/ML模型 可解釋性人工智慧:解釋複雜的AI/ML模型 Jun 03, 2024 pm 10:08 PM

譯者|李睿審校|重樓人工智慧(AI)和機器學習(ML)模型如今變得越來越複雜,這些模型產生的產出是黑盒子-無法向利害關係人解釋。可解釋性人工智慧(XAI)致力於透過讓利害關係人理解這些模型的工作方式來解決這個問題,確保他們理解這些模型實際上是如何做出決策的,並確保人工智慧系統中的透明度、信任度和問責制來解決這個問題。本文探討了各種可解釋性人工智慧(XAI)技術,以闡明它們的基本原理。可解釋性人工智慧至關重要的幾個原因信任度和透明度:為了讓人工智慧系統被廣泛接受和信任,使用者需要了解決策是如何做出的

Flash Attention穩定嗎? Meta、哈佛發現其模型權重偏差呈現數量級波動 Flash Attention穩定嗎? Meta、哈佛發現其模型權重偏差呈現數量級波動 May 30, 2024 pm 01:24 PM

MetaFAIR聯合哈佛優化大規模機器學習時所產生的資料偏差,提供了新的研究架構。據所周知,大語言模型的訓練常常需要數月的時間,使用數百甚至上千個GPU。以LLaMA270B模型為例,其訓練總共需要1,720,320個GPU小時。由於這些工作負載的規模和複雜性,導致訓練大模型存在著獨特的系統性挑戰。最近,許多機構在訓練SOTA生成式AI模型時報告了訓練過程中的不穩定情況,它們通常以損失尖峰的形式出現,例如Google的PaLM模型訓練過程中出現了多達20次的損失尖峰。數值偏差是造成這種訓練不準確性的根因,

See all articles