預測模型的表現怎麼評估?模型評估嚴謹程度的4個等級

更新於 2023/08/01閱讀時間約 7 分鐘

科學是以嚴謹的態度提出證明的過程。資料科學作為「科學」的一份子,如何達到「嚴謹」?有兩個必要條件,其一是客觀的評估方法,另一個可重複性的結果(reproducibility)​。本文逐步說明在建立模型上,如何達成科學的「嚴謹」要求,以盡可能確保應用模型後的有效性,以及在建立模型時常被忽略的地方。

如果忘記什麼是預測性資料分析,可以在資料分析的三大目的中找到相關說明,並在資料分析的流程中可以看到建立模型在資料分析流程中的位置。


內容

  • 訓練集一票玩到底
  • 切出測試集,鎖起來
  • 訓練集再分割驗證集並交叉驗證
  • 把特徵工程納入交叉驗證中
  • 依嚴謹性分級
  • 結論
  • 最後



模型與評估效果的目的

預測性資料分析的重點在於盡可能準確預測,並且經過嚴謹的評估,確保上線後同樣可以精準預測。那麼,在建立模型的時,如何「盡可能」客觀評估模型效果呢?


訓練集一票玩到底

一個初步的作法,是將總共1,000筆資料來訓練模型,接著預測這1,000資料的結果,來看模型的是否學得夠好。不過這樣有「資訊洩漏(Information Leakage)」的狀況,指的是用來驗證的資料訊息,被透露在模型訓練的過程之中。也就是說,模型可能只是把訓練資料的答案背起來,如果換了考題(其他用來驗證的資料),模型的表現就不一定好,而這就是「過度配適(over-fitting)」,指的是模型對於用來訓練的資料表現很好,但是在測試資料上表現卻相對差了取多。而且,原始作法並無法事先評估模型在未來新資料預測的準確率上表現如何,貿然部署上線應用,模型預測不如預期的風險較高。

所有資料進行特徵工程、訓練和驗證

所有資料進行特徵工程、訓練和驗證


切出測試集,鎖起來

那麼,有什麼方式可以相對客觀的評估模型預測結果?可以將總共1,000筆資料,在還沒開始訓練這些資料時,先將其中的200筆分割出來並鎖在保險箱裡(測試集,testing set),用剩下的800筆訓練模型(訓練集,training set),完成模型訓練後,預測這200筆資料的結果,以驗證模型準確率。這樣的方式的好處,在於我們透過僅有的1,000資料,就可以預估對於模型沒看過的資料,它的預測表現如何。但是,當我們發現模型對於測試集預測結果表現不好,我們就會對此調整模型的超參數(hyperparameters),經過反覆多次的「調整超參數→訓練模型→測試預測結果→調整超參數→...」的循環,會變成將模型訓練成測試集的形狀,也就是在測試集上過度配適;對於未來真的實際上線後,預測結果仍然未知。

所有資料進行特徵工程,切分訓練集訓練模型、測試集驗證結果

所有資料進行特徵工程,切分訓練集訓練模型、測試集驗證結果


訓練集再分割驗證集並交叉驗證

有什麼方式,讓我們可以調整模型超參數,同時避免在測試集上過度配適嗎?想法很單純,就如同切出測試集一樣,不過這次是將原本800筆的訓練集資料,在訓練過程中,分為訓練集和驗證集(validation set),用前者訓練模型、後者評估不同超參數的表現結果。但如果從頭到尾都是用800筆中,同樣的640筆訓練、另外的160筆驗證,這樣最後模型調校出來超參數,變成在驗證集上過度配適,對於測試集(保險箱中的那200筆)的預測結果,可能一樣不符預期!

這時候需要就需要引入交叉驗證(cross validation)!也就是說,假設我們把原本的 800 筆資料,隨機切成 5 等份,在給定一組超參數的情況下,每次以其中 4 份訓練模型,另 1 份評估,這樣做了 5 次之後,將 5 次模型評估的結果平均,作為該組超參數的表現結果。如此一來,每 1 份(或是說每 1 筆)資料,都被用來訓練和評估過,沒有浪費任何資訊和偏誤,而模型也不是針對特定一組資料選取超參數,可以避免過度配適的狀況。這樣完美地避免資訊洩漏和過度配適了,是嗎?

訓練集和驗證集一起進行特徵工程,並在驗證集交叉驗證、測試集最終驗證結果

訓練集和驗證集一起進行特徵工程,並在驗證集交叉驗證、測試集最終驗證結果


把特徵工程納入交叉驗證中

模型訓練不只是要針對超參數調整,在特徵工程(feature engineering)上,有時影響力更勝模型的超參數。特徵工程指的是,在資料面上,將原始資料轉換(transform)、組合(combine)、萃取(extract)或是選擇(select)的工作,目的在於使資料在建模中有更大的資訊量,以利模型學習。例如:將身高、體重的資料,計算為身體質量指數(BMI),為了使模型更有效學習以預測肥胖的風險。

我們在訓練模型中,往往會將資料進行最大最小標準化,使變數範圍介於0到1之間,利於模型收斂(或是說「利於模型完成訓練」)。此時,在沒有分割訓練集和驗證集的情況下進行特徵工程,例如訓練集的BMI範圍是16.2到25.3,而驗證集為16.5到25.7,則變數範圍的上限就會是驗證集洩漏資訊的結果。

所以,需要將特徵工程等流程,在執行交叉驗證時應用。也就是說,切成 5 等份的交叉驗證過程中,使用其中 4 份訓練模型之前的特徵工程時,要以這 4 份執行的例如上下界範圍作為範圍,並應用到另 1 份的驗證上,以此類推,避免特徵工程的資訊洩漏。

僅在每個Fold中的訓練集進行特徵工程,並將特徵工程過程套用至驗證集挑選超參數、測試集驗證結果

僅在每個Fold中的訓練集進行特徵工程,並將特徵工程過程套用至驗證集挑選超參數、測試集驗證結果


依嚴謹程度分級

透過上述的 4 個嚴謹程度的邏輯發展階段,可以分成 4 個等級。

  • 等級4:全資料集進行特徵工程、訓練模型及調整超參數;以全資料集測試。
  • 等級3:全資料集切分訓練集和測試集,以訓練集進行特徵工程、訓練模型及調整超參數;以測試集測試模型結果。
  • 等級2:全資料集切分訓練集和測試集,以訓練集進行特徵工程、訓練模型並執行交叉驗證找出最佳超參數;以測試集測試模型結果。
  • 等級1:全資料集切分訓練集和測試集,以訓練集訓練模型並執行交叉驗證,而在每一次交叉驗證時,分別執行特徵工程,找出最佳超參數;以測試集測試模型結果。
將4個等級的圖放一起方便讀者比較

將4個等級的圖放一起方便讀者比較

在社會科學的碩博士論文相當常見等級 4 的作法,例如:透過所有資料直接執行多元線性迴歸並解釋結果,但這並非表示這些研究不夠嚴謹或成果不重要,而是這些碩博士論文的目的,在於提出一個具有足夠解釋能力」的模型

在執行難度上,要達成等級 3 ,可透過一般將資料分割訓練集和測試集的套件(如:sklearn.model_selection.train_test_split),可以很容易達成;等級 2 則是透過交叉驗證的套件(如:sklearn.model_selection.GridSearchCV),也不算困難;等級 1 則是需要能夠組合資料分割、交叉驗證、特徵工程的pipeline(imblearn.pipeline.Pipeline),才可以達成相對嚴謹的評估結果,但若實際了解整個運算流程,其實也是組裝積木的概念,難度也不是相當高。


結論

建立模型的方式相當多元且容易,但模型評估本身就是門學問,如何執行客觀、可靠、有效的嚴謹評估方式,對於模型的部署上線應用至關重要。本文針對模型評估的嚴謹性提供邏輯發展上的推演,藉此說明模型評估嚴謹程度的不同等級,等級切分的依據包含:是否分割測試集、是否交叉驗證執行超參數搜索、是否納入特徵工程於交叉驗證中;文末列出相關的套件,供讀者進一步研究可以如何整合應用。

文中提到「過度配適」和「資訊洩漏」兩個專有名詞。前者幾乎是機器學習或資料分析界中無人不知,但後者卻乏人問津;可是,資訊洩漏的狀況,有時可能才是導致過度配適的根本原因。


最後

本文無意評價許多實務上可能在模型評估上不夠嚴謹的作法,而是提出相對嚴謹的方式供參考,而對於交叉驗證的概念目前也沒有特別說明,讀者可以自行搜尋參考,或是之後有時間的話再另文說明。

如果你有任何建議、想法或問題,都歡迎留言跟我分享,謝謝。

avatar-img
28會員
19內容數
和大家一起看見台灣的資料,包含人口、經濟、社會等相關議題。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
李政旺的沙龍 的其他內容
資料分析就像廚師料理一樣,但你知道可以分成哪9大流程嗎?一起看看資料分析流程和廚師料理有多像!
資料分析三個主要的目的分別是探索性、解釋性及預測性。看看他們在方法及複雜度上有什麼差異,以及適用的情境。
在資料科學中常可以聽到「權重」,可藉由專家經驗和機器學習取得「權重」,但他們差別是什麼?在透過演算法決定權重的想法相對盛行的現今,又如何整合兩種途徑的結果?
決定「分析單位」是資料分析執行前,最需要確認的項目;決定了「分析單位」等同於決定分析結果數據呈現方式、解讀和應用方法。讓我們一起了解「分析單位」到底是什麼?什麼會決定分析單位?以及沒有弄清楚分析單位會有什麼影響?
資料分析就像廚師料理一樣,但你知道可以分成哪9大流程嗎?一起看看資料分析流程和廚師料理有多像!
資料分析三個主要的目的分別是探索性、解釋性及預測性。看看他們在方法及複雜度上有什麼差異,以及適用的情境。
在資料科學中常可以聽到「權重」,可藉由專家經驗和機器學習取得「權重」,但他們差別是什麼?在透過演算法決定權重的想法相對盛行的現今,又如何整合兩種途徑的結果?
決定「分析單位」是資料分析執行前,最需要確認的項目;決定了「分析單位」等同於決定分析結果數據呈現方式、解讀和應用方法。讓我們一起了解「分析單位」到底是什麼?什麼會決定分析單位?以及沒有弄清楚分析單位會有什麼影響?
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
我是個愛收集各種玩具、組裝模型、卡牌遊戲、桌遊及電動玩具的人,或許是為了彌補自己小時候家裡沒辦法買玩具的缺憾吧。 等出了社會開始有收入之後,看到什麼新奇的商品都想要購買,而在玩具這塊,我買的比其他濫買的物品都還要多,曾經有一度在我的房間裡疊成一座小山。
Thumbnail
結論來說,《四樓的天堂》不過不失,在十集的篇幅中把多線敘事平緩的處理完畢,但「平緩」也指沒有太多起伏,可以預期,甚至乏味。從較寬容的觀點來看,《四樓》也許嘗試一種「寫實」的影劇拍法,不想落入類型或八點檔窠臼,想要直面現代人的心靈和身體問題。「但我認為四平八穩的拍攝手法和敘事模式,是此劇的問題。
Thumbnail
日期:2022.07.27 作者:FAHAHA|翁順法 大部分情境的表達可以歸類成三種目的:溝通、說明、說服,而這三類又可以濃縮成文中這張表達核心模型。 表達核心模型分成兩階段、六步驟。首先,我們要先透過釐清目的、分析聽眾、發想組織內容來建立表達橋樑,接著依序破解聽眾不想聽、聽不懂、記不住的三大阻礙
最近工作的關係,一直在學習資料科學。 分享一個今天有被震驚到的觀念:
Thumbnail
〔模型改造〕GOODSMILE 絕對無敵雷神王-重裝版
Thumbnail
跟初音模型結婚才不是宅宅的專利, 來聽我說說鳥鳥愛上模型的奇葩事蹟XD
Thumbnail
NAPL是一個會員分群模型,他可以協助品牌了解會員分布的樣貌,追蹤會員經營的成效,並針對不同群的會員,設計會員行銷活動。
Thumbnail
2018年2月6日可能受到前一晚美股下跌千點的帶動, 台指期盤中有較往日相對重的下跌, 槓桿程度過度的賣方被掃出場; 不少維持率低於25%的交易人被強制平倉砍單, 由於目前期商的做法是 --- 不論賺賠部位而整戶砍出, 可能引發了類似蝴蝶效應的結果, 讓邏輯上(2/21結算日)應該賺錢的賣買權也受傷
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
我是個愛收集各種玩具、組裝模型、卡牌遊戲、桌遊及電動玩具的人,或許是為了彌補自己小時候家裡沒辦法買玩具的缺憾吧。 等出了社會開始有收入之後,看到什麼新奇的商品都想要購買,而在玩具這塊,我買的比其他濫買的物品都還要多,曾經有一度在我的房間裡疊成一座小山。
Thumbnail
結論來說,《四樓的天堂》不過不失,在十集的篇幅中把多線敘事平緩的處理完畢,但「平緩」也指沒有太多起伏,可以預期,甚至乏味。從較寬容的觀點來看,《四樓》也許嘗試一種「寫實」的影劇拍法,不想落入類型或八點檔窠臼,想要直面現代人的心靈和身體問題。「但我認為四平八穩的拍攝手法和敘事模式,是此劇的問題。
Thumbnail
日期:2022.07.27 作者:FAHAHA|翁順法 大部分情境的表達可以歸類成三種目的:溝通、說明、說服,而這三類又可以濃縮成文中這張表達核心模型。 表達核心模型分成兩階段、六步驟。首先,我們要先透過釐清目的、分析聽眾、發想組織內容來建立表達橋樑,接著依序破解聽眾不想聽、聽不懂、記不住的三大阻礙
最近工作的關係,一直在學習資料科學。 分享一個今天有被震驚到的觀念:
Thumbnail
〔模型改造〕GOODSMILE 絕對無敵雷神王-重裝版
Thumbnail
跟初音模型結婚才不是宅宅的專利, 來聽我說說鳥鳥愛上模型的奇葩事蹟XD
Thumbnail
NAPL是一個會員分群模型,他可以協助品牌了解會員分布的樣貌,追蹤會員經營的成效,並針對不同群的會員,設計會員行銷活動。
Thumbnail
2018年2月6日可能受到前一晚美股下跌千點的帶動, 台指期盤中有較往日相對重的下跌, 槓桿程度過度的賣方被掃出場; 不少維持率低於25%的交易人被強制平倉砍單, 由於目前期商的做法是 --- 不論賺賠部位而整戶砍出, 可能引發了類似蝴蝶效應的結果, 讓邏輯上(2/21結算日)應該賺錢的賣買權也受傷