深度概念 模型整合 Ensemble 解析

2021-09-12 21:54:25 字數 1927 閱讀 2112

曾經聽過一句話,」feature為主,ensemble為後」。feature決定了模型效果的上限,而ensemble就是讓你更接近這個上限。ensemble講究「好而不同」,不同是指模型的學習到的側重面不一樣。舉個直觀的例子,比如數學考試,a的函式題做的比b好,b的幾何題做的比a好,那麼他們合作完成的分數通常比他們各自單獨完成的要高。

常見的ensemble方法有bagging、boosting、stacking、blending。

bagging是將多個模型(基學習器)的**結果簡單地加權平均或者投票。bagging的好處在於可以並行地訓練基學習器,其中random forest就用到了bagging的思想。舉個通俗的例子,如下圖:

老師出了兩道加法題,a同學和b同學答案的加權要比a和b各自回答的要精確。

bagging通常是沒有乙個明確的優化目標的,但是有一種叫bagging ensemble selection的方法,它通過貪婪演算法來bagging多個模型來優化目標值。在這次比賽中,我們也使用了這種方法。

boosting的思想有點像知錯能改,每訓練乙個基學習器,是為了彌補上乙個基學習器所犯的錯誤。其中著名的演算法有adaboost,gradient boost。gradient boost tree就用到了這種思想。

我在1.2.3節(錯誤分析)中提到boosting,錯誤分析->抽取特徵->訓練模型->錯誤分析,這個過程就跟boosting很相似。

stacking是用新的模型(次學習器)去學習怎麼組合那些基學習器,它的思想源自於stacked generalization這篇**。如果把bagging看作是多個基分類器的線性組合,那麼stacking就是多個基分類器的非線性組合。stacking可以很靈活,它可以將學習器一層一層地堆砌起來,形成乙個網狀的結構,如下圖:

舉個更直觀的例子,還是那兩道加法題:

這裡a和b可以看作是基學習器,c、d、e都是次學習器。

在實現stacking時,要注意的一點是,避免標籤洩漏(label leak)。在訓練次學習器時,需要上一層學習器對train data的測試結果作為特徵。如果我們在train data上訓練,然後在train data上**,就會造成label leak。為了避免label leak,需要對每個學習器使用k-fold,將k個模型對valid set的**結果拼起來,作為下一層學習器的輸入。如下圖:

由圖可知,我們還需要對test data做**。這裡有兩種選擇,可以將k個模型對test data的**結果求平均,也可以用所有的train data重新訓練乙個新模型來**test data。所以在實現過程中,我們最好把每個學習器對train data和對test data的測試結果都儲存下來,方便訓練和**。

對於stacking還要注意一點,固定k-fold可以盡量避免valid set過擬合,也就是全域性共用乙份k-fold,如果是團隊合作,組員之間也是共用乙份k-fold。如果想具體了解為什麼需要固定k-fold,請看這裡。

blending與stacking很類似,它們的區別可以參考這裡

E R概念模型

資料庫模型主要分為三類 1.概念模型 用於資料庫設計 2.邏輯模型 實現dbms 3.物理模型 物理層面的儲存方法與訪問方式 關於概念模型中的 e r 模型 概念模型有很多種表示方法其中最為著名的是 p.p.s.chen 於1976年提出的實體 聯絡方法e r 概念模型中的主要概念以及 e r 圖的...

UML概念模型

uml unified modeling language 統一建模語言,為物件導向開發系統的產品進行說明 視覺化 和編制文件的標準語言 物件導向程式設計 物件導向基本概念 物件 類 抽象化 封裝 整合 多型 物件導向程式設計過程 分析 設計 採用物件導向語言程式設計實現 uml核心是圖表,可以分為...

概念模型,邏輯模型,物理模型

概念模型 就是在了解了使用者的需求,使用者的業務領域工作情況以後,經過分析和總結,提煉出來的用以描述使用者業務需求的一些概念的東西。如銷售業務中的 客戶 和 定單 還有就是 商品 業務員 用use case來描述就是 業務員 與 客戶 就購買 商品 之事簽定下 定單 邏輯模型 就是要將概念模型具體化...