標籤:

N問GBDT

寫在前面

關於GBDT(Gradient Boosting Decision Tree)的資料非常的多,本文試著換個角度來看GBDT。原理流程明白了,真上手時還會遇到各種各樣的問題,不妨列個list,check一下。

OK,lets go!

  1. 怎樣設置單棵樹的停止生長條件?
  2. 如何評估特徵的權重大小?
  3. 如何人工去干預某列特徵的權重?
  4. 當增加樣本數量時,訓練時長是線性增加嗎?
  5. 當增加樹的棵樹時,訓練時長是線性增加嗎?
  6. 當增加一個棵樹葉子節點數目時,訓練時長是線性增加嗎?
  7. 每個節點上都保存什麼信息?
  8. 常見的衡量分裂loss的指標都有哪些?
  9. 分類問題還說,決策樹DT如何來做回歸的?
  10. 如何防止過擬合?
  11. boosting的本意是是什麼?跟bagging,random forest,adaboost,gradient boosting有什麼區別?
  12. gbdt中哪些部分可以並行?
  13. 樹生長成畸形樹,會帶來哪些危害,如何預防?
  14. feature sample ratio = 1.0會怎麼樣?跟特徵數量的多少有聯繫么?
  15. 每個點分裂收益是如何計算的?
  16. 使用gbrank時,pair的正逆序比和權重有什麼關係?正逆序比越大權重就一定高么?
  17. 如何選擇特徵和相應的分裂點?
  18. 假如某些特徵是稀疏特徵,在特徵選擇的時候會吃虧,怎麼辦?
  19. 通過更改指定樣本sample和label來達到調整權重的目的,會有什麼缺點和不足?
  20. G所表示的gradient在哪裡體現的?
  21. 通過前N棵樹已經正確分類的數據,在第N+1棵樹上是會被怎樣處理的?
  22. 既然在實際應用的過程中是residuals(殘差),為何還稱其為GBDT,而不是稱其為RBDT?
  23. 每棵樹賦權重是怎樣體現的?
  24. GBDT可以解決分類、回歸問題,若是面對rank問題,該怎麼處理?
  25. 對於rank問題,優化的目標函數是什麼樣的?怎麼樣優化這種非凸函數?
  26. 為什麼大多數場景都選擇square loss作為loss function?它有什麼優缺點?
  27. boosting和bagging之間的比較?
  28. gbdt不適合於那些場景,或是說哪些場景下線性模型反而更好,或是差不多?
  29. 選擇損失函數時,squareloss和logloss的適用場景?
  30. 當前很火熱的xgboost和一般的gbdt相比,有哪些區別?
  31. xgboost採用了二階導,這樣會帶來哪些缺點
  32. xgboost節點分裂選取特徵和特徵分裂值時,為什麼要先sort by one feature?
  33. 對於Nfeature,構建一棵深度為d的樹,時間複雜度是什麼樣的?
  34. 若是添加一個冗餘特徵會怎麼樣?
  35. gbdt涉及到了哪些主要參數,是怎樣來調參的?
  36. 如何處理非均衡數據?
  37. xgboost中booster有三個選項,gblinear,gbtree,dart,三者的區別與適用場景?
  38. 簡述xgboost中提及的近似直方圖演算法。
  39. 如何為gbdt設計正則項?
  40. 對於指定的某數據集,在其上建立最優決策樹,複雜度是多少?(仔細想想)
  41. 假如數據量過大,在分裂特徵的時候不能一次性的載入到內存中,怎麼處理?
  42. 如何處理預設值,或稀疏數據?
  43. 怎麼剪枝?
  44. 假設已經有個已經訓好的gbdt model,此時又設計了一個新的特徵,若不重訓模型,怎樣來做?(實踐中,dump數據和數據準備可能會很麻煩,不想重新model,有什麼trick?)

持續更新ing...


推薦閱讀:

TAG:机器学习 | gbdt |