1. 程式人生 > >深度 | 機器學習中的模型評價、模型選擇及演算法選擇

深度 | 機器學習中的模型評價、模型選擇及演算法選擇

作者:Sebastian Raschka

翻譯:reason_W

編輯:周翔

簡介

正確使用模型評估、模型選擇和演算法選擇技術無論是對機器學習學術研究還是工業場景應用都至關重要。本文將對這三個任務的相關技術進行回顧,並就每種技術的理論和實證研究的主要優缺點進行討論。文章還將就機器學習演算法中的超引數調優給出儘可能的建議,用以實現最佳的演算法效果。文中內容涉及很多常用方法,比如模型評估和選擇中的Holdout方法等;介紹了bootstrap技術的不同變體,通過正態逼近得到置信區間來衡量效能估計(performance estimates)的不確定性;在討論偏差-方差(bias-variance)折中方案時,對比了留一交叉驗證法(leave-one-out cross validation)和k-fold交叉驗證法,並提供了在k-fold交叉驗證中最優k值的選擇技巧。

1. 引言:基本模型評價術語和技術

機器學習已經逐漸深入到了我們生活的中心。無論是學術研究還是商業應用,共同的出發點都是希望做出“好”的預測。把模型擬合到訓練資料上是一方面,但怎麼才能知道模型在未知資料上的泛化效能呢?如何針對手頭的問題在不同演算法間選擇出最好的模型呢?模型評估當然不會是機器學習通向的終點。在處理任何資料之前,我們都希望可以提前計劃並針對任務選擇合適的技術。在這篇文章中,我們就將討論這些技術的優劣,並通過一個典型的機器學習工作流程,展示其應用的方法。

1.1 效能估計:泛化效能與模型選擇

機器學習模型的效能估計流程可以分為以下三步:

  1. 將訓練資料輸入到學習演算法中,以學習模型;

  2. 用模型預測測試集標籤;

  3. 計算模型在測試集上的錯誤率,推匯出模型預測精度。

然而,當要實現不同的目標時,模型效能估計就不像我們總結的那樣簡單了。也許我們應該從另一個角度來回答前面的問題:“我們為什麼要關心效能估計?” 理想情況下,模型的估計效能說明了它在未知資料上的表現如何——在機器學習的應用或新演算法的開發中,對未來資料進行預測通常是我們想要解決的主要問題。

通常,機器學習需要大量的實驗才能實現最好的演算法效果,例如,學習演算法的內部引數(所謂的超引數)的調優。由於我們要從這個模型集合中選擇最好的模型,所以就需要找到一種方法來評估不同模型的效能,以便對它們進行排序。除了演算法調優之外,通常我們還需要嘗試多種可以在特定條件下實現最優的單一演算法。在比較不同的演算法時,我們主要關注預測和計算效能。

總結來說,我們進行模型預測效能評估的主要原因有以下三點:

  1. 我們想要估計模型的泛化效能,即模型對未知資料的預測效能。

  2. 我們希望通過調整學習演算法和從給定的假設空間中選擇最佳的執行模型來提高預測效能。

  3. 我們想要確定最適合於手頭問題的機器學習演算法;因此,我們需要比較不同的演算法,從演算法的假設空間中選擇最佳效能的演算法和最佳的執行模型。

儘管上面列出的這三個子任務都需要評估模型的效能,但是卻需要不同的方法。我們將在本文中討論處理這些子任務的不同方法。

模型的絕對效能估計或許是機器學習中最具挑戰性的任務之一。為了方便比較不同模型的效能,我們可以在選擇估計它們的有偏效能(biased performance),當然前提是偏差對所有的模型造成的影響相同。對模型效能的估計偏差並不會影響其相對排名順序。比如有三種模型,其準確率如下:

M2: 75% > M1: 70% > M3: 65%,

即使增加10%的悲觀偏差,仍然不影響排序。

M2: 65% > M1: 60% > M3: 55%。

1.2 假設和術語

模型評估是一個複雜的課題。為了確保不過多地偏離核心資訊,我們會先做一些假設,並列舉一些稍後會用到的技術術語。

i.i.d.(independent and identically distributed): 獨立同分布假設。即所有樣本都是從相同的概率分佈中抽取出來的,並且在統計上相互獨立。但時態資料(temporal date)或時間序列(time-series data)資料不滿足該假設。

監督學習和分類:本文主要討論監督學習,這是機器學習的一個子類。雖然許多概念也適用於迴歸分析,但我們將把重點放在分類上,即將類別目標標籤分配給訓練和測試樣本。

0-1損失和預測準確率:預測準確率可以用正確預測的數量除以樣本總量n得到,其公式可以表達為:

其中錯誤率ERR是資料集S中n 個樣本0-1損失的期望值

0-1損失定義為:

其中是第i個實際的類標籤,是第i個樣本預測的類標籤。我們的目標是學習到一個泛化效能良好的模型,使得其預測準確率最高,或者說作出錯誤預測的概率最低:

其中D是生成的資料集服從的分佈,x是訓練樣本特徵向量,y是對應的標籤。

偏差:在本文中,偏差一詞是指統計偏差(而不是機器學習系統中的偏差)。一般而言,估計值(estimator) 的偏差是期望值與真實值之差。

所以,若偏差,則就是的無偏估計。再準確一點,預測偏差是模型的期望預測準確率和實際預測準確率的差。而我們在訓練集上計算得到的準確率就是絕對準確率的樂觀有偏估計,因為它過高估計了模型的準確率。

方差:方差就是估計值與其期望值的統計方差:

方差是一個模型預測效能變化程度的度量,如果我們多次重複學習過程,就會會發現模型在訓練集上的表現存在小的波動。模型構建過程對這些波動的敏感性越高,方差就越大。

最後,模型、假設、分類器、學習演算法和引數的術語在本文中的定義如下:

目標函式:f在預測建模時,我們需要對特定過程建模,然後去學習或逼近一個特定的未知函式。目標函式f(x)=y就是我們想要對其建模的真實函式f(·)。

假設:假設實際上是一個確定的函式,我們相信(或希望)該函式與我們想要建模的真實函式非常相似。比如在對垃圾郵件進行分類時,我們提出的分類規則可以將垃圾郵件與非垃圾郵件區分開。

模型:在機器學習領域中,假設和模型這兩個術語常常可以互換使用。而在其他領域中,這些術語往往代表有不同的含義:一個假設可以認為是研究人員“有根據的猜測”,而模型則是用來檢驗這個假設的猜想的表現。

學習演算法:我們的目標是學習或逼近目標函式,學習演算法則是一組試圖用訓練資料集對目標函式進行建模的指令。每個學習演算法都會有一個假設空間,即一組可能的假設的集合,這個集合通過系統地描述最終假設(formulating the final hypotheses)對未知的目標函式進行建模。

超引數:超引數是機器學習演算法的調優引數(tuning parameters),例如,邏輯迴歸損失函式中L2懲罰的正則化強度(regularization strength),或決策樹分類器最大深度的設定值。而模型引數則是學習演算法擬合訓練資料的引數——即模型本身的引數。例如,線性迴歸直線的加權係數(或斜率)及其偏差項(這裡指y軸截距)都是模型引數。

1.3 Resubstitution驗證和Holdout方法

Holdout 方法無疑是最簡單的模型評估技術,它可以概括如下:首先,我們把標籤資料集分割成兩個部分:一個訓練集和一個測試集。然後,我們把模型在訓練資料上進行擬合,並預測測試集標籤。正確預測所佔的比例,可以通過比較預測的標籤和測試集的真實標籤計算出來,以此構成我們對模型預測準確率的評估。這裡需要注意的是,我們不在同一個訓練資料集上訓練和評估一個模型(這稱為Resubstitution驗證或Resubstitution評估),因為它通常會帶來由於過擬合而產生的非常樂觀的偏差。換句話說,我們無法判斷模型是僅僅簡單地記住了訓練資料,還是對新的、未知資料進行了泛化。(另一方面,我們可以把訓練集和測試集準確率的差別看做這種所謂的樂觀有偏估計。)

通常,將資料集拆分為訓練集和測試集是一個簡單的隨機抽樣過程。我們假設每一類所有的資料點都是按照相同的概率分佈得到的。我們隨機選擇三分之二的樣本用作訓練集,三分之一的樣本用作測試集。但這一方法還有兩個問題,我們會在下一節中討論。

1.4 層次化(Stratification)

資料集是從某個概率分佈中抽取的隨機樣本的代表,我們通常假設這個資料集是真實資料的代表。在沒有替換的情況下,進一步的下采樣會改變樣本的統計量(平均值、比例和方差)。這種沒有替換的下采樣對樣本統計量的影響程度與樣本的大小成反比。讓我們來看一個使用Iris資料集的例子,我們將其隨機分為2/3的訓練資料和1/3的測試資料,如圖1所示。(生成此圖形的原始碼可在GitHub上找到)。

圖1:Iris的花類在隨機抽樣的訓練集和測試集上的分佈(三種顏色代表三種花的類別)

當我們將一個標記的資料集隨機分為訓練和測試集時,我們就違反了統計獨立的假設。Iris資料集包括50個Setosa, 50個Versicolor,,和50個Virginica;花的種類均勻分佈:

  • 33.3% Setosa

  • 33.3% Versicolor

  • 33.3% Virginica

如果一個隨機的函式將2/3的花(100)分配給訓練集,1/3的花(50)分配給測試集,它可能會產生以下結果(如圖1所示):

  • 訓練集:38Setosa, 28Versicolor, 34Virginica

  • 測試集:12Setosa, 22Versicolor, 16Virginica

假設Iris資料集是真實種群的代表(比如假設Iris flower在自然界是均勻分佈的),我們就建立了兩個非均勻類分佈的不平衡資料集。學習演算法用於學習模型的類別比例為“38% / 28% / 34%”。用於評估模型的測試資料集也不平衡,更糟的是,它在“相反的”方向上是平衡的:“24% / 44% / 32%”。除非學習演算法對這些干擾完全不敏感,否則結果會很不理想。如果一個數據集在隨機抽樣之前有很高的類別不平衡,那麼問題就更嚴重了。在最壞的情況下,測試集甚至不包含任何少數類的樣本。因此,推薦的做法是用層次化的方式劃分資料集。在這裡,層次化僅僅意味著我們隨機地劃分一個數據集使得其子集(訓練集和測試集)可以正確地表示每個類——換句話說,層次化是一種保持類別在所得子集中的原始比例的方法。

需要指出的是,以非層次化的方式下隨機抽樣,在使用相對較大和類別較平衡的資料集時通常不是一個大問題。然而,在我看來,層次化重取樣在機器學習應用中通常是有益的。此外,層次化抽樣非常容易實現,Ron Kohavi為此提供了經驗性的證據[Kohavi, 1995],層次化也有助於k-fold交叉驗證中方差和偏差的估計。

1.5 Holdout驗證

圖2 Holdout驗證方法的視覺化總結

圖2提供了Holdout驗證方法的視覺化總結。下面我們將詳細討論這個方法的優點和缺點。

步驟1 :首先,我們將可用的資料隨機分為兩個子集:一個訓練集和一個測試集。對模型來說,測試集代表未知資料;還有一點是,當我們估計泛化效能時,為了避免引入偏差,測試集只能使用一次。通常情況下,我們將2/3的資料分配給訓練集,1/3的資料分配給測試集。其他常見的訓練/測試分割是60/ 40,70 /30,或80/20 ——如果資料集比較大的話,甚至能到90/10。

步驟2 :在獲得測試樣本之後,我們需要選擇一個適合給定問題的學習演算法。從圖2可以看到超引數值,超引數是我們學習演算法的引數。我們必須手動指定這些超引數值——和實際模型引數不同,學習演算法不會自動從訓練資料學習這些引數。由於在模型擬合過程中沒有學習超引數,所以我們需要針對任務進行一些“額外的過程”或“外部迴圈”來分別優化這些引數——這種Holdout方法是病態的。因此,目前我們必須使用一些固定的超引數值——如果是用現有的機器學習庫,我們可以使用現成的預設引數或根據直覺設定引數值。

步驟3:學習演算法在前面的步驟中擬合一個模型後,下一個問題是:生成模型的效能到底有多“好”?這就是獨立測試集發揮作用的地方。由於學習演算法還沒有“見過”這個測試集,所以它應該對未知資料給出一個相對公正的估計。現在,我們使用模型來對這個測試集進行類標籤預測。然後,我們將預測的類標籤與“ground truth”(真實的類標籤)進行比較,以估計模型的泛化準確率或者錯誤率。

步驟4:最後,我們得到了我們的模型對未知資料的準確率的估計。所以,我們沒有理由再在演算法中保留測試集了。因為我們假設我們的樣本是i.i.d.。沒有理由假定模型在提供所有可用資料之後會表現得更糟。根據經驗,如果演算法使用更多的資訊資料——假設它還沒有達到效能上限,那麼模型將具有更好的泛化效能。

1.6 悲觀偏差

第1.3節(Resubstitution驗證和Holdout方法)介紹了當資料集被分割為單獨的訓練和測試集時會遇到的兩種問題。其中第一個問題是破壞了資料獨立性和在下采樣(在第1.4節中討論)中改變了類比例。在Holdout驗證方法(第1.5節)部分,我們討論了在對資料集進行下采樣時遇到的第二個問題:步驟4提到了模型的容量,以及額外的資料是否有用。首先說容量問題:如果一個模型還沒有達到它的容量,效能估計將偏向悲觀。這假設演算法如果得到了更多的資料,可以學習到一個更好的模型——通過分離資料集的一部分進行測試,我們就會保留有價值的資料(例如,測試資料集)來估計泛化效能。

為了解決這個問題,在估計泛化效能(參見圖2步驟4)之後,可以將模型與整個資料集相匹配(參見圖2步驟4)。但是,使用這種方法,我們無法估計其對自擬合模型的泛化效能,因為我們現在已經“消耗”了測試資料集。在現實的應用程式中,我們無法避免這種進退兩難的境地,但我們應該意識到如果只有部分資料集,也就是訓練資料集,用於模型擬合(尤其是影響模型適合相對較小的資料集),我們的估計泛化效能可能表現的偏向悲觀。

1.7 正態逼近置信區間

利用第1.5節中描述的Holdout方法,我們計算了模型泛化效能的一個點估計結果(point estimate)。當然,這一估計的置信區間不僅在某些應用中具有更豐富的資訊和可取性,而且也可能對特定的訓練集/測試集劃分相當敏感(比如方差很大時)。計算模型預測精度或計算誤差置信區間的一種簡單方法是通過所謂的正態逼近。在這裡,我們假設預測結果會遵循一個正態分佈,然後根據中心極限定理計算單次訓練-測試劃分的平均值的置信區間。我們計算預測精度如下:

其中L(·)為0-1損失函式(式3),n表示測試資料集中的樣本個數。表示對第i個樣本的預測類別,表示第i個樣本的真實類別。因此,我們現在可以把每次預測都看成伯努利實驗,正確預測的次數X服從一個實驗樣本數為n∈N,實驗次數為 k=0,1,2,...,n,成功概率為p∈[0,1]的二項分佈X~(n,p):

其中

現在,預期的成功次數為μ=np,或者更具體地說,如果模型有50%的成功率,那麼40次預測的期望成功次數為20次。估計方差為:

標準差為: 

因為我們更感興趣的是成功的平均次數,而不是其絕對值,所以可以計算其準確率估計值的方差:

相應的標準差為:

通過正態逼近,我們可以得到預測的置信區間:

其中是誤差分位數和z是標準正態分佈的分位數。置信區間為95%(α=0.05)時,z = 1.96。

然而,在實際操作中,最好還是通過多次劃分訓練-測試集,計算置信區間的平均估計。還一個有趣的結論是,測試集中樣本較少時,方差會變大(參見分母中的n),從而擴大置信區間。

總結

本節我們介紹了在監督機器學習中模型評估的一般概念。其中Holdout方法可以用於評估模型在未知資料上的泛化效能。Holdout方法需要首先將資料集分成訓練集和測試集兩部分。演算法首先在訓練集資料上進行學習構建模型,然後對所得模型在測試集資料上的預測效能進行評估。在測試集上的效能就可以用於估計模型對未知資料的泛化效能。此外,我們還簡要介紹了正態逼近,在一定假設的前提下,可以通過正態逼近計算出基於單個測試集的效能估計的不確定性。下一節中我們將詳細討論置信區間和估計不確定性。

2 Bootstrapping 和不確定性

2.1 概述

本節將向大家介紹一些先進的模型評估技術。我們將首先討論模型效能估計的不確定性以及模型的方差和穩定性。之後將討論模型選擇的交叉驗證技術。

2.2 重取樣

模型估計有偏差也有方差。而Resubtitution 評估(用同樣的訓練集對模型進行評估)有很高的樂觀偏差。反之,將資料集的很大部分資料作為測試集很容易為評估帶來悲觀偏差。隨著測試集樣本數量的減少,悲觀偏差會降低,但效能估計方差卻會增加。圖3展示了方差和偏差直接的關係。

相關推薦

深度 | 機器學習模型評價模型選擇演算法選擇

作者:Sebastian Raschka翻譯:reason_W編輯:周翔簡介正確使用模型評估、模

機器學習的邏輯迴歸模型簡介

邏輯迴歸(Logistic Regression)是機器學習中的一種分類模型,由於演算法的簡單和高效,在實際中應用非常廣泛。本文作為美團機器學習InAction系列中的一篇,主要關注邏輯迴歸演算法的數學模型和引數求解方法,最後也會簡單討論下邏輯迴歸和貝葉斯分類的關係

機器學習)如何評價迴歸模型?——Adjusted R-Square(校正決定係數)

在分類模型中,評價輸出相對簡單,有“錯誤率”、“混淆矩陣(confusion matrix)”、“正確率(precision)”、“召回率(recall)”、ROC曲線等等。但迴歸模型怎樣評價呢? 在一個迴歸預測結束後得到一串預測結果Y_predict。另有真

機器學習幾個常見模型的優缺點

樸素貝葉斯:優點:對小規模的資料表現很好,適合多分類任務,適合增量式訓練。 缺點:對輸入資料的表達形式很敏感(連續資料的處理方式)。 決策樹:優點:計算量簡單,可解釋性強,比較適合處理有缺失屬性值的

機器學習評價指標--1[F,P,R]

機器學習中的評價指標 關於這一部分,我將在遇到的時候,進行簡要的說明和介紹,之講解最重點的部分,其它的可以查閱相關文獻和博主的文章。 1.關於 P、R 值 這應該是機器學習中最常用的兩個統計量了,我們要計算它,無非就要計算混淆矩陣,最簡化的版本是下面的4項版本

機器學習目標函式損失函式以及正則項的通俗解釋

目錄: 前言: 1、什麼是目標函式? 定義是:指所關心的目標與相關的因素的函式關係。舉個例子,假如我們想要預測公司樓下手抓餅店明天能賣多少張手抓餅,已知過去10天每天賣多少,以及每天的天氣情況,是否有節假日,和手抓餅店老闆和老闆娘的感情狀況,

機器學習評價指標和應用場景

目錄 常見統計量 一般對於一個二分類問題,需要統計預測得到的正負樣本的個數和預測成功和失敗的樣本個數 True: 預測正確的樣本數 False: 預測錯誤的樣本數 Positive: 預測為正樣本的樣本數 Negative: 預測為負樣本的樣本

機器學習(5)資料清洗和特徵選擇

正式進入機器學習啦,這節課還好,意外知道了莊家與賠率的計算(原來莊家真的是穩賺不賠呢,樓主表示很想設賭局去做莊);python庫好強大,Pandas包直接提供資料讀取和處理,Fuzzywuzzy支援字串模糊查詢,可用於字串糾錯;知道了機器學習處理的大概流程;之前

盤點機器學習常見的損失函式和優化演算法

在機器學習中,對於目標函式、損失函式、代價函式等不同書上有不同的定義。通常來講,目標函式可以衡量一個模型的好壞,對於模型的優化通常求解模型的最大化或者最小化,當求取最小化時也稱loss function即損失函式,也稱為成本函式、代價函式。 大多數情況下兩者並不

先驗概率後驗概率似然函數與機器學習概率模型(如邏輯回歸)的關系理解

集中 並且 結果 概率論 但我 evidence logs 硬幣 之前 看了好多書籍和博客,講先驗後驗、貝葉斯公式、兩大學派、概率模型、或是邏輯回歸,講的一個比一個清楚 ,但是聯系起來卻理解不能 基本概念如下 先驗概率:一個事件發生的概率 \[P(y)\] 後驗概

先驗概率後驗概率似然函式與機器學習概率模型(如邏輯迴歸)的關係理解

看了好多書籍和部落格,講先驗後驗、貝葉斯公式、兩大學派、概率模型、或是邏輯迴歸,講的一個比一個清楚 ,但是聯絡起來卻理解不能   基本概念如下   先驗概率:一個事件發生的概率 \[P(y)\] 後驗概率:一個事件在另一個事件發生條件下的條件概率 \[P(y|x

機器學習模型的效能度量方式:混淆矩陣,F1-ScoreROC曲線AUC曲線。

一、混淆矩陣 混淆矩陣也稱誤差矩陣,是表示精度評價的一種標準格式,混淆矩陣的每一列代表了預測類別,每一列的總數表示預測為該類別的資料的數目;每一行代表了資料的真實歸屬類別 ,每一行的資料總數表示該類別的資料例項的數目。每一列中的數值表示真實資料被預測為該類的數目。

機器學習的概率模型和概率密度估計方法VAE生成式模型詳解之二(作者簡介)

AR aca rtu href beijing cert school start ica Brief Introduction of the AuthorChief Architect at 2Wave Technology Inc. (a startup company

機器學習的概率模型和概率密度估計方法VAE生成式模型詳解之一(簡介)

價值 新書 The aar 生成 syn TE keras 第一章 A Gentle Introduction to Probabilistic Modeling and Density Estimation in Machine LearningAndA Detailed

機器學習的概率模型和概率密度估計方法VAE生成式模型詳解之五(第3章 之 EM算法)

ado vpd dea bee OS deb -o blog Oz 機器學習中的概率模型和概率密度估計方法及VAE生成式模型詳解之五(第3章 之 EM算法)

機器學習的概率模型和概率密度估計方法VAE生成式模型詳解之六(第3章 之 VI/VB算法)

dac term http 51cto -s mage 18C watermark BE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

機器學習的概率模型和概率密度估計方法VAE生成式模型詳解之七(第4章 之 梯度估算)

.com 概率 roc 生成 詳解 time 學習 style BE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?機器學習中的概率模型和概率密度估計方法及V

機器學習的概率模型和概率密度估計方法VAE生成式模型詳解之八(第4章 之 AEVB和VAE)

RM mes 9.png size mar evb DC 機器 DG ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

機器學習的概率模型和概率密度估計方法VAE生成式模型詳解之九(第5章 總結)

ces mark TP 生成 機器 分享 png ffffff images ? ?機器學習中的概率模型和概率密度估計方法及VAE生成式模型詳解之九(第5章 總結)

python 機器學習模型評估和調參

劃分 gif osi 最終 http 都沒有 select enume 沒有 在做數據處理時,需要用到不同的手法,如特征標準化,主成分分析,等等會重復用到某些參數,sklearn中提供了管道,可以一次性的解決該問題 先展示先通常的做法 import pandas as