CatBoost:比XGBoost更優(yōu)秀的GBDT算法
譯文【51CTO.com快譯】互聯(lián)網(wǎng)的算法有很多應(yīng)用場(chǎng)景,包括推薦系統(tǒng)、計(jì)算廣告和金融反欺詐等。許多互聯(lián)網(wǎng)的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘問題都可以轉(zhuǎn)化為分類問題。在處理這一類分類問題的時(shí)候,最常用的方法包括邏輯回歸、GBDT和深度學(xué)習(xí)等。其中邏輯回歸因?yàn)樗惴ㄐ矢?,能有效處理大?guī)模的數(shù)據(jù),在深度學(xué)習(xí)還沒有流行之前就被廣泛的應(yīng)用于大型的互聯(lián)網(wǎng)公司。
深度學(xué)習(xí)是自 2012 年由百度首先成立深度學(xué)習(xí)實(shí)驗(yàn)室之后在國內(nèi)掀起的人工智能大潮。然而由于深度學(xué)習(xí)目前還處于蓬勃發(fā)展的階段,并且處理大規(guī)模數(shù)據(jù)時(shí)對(duì)于機(jī)器的經(jīng)費(fèi)的要求都比較高,因此在很多應(yīng)用場(chǎng)景下大家選擇的并不是機(jī)器學(xué)習(xí)。GBDT 自問世以來便在諸多機(jī)器學(xué)習(xí)問題上取得了良好的效果,不僅在工業(yè)界,而且在 Kaggle 比賽上取得了非常優(yōu)秀的成績(jī)。
針對(duì) GBDT 算法,在學(xué)術(shù)界和工業(yè)界有許多開源的算法包。著名的包括 University of Washington 的陳天奇開發(fā)的 XGBoost ,微軟的 LightGBM ,還有 Yandex 公司開發(fā)的 CatBoost 。XGBoost 被廣泛的應(yīng)用于工業(yè)界,LightGBM 有效的提升了 GBDT的計(jì)算效率, 而 Yandex 的 CatBoost 號(hào)稱是比 XGBoost 和 LightGBM 在算法準(zhǔn)確率等方面表現(xiàn)更為優(yōu)秀的算法。本文主要通過介紹 Yandex 2017 年發(fā)表的一篇題為 CatBoost: Unbiased Boosting with Categorical Features 的論文給大家介紹 CatBoost 算法。
CatBoost 算法的設(shè)計(jì)初衷是為了更好的處理 GBDT 特征中的 categorical features 。在處理 GBDT 特征中的 categorical features 的時(shí)候,最簡(jiǎn)單的方法是用 categorical feature 對(duì)應(yīng)的標(biāo)簽的平均值來替換。在決策樹中,標(biāo)簽平均值將作為節(jié)點(diǎn)分裂的標(biāo)準(zhǔn)。這種方法被稱為 Greedy Target-based Statistics , 簡(jiǎn)稱 Greedy TBS,用公式來表達(dá)就是:
這種方法有一個(gè)顯而易見的缺陷,就是通常特征比標(biāo)簽包含更多的信息,如果強(qiáng)行用標(biāo)簽的平均值來表示特征的話,當(dāng)訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集數(shù)據(jù)結(jié)構(gòu)和分布不一樣的時(shí)候會(huì)出問題(條件偏移問題)。
一個(gè)標(biāo)準(zhǔn)的改進(jìn) Greedy TBS的方式是添加先驗(yàn)分布項(xiàng),這樣可以減少噪聲和低頻率數(shù)據(jù)對(duì)于數(shù)據(jù)分布的影響:
其中 P 是添加的先驗(yàn)項(xiàng),a 通常是大于 0 的權(quán)重系數(shù)。
為了解決條件遷移問題,常用的方法例如可以將數(shù)據(jù)集合分為兩部分,在***個(gè)部分上對(duì)數(shù)據(jù)的特征進(jìn)行類似 Greedy TBS 的處理,而在第二個(gè)數(shù)據(jù)集合上進(jìn)行訓(xùn)練。CatBoost 參考了在線學(xué)習(xí)的方法,首先對(duì)訓(xùn)練書進(jìn)行了隨機(jī)的重排列,然后選擇 作為訓(xùn)練樣本,而整個(gè)的數(shù)據(jù)集合做為測(cè)試樣本。
類似的,在GBDT的模型訓(xùn)練階段,同樣會(huì)因?yàn)橛?xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù)分布不同的問題產(chǎn)生預(yù)測(cè)偏移(Prediction Shift)和殘差偏移(Residual Shift)的問題。為了解決相應(yīng)的問題,CatBoost 作者采用了排序提升(Ordered Boosting)的方式,首先對(duì)所有的數(shù)據(jù)進(jìn)行隨機(jī)排列,然后在計(jì)算第 i 步殘差時(shí)候的模型只利用了隨機(jī)排列中前 i-1 個(gè)樣本。
CatBoost 針對(duì)于原始 GBDT 的各種偏移問題進(jìn)行改進(jìn)之后的算法偽代碼如下:
CatBoost 和 XGBoost 以及 LightGBM 在一些知名的數(shù)據(jù)集合上的測(cè)試效果如下表所示,評(píng)測(cè)指標(biāo)為 Logloss 和 Zero-one Loss 。
CatBoost 的基本原理是解決原始 GBDT 中的各種數(shù)據(jù)偏移問題。在一些開源的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的算法包里有現(xiàn)成的模塊可以調(diào)用。CatBoost 自從 2017 年被 Yandex ***提出以來得到了廣泛的關(guān)注。希望本文的介紹能給大家?guī)韼椭?/p>
汪昊,恒昌利通大數(shù)據(jù)部負(fù)責(zé)人/資深架構(gòu)師,美國猶他大學(xué)本科/碩士,對(duì)外經(jīng)貿(mào)大學(xué)在職MBA。曾在百度,新浪,網(wǎng)易,豆瓣等公司有多年的研發(fā)和技術(shù)管理經(jīng)驗(yàn),擅長(zhǎng)機(jī)器學(xué)習(xí),大數(shù)據(jù),推薦系統(tǒng),社交網(wǎng)絡(luò)分析等技術(shù)。在 TVCG 和 ASONAM 等國際會(huì)議和期刊發(fā)表論文 8 篇。本科畢業(yè)論文獲國際會(huì)議 IEEE SMI 2008 ***論文獎(jiǎng)。
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】