疑問learning to rank之lambdamart的前世今生
gbdt原理(非常重要)
決策樹-上-id3_c4.5_cart_及剪枝
資料探勘十大演算法之cart詳解
深入理解gbdt回歸演算法。對gbdt的原理講解的比較清晰,舉的例子也比較好。
參考learning to rank之lambdamart的前世今生。
損失函式,其中算分函式s=f(x;w)。
這個損失函式,log部分是用算分函式si擬合實際的相關性偏序關係,本質上還是二分類交叉熵。|△z|是位置權重的影響,在排序問題中,位置越靠前越重要,相應的負梯度應該更大。
對s的一階梯度
物理意義:上式預設了文件i的相關性高於j。
對s的二階梯度
lambdamart演算法流程:
lambdamart演算法流程圖:
參考wepon: 機器學習演算法中 gbdt 和 xgboost 的區別有哪些?
參考gbdt和xgboost:原理、推導、比較。
梯度資訊: 傳統gbdt只引入了一階導數資訊,xgboost引入了一階導數和二階導數資訊,其對目標函式引入了二階近似,求得解析解, 用解析解作為gain來建立決策樹, 使得目標函式最優(gain求到的是解析解)。另外,xgboost工具支援自定義損失函式,只要函式可一階和二階求導。
正則項: xgboost引入了正則項部分,這是傳統gbdt中沒有的。加入正則項可以控制模型的複雜度,防止過擬合。正則項γ相當於預剪枝的閾值,只有**的收益大於閾值時才**。
基分類器: 傳統gbdt以cart作為基分類器,xgboost還支援線性分類器,這個時候xgboost相當於帶l1和l2正則化項的邏輯斯蒂回歸(分類問題)或者線性回歸(回歸問題)。
**方式:gbdt是用的mse,xgboost是經過優化推導後的。
缺失值:對於特徵的值有缺失的樣本,xgboost可以自動學習出它的**方向。
特徵取樣: xgboost引入了特徵子取樣,像隨機森林那樣,既可以降低過擬合,也可以減少計算。
並行化: 傳統gbdt由於樹之間的強依賴關係是無法實現並行處理的,但是xgboost支援並行處理,xgboost的並行不是在模型上的並行,而是在特徵上的並行,將特徵列排序後以block的形式儲存在記憶體中,在後面的迭代中重複使用這個結構。這個block也使得並行化成為了可能,其次在進行節點**時,計算每個特徵的增益,最終選擇增益最大的那個特徵去做分割,那麼各個特徵的增益計算就可以開多執行緒進行。
除此之外,xgboost實現了**點尋找近似演算法、缺失值處理、列抽樣(降低過擬合,還能減少計算)等包括一些工程上的優化,lightgbm是xgboost的更高效實現。
id3演算法採用資訊增益;
c4.5演算法採用資訊增益比;
cart分類數採用gini係數;
cart回歸樹採用mse;
gbdt採用mse;
xgboost採用xgboost打分函式。
資訊熵,越小越有序
資訊增益
資訊增益率
其中split為
gini係數,越小越有序
gini係數加權求和
xgboost打分函式
小量近似下等價。gini係數沒有對數運算,計算效率更高。參考cart演算法為什麼選用gini指數?
樹模型幾個知識點
id3無法處理連續特徵 c4.5可以處理連續特徵,用資訊增益率選擇 特徵,遇到連續特徵的時候,依次二分樣本,根據資訊增益獲得最佳分割點 id3和c4.5都只能處理分類問題,cart既能處理分類問題,又能處理回歸問題 cart分割點的選擇粒度更細,根據gini係數,選擇某個特徵的某個值作為分割點 分為...
知識點 劃分樹
劃分樹,類似線段樹,主要用於求解某個區間的第k 大元素 時間複雜度log n 快排本也可以快速找出,但快排會改變原序列,所以每求一次都得恢復序列。建樹 o n logn o nlogn o nlog n 查詢結點 o l ogn o logn o logn poj 2104 題目意思就是,給你n 個...
知識點 虛樹
簡介 聽名字高大上,實際上沒什麼東西 虛樹的題主要難在如何操作虛樹 給出 k 個關鍵點,我們要建出一棵只包含這些關鍵點和他們 lca 的點數最少的樹,以實現 dp 等操作。標誌性的資料範圍是 sum leq 10 之類的。建樹方法 1.將所有關鍵點按 dfs 序排序。2.開乙個棧表示根到當前點的虛樹...