日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【数据竞赛】Kaggle知识点:树模型特征Embedding

發布時間:2025/3/12 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据竞赛】Kaggle知识点:树模型特征Embedding 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在對數據進行編碼的過程中,經常會遇到一些非結構化的字段(如列表、文本),或者高維稀疏的字段。

在使用樹模型的過程中,上述字段對樹模型很不友好,會增加樹模型的訓練時間,一般情況需要通過人工特征提取,然后進行。

有沒有一種可以適合樹模型編碼的操作呢?在樹模型中可以通過葉子節點的次序作為進行編碼,在Kaggle中稱為Tree Categorical Embedding。

Tree Categorical Embedding

在訓練完樹模型之后,可以通過對模型進行預測,通過節點邏輯的判斷從根節點到葉子節點。

此時葉子節點中包含的樣本類別(或標簽均值)為最終的預測結果。這里想要具體的index,也就是樣本預測到第幾個葉子節點中。

在XGBoost中,擁有多棵樹。則一個樣本將會被編碼為多個index,最終可以將index作為額外的類別特征再加入到模型訓練。

具體API

XGBoost

使用Learning API,設置pred_leaf參數

import?xgboost?as?xgb from?sklearn.datasets?import?make_classificationX,?Y?=?make_classification(1000,?20) dtrain?=?xgb.DMatrix(X,?Y) dtest?=?xgb.DMatrix(X)param?=?{'max_depth':10,?'min_child_weight':1,?'learning_rate':0.1} num_round?=?200 bst?=?xgb.train(param,?dtrain,?num_round) bst.predict(dtest,?pred_leaf=True)

LightGBM

使用sklearn API或者Learning API,設置pred_leaf參數

import?lightgbm?as?lgb from?sklearn.datasets?import?make_classificationX,?Y?=?make_classification(1000,?20) dtrain?=?lgb.Dataset(X,?Y) dtest?=?lgb.Dataset(X)param?=?{'max_depth':10,?'min_child_weight':1,?'learning_rate':0.1} num_round?=?200 bst?=?lgb.train(param,?dtrain,?num_round) bst.predict(X,?pred_leaf=True)

CatBoost

使用calc_leaf_indexes函數

import?catboost?as?cab from?sklearn.datasets?import?make_classificationX,?Y?=?make_classification(1000,?20) clf?=?cab.CatBoostClassifier(iterations=200) clf.fit(X,?Y) clf.calc_leaf_indexes(X)

使用細節

  • leaf index預測維度與具體樹個數相關,也就是與具體的round相關。

  • leaf index的預測結果為類別類型。

  • leaf index建議交叉驗證編碼,避免自己訓練并編碼自己。

  • 交叉驗證實現:https://www.kaggle.com/mmueller/categorical-embedding-with-xgb/script

    學習數據競賽,組隊參賽,交流分享
    添加👇微信

    總結

    以上是生活随笔為你收集整理的【数据竞赛】Kaggle知识点:树模型特征Embedding的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。