三分鐘重新學習交叉驗證

2021-01-11 雷鋒網

雷鋒網(公眾號:雷鋒網) AI 科技評論按:文章的作者 Georgios Drakos 是一名數據科學家,通過本文作者向我們介紹了交叉驗證的基本概念、作用以及如何使用。雷鋒網 AI 科技評論根據原文進行了編譯。

驗證可能是數據科學家們所使用的最重要的技術之一,因為驗證操作有助於我們了解模型的穩定性——用來探索模型對新數據的泛化能力。我們需要確保模型從數據中正確學習到了大部分的模式,並且沒有被數據中的噪聲過度幹擾,也就是說,模型的偏差和方差都能保持在一個較低值。而本文的目的正是要介紹一下有關於交叉驗證(Cross-validation)的概念。

什麼是交叉驗證?

「交叉驗證」是一種模型驗證技術,可用於評估統計分析(模型)結果在其它獨立數據集上的泛化能力。它主要用於預測,我們可以用它來評估預測模型在實踐中的準確度。

交叉驗證的目標是定義一個數據集,以便於在訓練階段(例如,驗證數據集)中測試模型,從而限制模型過擬合、欠擬合等問題,並且幫助我們了解模型在其它獨立數據集上的泛化能力。值得一提的是,驗證集和訓練集必須滿足獨立同分布條件,否則交叉驗證只會讓結果變得更加糟糕。

為什麼交叉驗證會有這些助益?什麼是過擬合/欠擬合?

而最佳的模型應該能夠在訓練集和測試集上都表現得很好。

不同的驗證策略

通常,依據數據集中分割方式的不同,會有不同的驗證策略。

訓練測試集劃分/Holdout 驗證 —— 組數為 2

在該策略中,我們簡單地將數據集劃分成兩組:訓練集和測試集,並且要求訓練集和測試集之間的樣本不存在任何重疊,如果存在重疊,那麼驗證手段將失效。在準備發布最終模型之前,我們可以在整個數據集上重新訓練模型,而不需要更改任何超參數。

但是這種劃分方式存在一個主要的缺陷:

如果我們的劃分方式並不是隨機的呢?比如,我們數據的某個子集只有來自於某個州的人,或者某個子集中只含有某一特定水平收入的員工,又或者子集中只含有女性或特定年齡的人,這時我們該怎麼辦?儘管我們一直在極力避免,但是這些情況都將導致模型的過擬合,因為此時無法確定哪些數據點會出現在驗證集中,並且針對不同的數據集,模型的預測結果也可能完全不同。因此,只有當我們擁有充足的數據時,這種做法才是合適的。

Python 的實現方式:sklearn.model_selection.train_test_split

k 分劃分 —— 組數為k

由於永遠不會有充足的數據來訓練模型,因此如果將數據集中的某一部分劃分出來用於驗證還會導致模型出現欠擬合的問題。由於訓練數據樣本減少,我們的模型面臨著丟失掌握重要模式/趨勢機會的風險,從而增加偏差引起的誤差。因此,我們需要一種方法,它既能夠為訓練模型提供充足的數據樣本,又能夠為驗證步驟保留一定數量的數據。k 分(k-fold)交叉驗證正是我們所需要的。

k 分交叉驗證可以看做是執行了多次的簡單二分劃分驗證,然後我們在執行了 k 次不同的簡單劃分驗證之後繼續簡單地將得分進行平均。數據集中的每個數據點只能在驗證集中出現一次,並且在訓練集中出現 k-1 次。這種做法將大大減輕欠擬合現象,因為我們使用了幾乎所有的數據來訓練模型,同時還能顯著減少過擬合現象,因為大部分數據也被用來做驗證。

當我們的數據量較小時,或者在不同的劃分數據集中,我們的模型性能或者最優參數存在較大的區別時,k 分交叉驗證是一種很好的選擇。通常情況下,我們設置 k=5 或 k=10,這些值來自於經驗總結,大量實驗證明當 k 取這些值時,驗證結果不會存在過高的偏差或者方差。

Python 實現代碼:sklearn.model_selection.KFold

留一法 —— 組數訓練數據集大小

當 k 等於數據集中的樣本數時,留一法(Leave one out)實際上可以看做 k 分交叉驗證的一個特例。這意味著每次使用 k-1 個樣本作為訓練樣本而剩下 1 個樣本作為驗證樣本,然後照此遍歷數據集。

如果我們的數據量非常小並且模型的訓練速度非常快,那麼可以考慮該方法。

Python 實現代碼:sklearn.model_selection.LeaveOneOut

額外補充 —— 分層法(Stratification)

通常,在使用訓練集/測試集劃分或者是 k 分交叉驗證的時候,我們會將數據集進行隨機重排,以便於得到隨機的訓練/驗證集劃分。在這種情況下,可以將不同的目標分布應用於不同的劃分區域中。通過分層法,當我們在分割數據時,我們可以在不同的劃分區域中獲得相似的目標分布。

該方法對以下情況有效:

通常而言,對於一個類別平衡的大型數據集,分層劃分法和簡單的隨機劃分基本一樣。

什麼時候使用?

如果我們有充足的數據,並且對於不同的劃分方式,我們都能獲得相近的成績以及最優參數模型,那麼訓練集/測試集二分劃分是一種不錯的選擇。而如果恰恰相反,也就是對於不同的劃分方式,模型的測試成績和最優參數都存在著較大的差異時,我們可以選擇 k 分交叉驗證。如果數據總量非常少,則可以考慮使用留一法。此外,分層法有助於使驗證結果更加穩定,並且對於小型且類別不平衡的數據集尤其管用。

k 分交叉驗證的 k 該取多少?

當 k 的取值越大時,由偏差導致的誤差將減少,而由方差導致的誤差將增加,此外計算的代價也將上升。顯然,你需要更多的時間來計算,並且也會消耗更多的內存。

當 k 的取值越小時,由方差導致的誤差將減少,而由偏差導致的誤差將增加。此外,這時所需的計算資源也將減少。

針對大型數據集的時候,我們通常將 k 設置為 3 或者 5,但是對於小型數據集我們還是建議採用留一法。

總結

交叉驗證是數據科學家評估模型有效性的一個非常有用的工具,特別是用於解決過擬合和欠擬合問題。此外,在確定模型最優超參數問題上,它也是非常有幫助的。

Via 《Cross-Validation》,由雷鋒網 AI 科技評論編譯。

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 機器學習乾貨|交叉驗證(Cross Validation)詳解
    交叉驗證的目的常見的交叉驗證形式簡單交叉驗證:將原始數據隨機分為兩組,一組作為訓練集,一組作為驗證集,利用訓練集訓練分類器,然後利用驗證集驗證模型一般來說,簡單交叉驗證並非一種交叉驗證,因為數據並沒有交叉使用。隨機從最初的樣本中選出部分,形成交叉驗證數據,而剩餘的就當作訓練數據。一般來說,少於原本樣本三分之一的數據被選做驗證數據。優點:好處的處理簡單,只需隨機把原始數據分為兩組即可!
  • 嵌套交叉驗證(Nested cross-validation)
    傳統交叉驗證和嵌套交叉驗證的區別在開始分享嵌套交叉驗證前,首先以K-Fold為例,區分K-Fold交叉驗證和嵌套K-Fold交叉驗證的區別,這是我剛始學習時的困惑點:(1)K-Fold交叉驗證:只有一個loop(循環),即內層循環(a) 將數據集切分為k-摺疊;
  • K折交叉驗證實例
    交叉驗證思想交叉驗證用於模型選擇,可以更好的來估計模型的試驗誤差。
  • 用交叉驗證識別謠言,可能你都做錯了!
    這件利器就是——交叉驗證。關於交叉驗證,你可能會說:這沒什麼稀奇的啊,不就是同一件事獲取它不同緯度的信息來進行相互檢驗佐證嘛。如果你認為這件利器很容易上手,那麼你可能只練了個皮毛,甚至都練錯了!那麼,真正的交叉驗證是什麼?
  • 交叉驗證的R語言實現
    在之前的內容泛化誤差和留出法,交叉驗證中,我們介紹了泛化誤差的概念以及用以估計泛化誤差的留出法、留一法和K折交叉驗證法,本節我們討論如何在R語言中進行實現。最後,我們考慮K折交叉驗證。對此,我們也採用了兩種方法。第一個程序命令是按照K折交叉驗證的思路來編寫的,容易知道這種思路也適用於其他問題的模型評價和模型選擇,而第二個程序則採用cv.glm,此命令專門針對廣義線性回歸模型。
  • 浙大交叉學習培養計劃受熱捧 - 浙江日報
    本報杭州12月11日訊 (記者 張冬素) 浙江大學交叉學習培養計劃在求是園裡受到熱捧,不僅青年教師重新當起學生,一些老教授也坐進課堂學習新知識。每星期一晚上6時半,今年已61歲、一頭銀髮的管理系教授馬慶國都會準時坐在物理系的教室裡學習認知科學。
  • 走近人類圖丨輪迴交叉解讀
    再度與輪迴交叉的連接可以幫助我們安定下來,重新找回內在的力量個性太陽、地球 + 設計太陽、地球形成了一個交叉(十字)就是我們的輪迴交叉這4個神秘的數字描述了可能的人生藍圖> 你的輪迴交叉所在象限的特點你的輪迴交叉中個性太陽閘門的特點從「人生角色」解讀你的輪迴交叉從你的人類圖設計(人生類型、策略、內在權威、通道、閘門等)提供體驗輪迴交叉的建議收費價格:CNY520/人解讀時長:30分鐘解讀方式
  • 清華交叉信息院曾堅陽研究組發文闡釋深度學習解碼蛋白質翻譯過程
    清華交叉信息院曾堅陽研究組發文闡釋深度學習解碼蛋白質翻譯過程 清華新聞網9月29日電  9月27日,清華大學交叉信息研究院曾堅陽研究組在《細胞》子刊《細胞·系統》(Cell Systems)發表了題為《利用深度學習分析核糖體停滯現象與蛋白質翻譯動態》(「Analysis of Ribosome Stalling and Translation
  • 北京:加大檢測篩查力度 人員標本要由兩家機構平行檢測、交叉驗證
    對集中觀察人員第3天和第7天時採集鼻咽拭子進行核酸檢測;14天期滿時採集鼻咽拭子、糞便標本及環境標本進行核酸檢測,人員標本要由兩家機構開展平行檢測交叉驗證,在滿足「三樣本陰性」(兩家檢測機構人員標本陰性+環境標本陰性)要求後方可離開;對14天集中觀察期滿後進行7天居家或集中觀察、7天健康監測的人員,期滿時採集鼻咽拭子、糞便標本及環境標本進行核酸檢測,結果呈陰性的方可解除健康管理措施。
  • GoogLeNet神經網絡的複雜交叉路口識別方法
    由圖9可知GoogLeNet神經網絡模型對於複雜交叉路口樣本測試集的最終分類loss值為0.0756,accuracy值為0.9652,同時可以看出該神經網絡模型在訓練過程中基本上得到了很好的收斂。GoogLeNet網絡模型對路網中複雜交叉路口的識別準確值accuracy為0.9652,所以說明GoogLeNet網絡模型對複雜交叉路口的深層次模糊特徵能夠進行有效的學習。
  • 谷歌最新驗證系統又雙叒被「破解」了,這次是強化學習
    機器之心報導機器之心編輯部自推出以來,谷歌的 reCaptcha 驗證系統就被頻繁破解,因此谷歌不得不一次又一次地迭代升級。現在,reCaptcha 已經升級到了 v3,由原來的用戶交互直接升級成了給用戶打分。但再強的系統也會有漏洞,來自加拿大和法國的研究者另闢蹊徑,用強化學習「破解」了這個最新的驗證系統。
  • CVPR2017精彩論文解讀:結合序列學習和交叉形態卷積的3D生物醫學...
    下文是宜遠智能的首席科學家劉凱對此次大會收錄的《結合序列學習和交叉形態卷積的3D生物醫學圖像分割》(Joint Sequence Learning and Cross-Modality Convolution for 3D Biomedical Segmentation)一文進行的解讀。
  • 交叉信息研究院曾堅陽研究組提出從大規模科學文獻中提取生物醫學...
    清華新聞網6月10日電 近日,清華大學交叉信息研究院曾堅陽研究組成功開發了從大規模科學文獻中提取生物醫學實體關係的深度學習模型,相關研究成果「基於機器學習的大規模生物醫學關係自動抽取技術」(A novel machine learning framework for automated biomedical relation extraction
  • 基於GaN電晶體的特性測量交叉導通方案
    在半橋上測量高邊VGS是診斷電晶體交叉導通的一種傳統方法,對於基於GaN的設計來說是一項艱巨的任務。典型的解決方案是使用高成本的測量設備,這並不總是產生有用的結果。本文介紹了一種利用GaN電晶體的獨特特性測量交叉導通的簡單而經濟的方法。 在升壓或降壓變換器和雙向變換器中用於同步整流的半橋和全橋配置為高、低壓側電晶體使用互補驅動信號。
  • 李玫瑾:孩子學習總「三分鐘」熱度?培養專注力,試試這3個方法
    自從孩子上小學,孩子的學習成績可以說是家長每天最關心的事情了,為了讓孩子學習好,有的家長給孩子報補課班,有的家長每天下班都陪孩子學習。她曾說過:「專注力是孩子學習和生活的基本能力,專注力的好與壞直接影響孩子的認知和學業成績的高低」。所以,父母要想讓孩子學習成績優異,專注力的培養是必不可少的。針對於孩子學習時總是「三分鐘」熱度,家長卻沒有好的辦法培養孩子專注力,別急,李玫瑾教授為你支招,下面就讓我們一起來了解下吧!
  • Facebook 爆錘深度度量學習:該領域13年來並無進展!網友:滄海橫流...
    領域的進展實際並不存在在列舉了一系列技術方法之後,研究員開始針對各種損失函數進行實驗,研究結果表明:通過交叉驗證對超參數進行適當調整時,大多數方法的性能相似。不合理的評價指標:為了體現準確性,大多數度量學習論文都會報告Recall@K、歸一化相互信息(NMI)和F1分數。但這些一定是最好的衡量標準嗎?如下圖三個嵌入空間,每一個recall@1指標評價都接近滿分,而事實上,他們之間的特徵並不相同。此外,F1和NMI分數也接近,這在一定程度上說明,其實,這幾個指標並沒帶來啥信息。
  • 理解熵、交叉熵和交叉熵損失
    交叉熵損失是深度學習中應用最廣泛的損失函數之一,這個強大的損失函數是建立在交叉熵概念上的。當我開始使用這個損失函數時,我很難理解它背後的直覺。在google了不同材料後,我能夠得到一個令人滿意的理解,我想在這篇文章中分享它。
  • 專欄三分鐘了解薄膜沉積之物理氣相沉積技術
    快節奏的社會,時間稍縱即逝,三分鐘可以做些什麼呢?
  • 《極簡清潔驗證》
    籃球推出《極簡清潔驗證》,本書上下兩篇。
  • 作業幫一課2.0發布 重新定義在線學習
    7月9日,作業幫一課2.0版本正式發布,上線「app+小程序+web」三端聯動新體驗,推出浣熊英語、科學素養等新課程,以「在家學的名師直播課」品牌理念「重新定義學習」。