SPA 大賽:win10 python3.5.X 下開啟 lightgbm 支持
更多騰訊海量技術文章,請關注云加社區:https://cloud.tencent.com/developer
作者:祁旭翔
在數據分析的過程中,我們經常需要對數據建模並做預測。GBDT (Gradient Boosting Decision Tree) 是機器學習中一個長盛不衰的模型,其主要思想是利用弱分類器(決策樹)迭代訓練以得到最優模型,該模型具有訓練效果好、不易過擬合等優點。GBDT在工業界應用廣泛,通常被用於點擊率預測,搜索排序等任務。GBDT也是各種數據挖掘競賽的致命武器,據統計Kaggle上的比賽有一半以上的冠軍方案都是基於GBDT。
GBDT屬於集成學習模型,它基本思想是把成百上千個分類準確率較低的樹模型組合起來,成為一個準確率很高的模型。這個模型會不斷地迭代,每次迭代就生成一顆新的樹。然而Boosting分類器的速度實在是太慢了。為了解決這一問題,xgboost應運而生:xgboost最大的特點在於,它能夠自動利用CPU的多線程並行計算,同時在演算法上加以改進提高了精度。xgboost因為計算速度快,精確度高,在Kaggle和天池等數據挖掘競賽中的逐漸成為大殺器。但是去年,xgboost迎來了一個重量級挑戰者:lightGBM。
lightgbm
去年(2016年)12月,微軟開源了LightGBM,地址:https://github.com/Microsoft/LightGBM 。該項目剛開源就被受到熱捧:三天之內GitHub上被star了1000+次,fork了200+次;知乎上有近千人關注「如何看待微軟開源的LightGBM?」。接下來簡單介紹下這個號稱「性能超越其他boosting」的學習模型及其編譯和安裝方法,以及開啟python的lightgbm支持。
LightGBM全稱:Light Gradient Boosting Machine,是一個基於決策樹演算法的快速的、分散式的、高性能 gradient boosting(GBDT、GBRT、GBM 或 MART)框架,可被用於排行、分類以及其他許多機器學習任務中。
LightGBM 是一個梯度 boosting 框架,使用基於學習演算法的決策樹。它是分散式的,具有以下優勢:
更快的訓練效率
低內存使用
更好的準確率
支持並行學習
可處理大規模數據
在實際使用的過程中,給我一個最直接的感覺就是LightGBM的速度比xgboost快很多,下圖是微軟官網給出lightgbm和其他學習模型之間的比較:
原理簡介
現有的GBDT工具基本都是基於預排序的方法(pre-sorted)的決策樹演算法(如 xgboost),GBDT 雖然是個強力的模型,但卻有著一個致命的缺陷,不能用類似 mini batch 的方式來訓練,需要對數據進行無數次的遍歷。如果想要速度,就需要把數據都預載入在內存中,但這樣數據就會受限於內存的大小;如果想要訓練更多的數據,就要使用外存版本的決策樹演算法。雖然外存演算法也有較多優化,SSD 也在普及,但在頻繁的 IO 下,速度仍然比較慢。
LightGBM (Light Gradient Boosting Machine)是一個實現GBDT演算法的框架,在Histogram演算法之上,LightGBM進行進一步的優化。首先它拋棄了大多數GBDT工具使用的按層生長 (level-wise) 的決策樹生長策略,而使用了帶有深度限制的按葉子生長 (leaf-wise) 演算法。
除此之外,LightGBM還對類別特徵的支持進行了優化,可以直接輸入類別特徵,不需要額外的0/1展開,並在決策樹演算法上增加了類別特徵的決策規則。LightGBM的單機版本還有很多其他細節上的優化,比如cache訪問優化,多線程優化,稀疏特徵優化等,這就讓參賽者省去了調參和處理的麻煩。
lightgbm安裝教程:
準備:Anaconda 和VS2015。
本教程假設你已經安裝好python3.5.x和visual studio2015,然後克隆倉庫到本地:
git clone https://github.com/Microsoft/LightGBM.git
然後根據http://blog.csdn.net/testcs_dn/article/details/54176824 教程編譯dll文件和exe文件。注意配置選項一定選好,只有按照教程生成正確的dll和exe文件,才能成功安裝lightgbm python包。
然後進入到python-package目錄,筆者的目錄是:
D:lightgbmlightgbmpython-package
然後打開cmd窗口,直接執行命令:
python setup.py install
此時在cmd 輸入python,然後import lightgbm as lgb,如果不報錯,證明安裝成功!
現在最新的lightgbm python包已經更新到了0.2版本,支持sklearn的自動尋優調參,大家可以試下:
更多教程見:https://github.com/Microsoft/LightGBM/blob/master/examples/python-guide/sklearn_example.py


TAG:雲加社區 |