0
本文作者: AI研習(xí)社-譯站 | 2020-08-13 17:21 |
字幕組雙語(yǔ)原文:機(jī)器學(xué)習(xí)最優(yōu)算法:XGBoost
英語(yǔ)原文:XGBoost Algorithm: Long May She Reign!
翻譯:雷鋒字幕組(yhfwww)
仍然記得15年前參加工作的第一天,剛完成研究生學(xué)業(yè)的我,加入了一家全球投資銀行擔(dān)任分析師。那天我不停地拉直領(lǐng)帶,努力回憶起學(xué)過(guò)的所有東西,懷疑自己是否足夠勝任工作。察覺(jué)到我的焦慮,老板微笑著說(shuō):
“別擔(dān)心!你只需要知道回歸模型就行了!”
我當(dāng)時(shí)在想,“我知道這個(gè)!”。我知道回歸模型、線(xiàn)性回歸和邏輯回歸。老板的說(shuō)法是對(duì)的,在任期內(nèi)我僅僅建立了基于回歸的統(tǒng)計(jì)模型。在那個(gè)時(shí)候,回歸建模是預(yù)測(cè)分析無(wú)可爭(zhēng)議的女王。15年后,回歸建模的時(shí)代已經(jīng)結(jié)束。遲暮的女王已經(jīng)退場(chǎng),取而代之的是名字時(shí)髦、活力滿(mǎn)滿(mǎn)的新女王XGBoost(Exterme Gradient Boosting,極限梯度提升)。
XGBoost是基于決策樹(shù)的集成機(jī)器學(xué)習(xí)算法,使用了梯度提升框架。在涉及非結(jié)構(gòu)化數(shù)據(jù)(圖像、文本等)的預(yù)測(cè)問(wèn)題中,人工神經(jīng)網(wǎng)絡(luò)往往優(yōu)于所有其他算法或框架。然而,當(dāng)涉及到中小型結(jié)構(gòu)化/表格數(shù)據(jù)時(shí),基于決策樹(shù)的算法被認(rèn)為是目前同類(lèi)中最好的。請(qǐng)參閱下表了解這些年來(lái)基于樹(shù)的算法的發(fā)展。 基于決策樹(shù)的XGBoost算法演化
XGBoost算法是華盛頓大學(xué)的一個(gè)研究項(xiàng)目。陳天奇和Carlos Guestrin在2016年的SIGGDD大會(huì)上發(fā)的的論文,讓機(jī)器學(xué)習(xí)世界如火如荼。自引入以來(lái),該算法不僅贏(yíng)得了眾多的Kaggle競(jìng)賽,而且還被認(rèn)為是若干前沿行業(yè)應(yīng)用的驅(qū)動(dòng)力。因此,有一個(gè)強(qiáng)大的數(shù)據(jù)科學(xué)家社區(qū)為XGBoost開(kāi)源項(xiàng)目做出貢獻(xiàn),GitHub上有大約350個(gè)貢獻(xiàn)者和~3600個(gè)提交者。該算法有以下特點(diǎn):
應(yīng)用范圍廣泛:可用于解決回歸、分類(lèi)、排名和用戶(hù)自定義預(yù)測(cè)問(wèn)題。
可移植性:在Windows、Linux和os x上運(yùn)行平穩(wěn)。
語(yǔ)言:支持所有主流的編程語(yǔ)言,包括C++、Python、R、java、Scala和Julia。
云集成:支持AWS、Azure和Yarn集群,與Flink、Spark和其他生態(tài)系統(tǒng)配合良好。
決策樹(shù),在其最簡(jiǎn)單的形式,是易于可視化和相當(dāng)可解釋的算法,但為下一代基于樹(shù)的算法建立直覺(jué)可能有點(diǎn)棘手。下面是一個(gè)簡(jiǎn)單的類(lèi)比,可以更好地理解基于樹(shù)的算法的發(fā)展。
照片來(lái)Unsplash的rawpixel
想象一下,你是一個(gè)招聘經(jīng)理,面試幾位資歷優(yōu)秀的應(yīng)聘者?;跇?shù)的算法進(jìn)化的每一步都可以看作是面試過(guò)程的一個(gè)版本。
決策樹(shù):每個(gè)招聘經(jīng)理都有一套標(biāo)準(zhǔn),比如教育水平、工作年限、面試表現(xiàn)。決策樹(shù)類(lèi)似于招聘經(jīng)理根據(jù)自己的標(biāo)準(zhǔn)面試應(yīng)聘者。
Bagging:現(xiàn)在想象一下,不是一個(gè)面試官,而是一個(gè)面試小組,每個(gè)面試官都有投票權(quán)。Bagging聚合包括通過(guò)民主投票過(guò)程將所有面試官的意見(jiàn)結(jié)合起來(lái),以最終做出決定。
隨機(jī)森林:這是一種基于Bagging的算法,有一個(gè)關(guān)鍵的區(qū)別,其中只有一個(gè)子集的特征是隨機(jī)選擇的。換言之,每個(gè)面試官只會(huì)對(duì)面試者進(jìn)行一些隨機(jī)選擇的資格測(cè)試(例如,測(cè)試編程技能的技術(shù)面試和評(píng)估非技術(shù)技能的行為面試)。
Boosting:這是一種替代方法,每個(gè)面試官都會(huì)根據(jù)前一位面試官的反饋來(lái)改變?cè)u(píng)估標(biāo)準(zhǔn)。這通過(guò)部署一個(gè)更動(dòng)態(tài)的評(píng)估過(guò)程來(lái)“提升Boosts”面試過(guò)程的效率。
梯度提升:通過(guò)梯度下降算法將誤差最小化的一種特例,例如,戰(zhàn)略咨詢(xún)公司利用案例面試來(lái)淘汰不合格的候選人。
XGBoost:可以把XGBoost看作是對(duì)“steroids”的梯度增強(qiáng)(它被稱(chēng)為“極致梯度增強(qiáng)”是有原因的?。K擒浻布?yōu)化技術(shù)的完美結(jié)合,可以在最短的時(shí)間內(nèi)使用較少的計(jì)算資源獲得優(yōu)異的結(jié)果。
XGBoost和Gradient Boosting Machines(GBMs)都是集成樹(shù)方法,它們采用梯度下降結(jié)構(gòu)來(lái)提高弱學(xué)習(xí)者(CARTs)的學(xué)習(xí)能力。然而,XGBoost通過(guò)系統(tǒng)優(yōu)化和算法增強(qiáng)改進(jìn)了基本GBM框架。
XGBoost如何優(yōu)化標(biāo)準(zhǔn)GBM算法
并行化:XGBoost使用并行化實(shí)現(xiàn)序列樹(shù)的構(gòu)建過(guò)程。這是可能的,因?yàn)橛糜跇?gòu)建基本學(xué)習(xí)器的循環(huán)具有可互換性;外部循環(huán)枚舉樹(shù)的葉節(jié)點(diǎn),第二個(gè)內(nèi)部循環(huán)計(jì)算特征。這是可能的,因?yàn)橛糜跇?gòu)建基本學(xué)習(xí)器的循環(huán)具有可互換性;外部循環(huán)枚舉樹(shù)的葉節(jié)點(diǎn),第二個(gè)內(nèi)部循環(huán)計(jì)算特征。這種循環(huán)嵌套限制了并行化,因?yàn)闆](méi)有完成內(nèi)部循環(huán)(對(duì)這兩個(gè)循環(huán)的計(jì)算要求更高),外部循環(huán)就無(wú)法啟動(dòng)。因此,為了改進(jìn)運(yùn)行時(shí),循環(huán)的順序是通過(guò)初始化來(lái)交換的,通過(guò)對(duì)所有實(shí)例的全局掃描和使用并行線(xiàn)程進(jìn)行排序。此開(kāi)關(guān)通過(guò)抵消計(jì)算中的任何并行化開(kāi)銷(xiāo)來(lái)提高算法性能。
樹(shù)修剪:GBM框架中的樹(shù)分裂停止準(zhǔn)則本質(zhì)上是貪婪的,它依賴(lài)于分裂點(diǎn)的負(fù)損失準(zhǔn)則。XGBoost使用指定的“max_depth”參數(shù),而不是先使用條件,然后開(kāi)始向后修剪樹(shù)。這種“深度優(yōu)先”方法顯著提高了計(jì)算性能。
硬件優(yōu)化:此算法旨在有效利用硬件資源。這是通過(guò)緩存感知來(lái)實(shí)現(xiàn)的,通過(guò)在每個(gè)線(xiàn)程中分配內(nèi)部緩沖區(qū)來(lái)存儲(chǔ)梯度統(tǒng)計(jì)信息。進(jìn)一步的增強(qiáng),如“內(nèi)核外”計(jì)算優(yōu)化可用磁盤(pán)空間,同時(shí)處理不適合內(nèi)存的大數(shù)據(jù)幀。
算法增強(qiáng):
正則化:它通過(guò)L1脊線(xiàn)L2正則化來(lái)懲罰更復(fù)雜的模型,以防止過(guò)度擬合。
稀疏性意識(shí):XGBoost通過(guò)根據(jù)訓(xùn)練損失自動(dòng)“學(xué)習(xí)”最佳缺失值,自然地允許輸入稀疏特征,并更有效地處理數(shù)據(jù)中不同類(lèi)型的稀疏模式。
加權(quán)分位數(shù)草圖:XGBoost采用分布式加權(quán)分位數(shù)草圖算法,有效地找到加權(quán)數(shù)據(jù)集之間的最佳分割點(diǎn)。
交叉驗(yàn)證:該算法在每次迭代中都帶有內(nèi)置的交叉驗(yàn)證方法,不需要顯式地對(duì)該搜索進(jìn)行編程,也不必指定一次運(yùn)行中所需的確切的提升迭代次數(shù)。
我們使用scikitlearn的“Make_nuclassification”數(shù)據(jù)包創(chuàng)建了一個(gè)隨機(jī)樣本,其中有100萬(wàn)個(gè)數(shù)據(jù)點(diǎn),有20個(gè)特征(2個(gè)是信息性的,2個(gè)是冗余的)。我們測(cè)試了一些算法,如Logistic回歸、隨機(jī)森林、標(biāo)準(zhǔn)梯度提升和XGBoost。
XGBoost與使用SKLearn的Make_Classification 數(shù)據(jù)集的其他ML算法的比較
如上圖所示,與其他算法相比,XGBoost模型具有最佳的預(yù)測(cè)性能和處理時(shí)間組合。其他嚴(yán)格的基準(zhǔn)研究也產(chǎn)生了類(lèi)似的結(jié)果。難怪XGBoost在最近的數(shù)據(jù)科學(xué)競(jìng)賽中被廣泛使用。
“如有疑問(wèn),請(qǐng)使用XGBoost”——Owen Zhang
說(shuō)到機(jī)器學(xué)習(xí)(甚至是生活),沒(méi)有免費(fèi)的午餐。作為數(shù)據(jù)科學(xué)家,我們必須測(cè)試手頭數(shù)據(jù)的所有可能的算法,以確定冠軍算法。此外,選擇正確的算法是不夠的。我們還必須通過(guò)調(diào)整超參數(shù)來(lái)為數(shù)據(jù)集選擇正確的算法配置。此外,在選擇獲勝算法時(shí)還有其他一些考慮因素,例如計(jì)算復(fù)雜度、可解釋性和易于實(shí)現(xiàn)。這正是機(jī)器學(xué)習(xí)開(kāi)始從科學(xué)走向藝術(shù)的起點(diǎn),但老實(shí)說(shuō),這就是奇跡發(fā)生的地方!
機(jī)器學(xué)習(xí)是一個(gè)非?;钴S的研究領(lǐng)域,已經(jīng)有幾種可行的XGBoost替代方案。微軟研究院最近發(fā)布了LightGBM框架來(lái)增強(qiáng)梯度,顯示出巨大的潛力。Yandex Technology開(kāi)發(fā)的CatBoost已經(jīng)取得了令人印象深刻的基準(zhǔn)測(cè)試結(jié)果。在預(yù)測(cè)性能、靈活性、可解釋性和實(shí)用性方面,我們有一個(gè)比XGBoost更好的模型框架是遲早的事。然而,直到有一個(gè)強(qiáng)大的挑戰(zhàn)者出現(xiàn),XGBoost將繼續(xù)統(tǒng)治機(jī)器學(xué)習(xí)世界!
【封面圖片來(lái)源:網(wǎng)站名Unsplash,所有者: Jared Subia】
雷鋒字幕組是由AI愛(ài)好者組成的志愿者翻譯團(tuán)隊(duì);團(tuán)隊(duì)成員有大數(shù)據(jù)專(zhuān)家、算法工程師、圖像處理工程師、產(chǎn)品經(jīng)理、產(chǎn)品運(yùn)營(yíng)、IT咨詢(xún)?nèi)?、在校師生;志愿者們?lái)自IBM、AVL、Adobe、阿里、百度等知名企業(yè),北大、清華、港大、中科院、南卡羅萊納大學(xué)、早稻田大學(xué)等海內(nèi)外高校研究所。
了解字幕組請(qǐng)聯(lián)系微信:tlacttlact
轉(zhuǎn)載請(qǐng)聯(lián)系字幕組微信并注明出處:雷鋒字幕組
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。