<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 智能計算 > 業(yè)界動(dòng)態(tài) > 劍指LightGBM和XGboost!斯坦福發(fā)表NGBoost算法

劍指LightGBM和XGboost!斯坦福發(fā)表NGBoost算法

作者:skura 時(shí)間:2019-11-19 來(lái)源:雷鋒網(wǎng) 收藏
編者按:與 LightGBM 和 GBoost 比較,它是否具有優(yōu)勢?

Stanford ML Group 最近在他們的論文中發(fā)表了一個(gè)新算法,其實(shí)現被稱(chēng)為 。該算法利用自然梯度將不確定性估計引入到梯度增強中。本文試圖了解這個(gè)新算法,并與其他流行的 boosting 算法 LightGBM 和 XGboost 進(jìn)行比較,以了解它在實(shí)踐中是如何工作的。

本文引用地址:http://dyxdggzs.com/article/201911/407222.htm

注:Stanford ML Group 發(fā)表的論文網(wǎng)址為:https://arxiv.org/abs/1910.03225,有興趣的同學(xué)可以下載學(xué)習~

James Pond 在 Unsplash 雜志上的照片

本文的主要內容包括以下三個(gè)部分:

什么是自然梯度增強?

經(jīng)驗驗證——與 LightGBM 和 XGBoost 的比較

結論

1.什么是自然梯度增強?

正如我在簡(jiǎn)介中所寫(xiě)那樣, 是一種新的 boosting 算法,它使用自然梯度 boosting,是一種用于概率預測的模塊化 boosting 算法。該算法由 Base learners 、參數概率分布和評分規則組成。我將簡(jiǎn)要地解釋一下這些術(shù)語(yǔ)是什么。

Base learners

該算法使用 Base learners。它接受輸入 x,輸出用來(lái)形成條件概率。這些 Base learners 使用 scikit-learn 的決策樹(shù)作為樹(shù)型學(xué)習者,使用嶺回歸作為線(xiàn)性學(xué)習者。

參數概率分布

參數概率分布是一種條件分布。這是由 Base learners 輸出的加法組合形成的。

評分規則

評分規則采用預測的概率分布和對目標特征的觀(guān)察來(lái)對預測結果進(jìn)行評分,真實(shí)的結果分布期望值得到最好的分數。該算法使用最大似然估計(MLE)或 CRPS(連續排序概率得分)。

我們剛剛介紹了 的基本概念。我建議你閱讀原稿以便進(jìn)一步理解(用數學(xué)符號更容易理解算法)。

2.經(jīng)驗驗證:與 LightGBM 和 XGBoost 的比較

billy lee 在 Unsplash 雜志上的照片

讓我們實(shí)現 NGBoost,看看它的性能如何。論文還對各種數據集進(jìn)行了實(shí)驗。他們比較了 MC-dropout、Deep-Ensembles 和 NGBoost 在回歸問(wèn)題中的表現,NGBoost 表現出了很強的競爭力。在這篇博文中,我想展示一下這個(gè)模型在 Kaggle 上著(zhù)名的房?jì)r(jià)預測數據集上的性能。這個(gè)數據集包含 81 個(gè)特征,1460 行,目標是預測銷(xiāo)售價(jià)格。讓我們看看 NGBoost 如何處理這些情況。

目標特征的分布

由于測試算法的性能是本文的目的,我們將跳過(guò)整個(gè)特征工程部分,并將使用 Nanashi 的解決方案。

導入包:

# import packages

import pandas as pd

from ngboost.ngboost import NGBoost

from ngboost.learners import default_tree_learner

from ngboost.distns import Normal

from ngboost.scores

import MLE import lightgbm as lgb

import xgboost as xgb

from sklearn.model_selection import train_test_split

from sklearn.metrics import mean_squared_error

from math import sqrt

在這里,我將使用上面的默認學(xué)習者、分布和評分規則,看看結果如何變化。

# read the dataset

df = pd.read_csv('~/train.csv')

# feature engineering

tr, te = Nanashi_solution(df)

現在使用 NGBoost 算法進(jìn)行預測。

# NGBoost

ngb = NGBoost(Base=default_tree_learner, Dist=Normal, Score=MLE(),

natural_gradient=True,verbose=False)

ngboost = ngb.fit(np.asarray(tr.drop(['SalePrice'],1)),

np.asarray(tr.SalePrice))

y_pred_ngb = pd.DataFrame(ngb.predict(te.drop(['SalePrice'],1)))

對 LightGBM 和 XGBoost 也做一樣的事情:

# LightGBM

ltr = lgb.Dataset(tr.drop(['SalePrice'],1),label=tr['SalePrice'])

param = {

'bagging_freq': 5,

'bagging_fraction': 0.6,

'bagging_seed': 123,

'boost_from_average':'false',

'boost': 'gbdt',

'feature_fraction': 0.3,

'learning_rate': .01,

'max_depth': 3,

'metric':'rmse',

'min_data_in_leaf': 128,

'min_sum_hessian_in_leaf': 8,

'num_leaves': 128, 'num_threads': 8,

'tree_learner': 'serial',

'objective': 'regression',

'verbosity': -1,

'random_state':123,

'max_bin': 8,

'early_stopping_round':100

}

lgbm = lgb.train(param,ltr,num_boost_round=10000,valid_sets= [(ltr)],verbose_eval=1000)

y_pred_lgb = lgbm.predict(te.drop(['SalePrice'],1))

y_pred_lgb = np.where(y_pred>=.25,1,0)

# XGBoost

params = {

'max_depth': 4, 'eta': 0.01,

'objective':'reg:squarederror',

'eval_metric': ['rmse'],

'booster':'gbtree',

'verbosity':0,

'sample_type':'weighted',

'max_delta_step':4,

'subsample':.5,

'min_child_weight':100,

'early_stopping_round':50

}

dtr, dte = xgb.DMatrix(tr.drop(['SalePrice'],1),label=tr.SalePrice),

xgb.DMatrix(te.drop(['SalePrice'],1),label=te.SalePrice)

num_round = 5000

xgbst = xgb.train(params,dtr,num_round,verbose_eval=500)

y_pred_xgb = xgbst.predict(dte)

現在我們用所有算法進(jìn)行了預測。讓我們檢查一下它們的準確性。我們將使用與這次 kaggle 競賽相同的標準,RMSE。

# Check the results

print('RMSE: NGBoost',

round(sqrt(mean_squared_error(X_val.SalePrice,y_pred_ngb)),4))

print('RMSE: LGBM',

round(sqrt(mean_squared_error(X_val.SalePrice,y_pred_lgbm)),4))

print('RMSE: XGBoost',

round(sqrt(mean_squared_error(X_val.SalePrice,y_pred_xgb)),4))

以下是預測結果的總結。

預測結果總結

看來(lái) NGBoost 的性能優(yōu)于其他著(zhù)名的 boosting 算法。公平地說(shuō),我覺(jué)得如果我調整 BGBoost 的參數,它會(huì )更好。

NGBoost 與其他 boosting 算法最大的區別之一是可以返回每個(gè)預測的概率分布。這可以通過(guò)使用 pred_dist 函數可視化。此函數能夠顯示概率預測的結果。

# see the probability distributions by visualising

Y_dists = ngb.pred_dist(X_val.drop(['SalePrice'],1))

y_range = np.linspace(min(X_val.SalePrice), max(X_val.SalePrice), 200)

dist_values = Y_dists.pdf(y_range).transpose()

# plot index 0 and 114

idx = 114

plt.plot(y_range,dist_values[idx])

plt.title(f"idx: {idx}")

plt.tight_layout()

plt.show()

概率分布示例

上面的圖表是每個(gè)預測的概率分布。X 軸顯示銷(xiāo)售價(jià)格的日志值(目標特征)。我們可以觀(guān)察到,指數 0 的概率分布比指數 114 的更寬。

結論與思考

從實(shí)驗結果可以看出,NGBoost 算法與其他著(zhù)名的 boosting 算法具有相同的性能。然而,計算時(shí)間比其他兩種算法要長(cháng)得多。這可以通過(guò)使用子采樣方法來(lái)改進(jìn)。此外,在我的印象中,NGBost 包仍在開(kāi)發(fā)中,例如,沒(méi)有提前停止選項,沒(méi)有顯示中間結果的選項,選擇 Base leaners 的靈活性(到目前為止,我們只能在決策樹(shù)和嶺回歸之間選擇),設置一個(gè)隨機狀態(tài)種子,等等。我相信這些要點(diǎn)將很快得到落實(shí)。

你也可以在我的 GitHub 頁(yè)面上找到我在這篇文章中使用的代碼:https://github.com/kyosek/NGBoost-experiments

總結

NGBoost 是一種返回概率分布的 boosting 算法。

自然梯度增強,一種用于概率預測的模塊化增強算法。這包括 Base leaners、參數概率分布和評分規則。

NGBoost 預測與其他流行的 boosting 算法相比具有很大的競爭力。

*參考文獻:

[1] T. Duan, et al., NGBoost: Natural Gradient Boosting for Probabilistic Prediction (2019), ArXiv 1910.03225

via:https://towardsdatascience.com/ngboost-explained-comparison-to-lightgbm-and-xgboost-fda510903e53@Peter_Dong

本文轉自雷鋒網(wǎng),如需轉載請至雷鋒網(wǎng)官網(wǎng)申請授權。

原文章地址為劍指LightGBM和XGboost!斯坦福發(fā)表NGBoost算法



關(guān)鍵詞: NGBoost boosting算法

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>