0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于 Boosting 框架的主流集成算法介紹(下)

jf_78858299 ? 來源:Datawhale ? 作者:阿澤 ? 2023-02-17 15:58 ? 次閱讀

2.1.3 互斥特征捆綁算法

高維特征往往是稀疏的,而且特征間可能是相互排斥的(如兩個特征不同時取非零值),如果兩個特征并不完全互斥(如只有一部分情況下是不同時取非零值),可以用互斥率表示互斥程度?;コ馓卣骼壦惴ǎ‥xclusive Feature Bundling, EFB)指出如果將一些特征進(jìn)行融合綁定,則可以降低特征數(shù)量。

針對這種想法,我們會遇到兩個問題:

  1. 哪些特征可以一起綁定?
  2. 特征綁定后,特征值如何確定?

對于問題一:EFB 算法利用特征和特征間的關(guān)系構(gòu)造一個加權(quán)無向圖,并將其轉(zhuǎn)換為圖著色算法。我們知道圖著色是個 NP-Hard 問題,故采用貪婪算法得到近似解,具體步驟如下:

  1. 構(gòu)造一個加權(quán)無向圖,頂點(diǎn)是特征,邊是兩個特征間互斥程度;
  2. 根據(jù)節(jié)點(diǎn)的度進(jìn)行降序排序,度越大,與其他特征的沖突越大;
  3. 遍歷每個特征,將它分配給現(xiàn)有特征包,或者新建一個特征包,是的總體沖突最小。

算法允許兩兩特征并不完全互斥來增加特征捆綁的數(shù)量,通過設(shè)置最大互斥率 來平衡算法的精度和效率。EFB 算法的偽代碼如下所示:

圖片

我們看到時間復(fù)雜度為 O(#feature^2) ,在特征不多的情況下可以應(yīng)付,但如果特征維度達(dá)到百萬級別,計(jì)算量則會非常大,為了改善效率,我們提出了一個更快的解決方案:將 EFB 算法中通過構(gòu)建圖,根據(jù)節(jié)點(diǎn)度來排序的策略改成了根據(jù)非零值的技術(shù)排序,因?yàn)榉橇阒翟蕉?,互斥的概率會越大?/p>

對于問題二:論文給出特征合并算法,其關(guān)鍵在于原始特征能從合并的特征中分離出來。假設(shè) Bundle 中有兩個特征值,A 取值為 [0, 10]、B 取值為 [0, 20],為了保證特征 A、B 的互斥性,我們可以給特征 B 添加一個偏移量轉(zhuǎn)換為 [10, 30],Bundle 后的特征其取值為 [0, 30],這樣便實(shí)現(xiàn)了特征合并。具體算法如下所示:

圖片

2.1.4 帶深度限制的 Leaf-wise 算法

在建樹的過程中有兩種策略:

  • Level-wise:基于層進(jìn)行生長,直到達(dá)到停止條件;
  • Leaf-wise:每次分裂增益最大的葉子節(jié)點(diǎn),直到達(dá)到停止條件。

XGBoost 采用 Level-wise 的增長策略,方便并行計(jì)算每一層的分裂節(jié)點(diǎn),提高了訓(xùn)練速度,但同時也因?yàn)楣?jié)點(diǎn)增益過小增加了很多不必要的分裂,降低了計(jì)算量;LightGBM 采用 Leaf-wise 的增長策略減少了計(jì)算量,配合最大深度的限制防止過擬合,由于每次都需要計(jì)算增益最大的節(jié)點(diǎn),所以無法并行分裂。

圖片

2.1.5 類別特征最優(yōu)分割

大部分的機(jī)器學(xué)習(xí)算法都不能直接支持類別特征,一般都會對類別特征進(jìn)行編碼,然后再輸入到模型中。常見的處理類別特征的方法為 one-hot 編碼,但我們知道對于決策樹來說并不推薦使用 one-hot 編碼:

  1. 會產(chǎn)生樣本切分不平衡問題,切分增益會非常小。如,國籍切分后,會產(chǎn)生是否中國,是否美國等一系列特征,這一系列特征上只有少量樣本為 1,大量樣本為 0。這種劃分的增益非常?。狠^小的那個拆分樣本集,它占總樣本的比例太小。無論增益多大,乘以該比例之后幾乎可以忽略;較大的那個拆分樣本集,它幾乎就是原始的樣本集,增益幾乎為零;
  2. 影響決策樹學(xué)習(xí):決策樹依賴的是數(shù)據(jù)的統(tǒng)計(jì)信息,而獨(dú)熱碼編碼會把數(shù)據(jù)切分到零散的小空間上。在這些零散的小空間上統(tǒng)計(jì)信息不準(zhǔn)確的,學(xué)習(xí)效果變差。本質(zhì)是因?yàn)楠?dú)熱碼編碼之后的特征的表達(dá)能力較差的,特征的預(yù)測能力被人為的拆分成多份,每一份與其他特征競爭最優(yōu)劃分點(diǎn)都失敗,最終該特征得到的重要性會比實(shí)際值低。

LightGBM 原生支持類別特征,采用 many-vs-many 的切分方式將類別特征分為兩個子集,實(shí)現(xiàn)類別特征的最優(yōu)切分。假設(shè)有某維特征有 k 個類別,則有 2^{(k-1)} - 1 中可能,時間復(fù)雜度為 O(2^k) ,LightGBM 基于 Fisher 大佬的 《On Grouping For Maximum Homogeneity》實(shí)現(xiàn)了 O(klog_2k) 的時間復(fù)雜度。

圖片

上圖為左邊為基于 one-hot 編碼進(jìn)行分裂,后圖為 LightGBM 基于 many-vs-many 進(jìn)行分裂,在給定深度情況下,后者能學(xué)出更好的模型。

其基本思想在于每次分組時都會根據(jù)訓(xùn)練目標(biāo)對類別特征進(jìn)行分類,根據(jù)其累積值 \\frac{\\sum gradient }{\\sum hessian} 對直方圖進(jìn)行排序,然后在排序的直方圖上找到最佳分割。此外,LightGBM 還加了約束條件正則化,防止過擬合。

圖片

我們可以看到這種處理類別特征的方式使得 AUC 提高了 1.5 個點(diǎn),且時間僅僅多了 20%。

2.2 工程實(shí)現(xiàn)

2.2.1 特征并行

傳統(tǒng)的特征并行算法在于對數(shù)據(jù)進(jìn)行垂直劃分,然后使用不同機(jī)器找到不同特征的最優(yōu)分裂點(diǎn),基于通信整合得到最佳劃分點(diǎn),然后基于通信告知其他機(jī)器劃分結(jié)果。

傳統(tǒng)的特征并行方法有個很大的缺點(diǎn):需要告知每臺機(jī)器最終劃分結(jié)果,增加了額外的復(fù)雜度(因?yàn)閷?shù)據(jù)進(jìn)行垂直劃分,每臺機(jī)器所含數(shù)據(jù)不同,劃分結(jié)果需要通過通信告知)。

LightGBM 則不進(jìn)行數(shù)據(jù)垂直劃分,每臺機(jī)器都有訓(xùn)練集完整數(shù)據(jù),在得到最佳劃分方案后可在本地執(zhí)行劃分而減少了不必要的通信。

2.2.2 數(shù)據(jù)并行

傳統(tǒng)的數(shù)據(jù)并行策略主要為水平劃分?jǐn)?shù)據(jù),然后本地構(gòu)建直方圖并整合成全局直方圖,最后在全局直方圖中找出最佳劃分點(diǎn)。

這種數(shù)據(jù)劃分有一個很大的缺點(diǎn):通訊開銷過大。如果使用點(diǎn)對點(diǎn)通信,一臺機(jī)器的通訊開銷大約為 O(#machine * #feature *#bin ) ;如果使用集成的通信,則通訊開銷為 O(2 * #feature *#bin ) ,

LightGBM 采用分散規(guī)約(Reduce scatter)的方式將直方圖整合的任務(wù)分?jǐn)偟讲煌瑱C(jī)器上,從而降低通信代價,并通過直方圖做差進(jìn)一步降低不同機(jī)器間的通信。

2.2.3 投票并行

針對數(shù)據(jù)量特別大特征也特別多的情況下,可以采用投票并行。投票并行主要針對數(shù)據(jù)并行時數(shù)據(jù)合并的通信代價比較大的瓶頸進(jìn)行優(yōu)化,其通過投票的方式只合并部分特征的直方圖從而達(dá)到降低通信量的目的。

大致步驟為兩步:

  1. 本地找出 Top K 特征,并基于投票篩選出可能是最優(yōu)分割點(diǎn)的特征;
  2. 合并時只合并每個機(jī)器選出來的特征。

2.2.4 緩存優(yōu)化

上邊說到 XGBoost 的預(yù)排序后的特征是通過索引給出的樣本梯度的統(tǒng)計(jì)值,因其索引訪問的結(jié)果并不連續(xù),XGBoost 提出緩存訪問優(yōu)化算法進(jìn)行改進(jìn)。

而 LightGBM 所使用直方圖算法對 Cache 天生友好:

  1. 首先,所有的特征都采用相同的方法獲得梯度(區(qū)別于不同特征通過不同的索引獲得梯度),只需要對梯度進(jìn)行排序并可實(shí)現(xiàn)連續(xù)訪問,大大提高了緩存命中;
  2. 其次,因?yàn)椴恍枰鎯μ卣鞯綐颖镜乃饕?,降低了存儲消耗,而且也不存?Cache Miss的問題。

圖片

2.3 與 XGBoost 的對比

本節(jié)主要總結(jié)下 LightGBM 相對于 XGBoost 的優(yōu)點(diǎn),從內(nèi)存和速度兩方面進(jìn)行介紹。

2.3.1 內(nèi)存更小

  1. XGBoost 使用預(yù)排序后需要記錄特征值及其對應(yīng)樣本的統(tǒng)計(jì)值的索引,而 LightGBM 使用了直方圖算法將特征值轉(zhuǎn)變?yōu)?bin 值,且不需要記錄特征到樣本的索引,將空間復(fù)雜度從 O(2*#data) 降低為 O(#bin) ,極大的減少了內(nèi)存消耗;
  2. LightGBM 采用了直方圖算法將存儲特征值轉(zhuǎn)變?yōu)榇鎯?bin 值,降低了內(nèi)存消耗;
  3. LightGBM 在訓(xùn)練過程中采用互斥特征捆綁算法減少了特征數(shù)量,降低了內(nèi)存消耗。

2.3.2 速度更快

  1. LightGBM 采用了直方圖算法將遍歷樣本轉(zhuǎn)變?yōu)楸闅v直方圖,極大的降低了時間復(fù)雜度;
  2. LightGBM 在訓(xùn)練過程中采用單邊梯度算法過濾掉梯度小的樣本,減少了大量的計(jì)算;
  3. LightGBM 采用了基于 Leaf-wise 算法的增長策略構(gòu)建樹,減少了很多不必要的計(jì)算量;
  4. LightGBM 采用優(yōu)化后的特征并行、數(shù)據(jù)并行方法加速計(jì)算,當(dāng)數(shù)據(jù)量非常大的時候還可以采用投票并行的策略;
  5. LightGBM 對緩存也進(jìn)行了優(yōu)化,增加了 Cache hit 的命中率。

參考文獻(xiàn)

  1. XGBoost: A Scalable Tree Boosting System
  2. 陳天奇論文演講 PPT
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8418

    瀏覽量

    132646
  • 決策樹
    +關(guān)注

    關(guān)注

    3

    文章

    96

    瀏覽量

    13552
收藏 人收藏

    評論

    相關(guān)推薦

    集成學(xué)習(xí)和Boosting提升方法

    李航《統(tǒng)計(jì)學(xué)習(xí)方法》——第八章Boosting提升方法【補(bǔ)充集成學(xué)習(xí)】+習(xí)題答案
    發(fā)表于 06-05 09:49

    請問怎樣去實(shí)現(xiàn)自適應(yīng)波束形成算法

    怎樣去實(shí)現(xiàn)自適應(yīng)波束形成算法?
    發(fā)表于 04-28 06:09

    3D圖像生成算法的原理是什么?

    什么是3D圖形芯片?3D圖像生成算法的原理是什么?
    發(fā)表于 06-04 06:29

    五步直線掃描轉(zhuǎn)換生成算法

    直線生成算法,尤其是直線掃描轉(zhuǎn)換算法,是計(jì)算機(jī)圖形學(xué)和計(jì)算機(jī)輔助設(shè)計(jì)等領(lǐng)域最基本、最重要的算法之一。本文提出了一種改進(jìn)的直線生成算法——直線掃描轉(zhuǎn)換的五步生
    發(fā)表于 06-06 16:24 ?24次下載

    集成算術(shù)/邏輯單元舉例

    集成算術(shù)/邏輯單元舉例   集成算術(shù)/邏輯單元(ALU)能夠完成一系列的算術(shù)運(yùn)算和邏輯運(yùn)算。74LS381
    發(fā)表于 04-07 10:39 ?1361次閱讀
    <b class='flag-5'>集成算</b>術(shù)/邏輯單元舉例

    基于負(fù)相關(guān)神經(jīng)網(wǎng)絡(luò)集成算法及其應(yīng)用

    傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)集成中各個自網(wǎng)絡(luò)間的相關(guān)性較大,從而影響集成的泛化能力,本內(nèi)容提出了基于負(fù)相關(guān)神經(jīng)網(wǎng)絡(luò)集成算法及其應(yīng)用
    發(fā)表于 05-26 15:45 ?18次下載
    基于負(fù)相關(guān)神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>集成算法</b>及其應(yīng)用

    基于OFDM系統(tǒng)的時域頻域波束形成算法

    文中首先介紹了OFDM-智能天線系統(tǒng)的兩種算法:時域波束形成算法和頻域波束形成算法。并在此基礎(chǔ)上提出了一種新的時-頻域波束形成算法,最后將該
    發(fā)表于 12-14 14:31 ?25次下載
    基于OFDM系統(tǒng)的時域頻域波束形<b class='flag-5'>成算法</b>

    基于加權(quán)co-occurrence矩陣的聚類集成算法

    文中提出了一種基于加權(quán)co-occurrence矩陣的聚類集成算法(WCSCE)。該方法首先計(jì)算出聚類成員基于屬性值的co-occurrence矩陣,然后對聚類成員的質(zhì)量進(jìn)行簡單評價并賦予權(quán)重,生成加權(quán)co-occur
    發(fā)表于 02-29 14:11 ?27次下載
    基于加權(quán)co-occurrence矩陣的聚類<b class='flag-5'>集成算法</b>

    MIDI合成算法及其FPGA實(shí)現(xiàn)

    MIDI合成算法及其FPGA實(shí)現(xiàn).
    發(fā)表于 04-16 13:57 ?44次下載
    MIDI合<b class='flag-5'>成算法</b>及其FPGA實(shí)現(xiàn)

    三種SPWM波形生成算法的分析與實(shí)現(xiàn)

    本文著重介紹三種SPWM波形生成算法的分析與實(shí)現(xiàn)
    發(fā)表于 08-24 16:30 ?12次下載

    基于修正的直覺模糊集成算

    已有的一些直覺模糊集成算子在處理一些特殊直覺模糊數(shù)時會出現(xiàn)反直覺現(xiàn)象。首先介紹了兩個直覺模糊集成算子和直覺模糊數(shù)的比較方法。接著,舉例說明了這些集成算子在某些情況下出現(xiàn)的反直覺現(xiàn)象。然
    發(fā)表于 11-17 14:36 ?9次下載

    基于boosting框架的混合秩矩陣分解模型

    基于boosting框架的混合秩矩陣分解模型
    發(fā)表于 06-11 14:41 ?13次下載

    基于并行Boosting算法的雷達(dá)目標(biāo)跟蹤檢測系統(tǒng)

    基于并行Boosting算法的雷達(dá)目標(biāo)跟蹤檢測系統(tǒng)
    發(fā)表于 06-30 14:25 ?31次下載

    基于 Boosting 框架主流集成算法介紹(上)

    本文是決策樹的第三篇,主要介紹基于 Boosting 框架主流集成算法,包括 XGBoost 和 LightGBM。 XGBoost
    的頭像 發(fā)表于 02-17 15:57 ?1014次閱讀
    基于 <b class='flag-5'>Boosting</b> <b class='flag-5'>框架</b>的<b class='flag-5'>主流</b><b class='flag-5'>集成算法</b><b class='flag-5'>介紹</b>(上)

    基于 Boosting 框架主流集成算法介紹(中)

    本文是決策樹的第三篇,主要介紹基于 Boosting 框架主流集成算法,包括 XGBoost 和 LightGBM。 XGBoost
    的頭像 發(fā)表于 02-17 15:58 ?701次閱讀
    基于 <b class='flag-5'>Boosting</b> <b class='flag-5'>框架</b>的<b class='flag-5'>主流</b><b class='flag-5'>集成算法</b><b class='flag-5'>介紹</b>(中)