xgboost 與 lightgbm 多分類 與 多標籤 任務 python代碼實例

xgboost 與 lightgbm 官方均支持多分類任務,但不直接支持多標籤分類任務,實現多標籤任務的方法之一是結合sklearn 提供的 multiclass 子類,如OneVsRestClassifier。

下面分別給出 多分類 與 多標籤 任務的使用實例。

xgboost 多分類任務

from xgboost import XGBClassifier
import numpy as np

clf_multiclass = XGBClassifier()

train_data = np.random.rand(500, 100)  # 500 entities, each contains 100 features
train_label = np.random.randint(5, size=500)  # 5 targets
val_data = np.random.rand(100, 100)

clf_multiclass.fit(train_data,train_label)
val_pred = clf_multiclass.predict(val_data)

lightgbm 多分類任務

from lightgbm import LGBMClassifier
import numpy as np

clf_multiclass = LGBMClassifier()

train_data = np.random.rand(500, 100)  # 500 entities, each contains 100 features
train_label = np.random.randint(5, size=500)  # 5 targets
val_data = np.random.rand(100, 100)

clf_multiclass.fit(train_data,train_label)
val_pred = clf_multiclass.predict(val_data)

xgboost 多標籤任務

from xgboost import XGBClassifier
from sklearn.multiclass import OneVsRestClassifier
import numpy as np

clf_multilabel = OneVsRestClassifier(XGBClassifier())

train_data = np.random.rand(500, 100)  # 500 entities, each contains 100 features
train_label = np.random.randint(2, size=(500,20))  # 20 targets

val_data = np.random.rand(100, 100)

clf_multilabel.fit(train_data,train_label)
val_pred = clf_multilabel.predict(val_data)

lightgbm 多標籤任務

from lightgbm import LGBMClassifier
from sklearn.multiclass import OneVsRestClassifier
import numpy as np

clf_multilabel = OneVsRestClassifier(LGBMClassifier())

train_data = np.random.rand(500, 100)  # 500 entities, each contains 100 features
train_label = np.random.randint(2, size=(500,20))  # 20 targets

val_data = np.random.rand(100, 100)

clf_multilabel.fit(train_data,train_label)
val_pred = clf_multilabel.predict(val_data)

運行效率相關的幾個測試

1.關於多標籤問題,
根據目前的測試,當數據體量較大(樣本量,特徵量,類別數目)時,此方案速度極慢,且如果啓動並行內存佔用量極大。可能由於使用OVR 直接建立了對應類別數量的分類模型,後續測試是否有更優化的實現方法。

2.xgboost 官方提供了gpu加速支持,調用語句中增加如下超參數即可

clf_multiclass = XGBClassifier(tree_method='gpu_hist', gpu_id=0)

親測使用gpu效率較高。
3. xgboost 與 lightgbm 均可通過n_jobs 設置啓用並行加速,暫未進行測試。
4. lightgbm 的 gpu加速方法暫未測試。

參考資料:

stackoverflow
lightgbm官方文檔
xgboost官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章