<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【數(shù)據(jù)競賽】Kaggle知識點:樹模型特征Embedding

          共 1607字,需瀏覽 4分鐘

           ·

          2022-02-17 05:54

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

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

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

          Tree Categorical Embedding

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

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

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

          具體API

          XGBoost

          使用Learning API,設(shè)置pred_leaf參數(shù)

          import?xgboost?as?xgb
          from?sklearn.datasets?import?make_classification

          X,?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,設(shè)置pred_leaf參數(shù)

          import?lightgbm?as?lgb
          from?sklearn.datasets?import?make_classification

          X,?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函數(shù)

          import?catboost?as?cab
          from?sklearn.datasets?import?make_classification

          X,?Y?=?make_classification(1000,?20)
          clf?=?cab.CatBoostClassifier(iterations=200)
          clf.fit(X,?Y)
          clf.calc_leaf_indexes(X)

          使用細節(jié)

          1. leaf index預(yù)測維度與具體樹個數(shù)相關(guān),也就是與具體的round相關(guān)。
          2. leaf index的預(yù)測結(jié)果為類別類型。
          3. leaf index建議交叉驗證編碼,避免自己訓(xùn)練并編碼自己。

          交叉驗證實現(xiàn):https://www.kaggle.com/mmueller/categorical-embedding-with-xgb/script

          學(xué)習(xí)數(shù)據(jù)競賽,組隊參賽,交流分享
          添加??微信


          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  性感美女香蕉视频 | 日本无码少妇内谢视频 | 黄色成人视频在线免费观看 | 亚洲乱码一二三四区国产 | 欧美激情成人网站 |