歡迎關注天善智能,我們是專注於商業智能BI,人工智能AI,大數據分析與挖掘領域的垂直社區,學習,問答、求職一站式搞定!
對商業智能BI、大數據分析挖掘、機器學習,python,R等數據領域感興趣的同學加微信:tstoutiao,邀請你進入數據愛好者交流羣,數據愛好者們都在這兒。
作者:張磊 從事AI醫療算法相關工作
個人微信公衆號:
機器學習算法那些事(微信ID:zl13751026985)
前言
上文介紹了XGBoost的算法原理並引出了衡量樹結構好壞的打分函數(目標函數),根據特徵切分點前後的打分函數選擇最佳切分點,但並未對節點的切分算法作詳細的介紹。本文詳細的介紹了XGBoost的切分點算法,內容參考陳天奇博士《XGBoost :A scalable Tree Boosting System》,後臺回覆XGBoost,獲取論文下載鏈接。
目錄
並行原理
切分點算法之貪婪算法
切分點算法之分位點算法
切分點算法之權重分位點算法
稀疏數據的切分算法
總結
1. 並行原理
XGBoost是串行生成CART樹,但是XGBoost在處理特徵時可以做到並行處理,XGBoost並行原理體現在最優切分點的選擇,假設樣本數據共M個特徵,對於某一輪CART樹的構建過程中,選擇最佳切分點算法如下圖:
1. 紅色框表示根據每個特徵大小對訓練數據進行排序,保存爲block結構,block個數與特徵數量相等。
2. 綠色寬表示對每個block結構選擇最佳特徵切分點 ,節點切分標準是目標函數下降的程度,
目標函數含義可參考上文
。3. 黑色框表示比較每個block結構的最佳特徵切分點的目標函數下降的增益,選擇最佳切分點。
2. 切分點算法之貪婪算法
每一個block結構的切分點算法思路是相同的,因此,我重點介紹某一塊block結構的切分點算法。
XGBoost分位點算法:根據特徵對樣本數據進行排序,然後特徵從小到大進行切分,比較每次切分後的目標函數大小,選擇下降最大的節點作爲該特徵的最優切分點。最後比較不同block塊結構最優切分點的目標函數下降值,選擇下降最大的特徵作爲最優切分點。
流程圖如下:
【例】下表表示樣本的某一列特徵數值
根據特徵大小對樣本重新排序:
貪婪算法切分節點:
紅箭頭表示每一次的切分節點,選擇目標函數下降最大的點作爲切分節點。
3. 切分點算法之分位點算法
若特徵是連續值,按照上述的貪婪算法,運算量極大 。當樣本量足夠大的時候,使用特徵分位點來切分特徵。流程圖如下:
【例】下表表示樣本的某一列特徵數值,用三分位作爲切分節點 。
根據特徵大小進行樣本排序:
用特徵的三分位點作切分節點:
紅箭頭表示每一次的切分節點,選擇目標函數下降最大的點作爲切分節點。
4. 切分點算法之權重分位點算法
上節假設樣本權重相等,根據樣本的分位點來均分損失函數存在偏差,本節用樣本權重來均分損失函數。
損失函數如下:
對其變形得到:
xi損失函數可以看做是以以−gi/hi作爲label的均方誤差,乘以大小hi的權重,換句話說,xi對loss的貢獻權重爲hi ,構建樣本權重的分位點等於誤差的均分。
上節假設樣本權重相等,特徵值的分位點作爲切分點,本節假設樣本權重是hi,構建樣本權重的均分點步驟:
(1)根據特徵大小對樣本進行排序
(2)定義排序函數:
其中x,z表示特徵
(3)設置排序函數的分位點爲切分點
【例】如下圖
特徵與對應的排序函數值的關係,如下表:
紅色箭頭表示以三分位點作爲切分點。
最後,選擇最優切分點。
5. 稀疏數據的切分算法
稀疏數據在實際項目是非常常見,造成稀疏數據的原因主要有:1. 數據缺失;2. 統計上的 0;3. one-hot編碼的特徵表示。
稀疏數據的切分點算法:
當出現特徵值缺失時,包含缺失特徵值的樣本被映射到默認的方向分支,然後計算該節點的最優切分點,最優切分點對應的默認切分方向就是特徵值缺失時默認的方向。
6. 總結
本文內容是作者對陳天奇博士論文《XGBoos:A Scalable Tree Boosting System》的理解,若有不同的想法,歡迎交流。
參考:
陳天奇《XGBoos:A Scalable Tree Boosting System》
推薦閱讀:
XGBoost算法原理小結
scikit-learn K近鄰法類庫使用小結
從0開始如何用一個月殺進機器學習比賽Top25%
2018年終精心整理|人工智能愛好者社區歷史文章合集(作者篇)
2018年終精心整理 | 人工智能愛好者社區歷史文章合集(類型篇)
公衆號後臺回覆關鍵詞學習
回覆 免費 獲取免費課程
回覆 直播 獲取系列直播課
回覆 Python 1小時破冰入門Python
回覆 人工智能 從零入門人工智能
回覆 深度學習 手把手教你用Python深度學習
回覆 機器學習 小白學數據挖掘與機器學習
回覆 貝葉斯算法 貝葉斯與新聞分類實戰
回覆 數據分析師 數據分析師八大能力培養
回覆 自然語言處理 自然語言處理之AI深度學習