Questions tagged «xgboost»

有关与eXtreme Gradient Boosting算法有关的问题。


2
如何解释XGBoost重要性的输出?
我运行了一个xgboost模型。我不完全知道如何解释的输出xgb.importance。 增益,覆盖率和频率的含义是什么,我们如何解释它们? 另外,Split,RealCover和RealCover%是什么意思?我在这里有一些额外的参数 还有其他参数可以告诉我有关功能重要性的更多信息吗? 从R文档中,我了解到“增益”类似于“信息增益”,“频率”是在所有树中使用某个功能的次数。我不知道什么是Cover。 我运行了链接中给出的示例代码(并且还尝试对我正在处理的问题进行相同的操作),但是在那里给出的拆分定义与我计算出的数字不匹配。 importance_matrix 输出: Feature Gain Cover Frequence 1: xxx 2.276101e-01 0.0618490331 1.913283e-02 2: xxxx 2.047495e-01 0.1337406946 1.373710e-01 3: xxxx 1.239551e-01 0.1032614896 1.319798e-01 4: xxxx 6.269780e-02 0.0431682707 1.098646e-01 5: xxxxx 6.004842e-02 0.0305611830 1.709108e-02 214: xxxxxxxxxx 4.599139e-06 0.0001551098 1.147052e-05 215: xxxxxxxxxx 4.500927e-06 0.0001665320 1.147052e-05 216: xxxxxxxxxxxx 3.899363e-06 …

1
为什么xgboost比sklearn GradientBoostingClassifier快得多?
我正在尝试通过50个具有100个数字特征的示例训练一个梯度提升模型。XGBClassifier我的机器43秒内把手500棵树,而GradientBoostingClassifier只处理10棵(!)以1分2秒:(我没有理会试图种植500棵树,因为它会需要几个小时。我使用的是相同的learning_rate,并max_depth设置, 见下文。 是什么使XGBoost如此之快?它是否使用了sklearn家伙不知道的用于梯度增强的新颖实现方式?还是“偷工减料”并种植浅树? ps我知道这个讨论:https : //www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-survey,但是那里找不到答案... XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=500, nthread=-1, objective='binary:logistic', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1) GradientBoostingClassifier(init=None, learning_rate=0.05, loss='deviance', max_depth=10, max_features=None, max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=10, presort='auto', random_state=None, subsample=1.0, verbose=0, warm_start=False)
29 scikit-learn  xgboost  gbm  data-mining  classification  data-cleaning  machine-learning  reinforcement-learning  data-mining  bigdata  dataset  nlp  language-model  stanford-nlp  machine-learning  neural-network  deep-learning  randomized-algorithms  machine-learning  beginner  career  xgboost  loss-function  neural-network  software-recommendation  naive-bayes-classifier  classification  scikit-learn  feature-selection  r  random-forest  cross-validation  data-mining  python  scikit-learn  random-forest  churn  python  clustering  k-means  machine-learning  nlp  sentiment-analysis  machine-learning  programming  python  scikit-learn  nltk  gensim  visualization  data  csv  neural-network  deep-learning  descriptive-statistics  machine-learning  supervised-learning  text-mining  orange  data  parameter-estimation  python  pandas  scraping  r  clustering  k-means  unsupervised-learning 

3
超调XGBoost参数
在处理分类因变量和连续因变量方面,XGBoost一直表现出色。但是,如何为XGBoost问题选择优化的参数? 这是我为最近的Kaggle问题应用参数的方式: param <- list( objective = "reg:linear", booster = "gbtree", eta = 0.02, # 0.06, #0.01, max_depth = 10, #changed from default of 8 subsample = 0.5, # 0.7 colsample_bytree = 0.7, # 0.7 num_parallel_tree = 5 # alpha = 0.0001, # lambda = 1 ) clf <- xgb.train( …
27 r  python  xgboost 

2
LightGBM和XGBoost
我试图了解哪种更好(更准确,尤其是在分类问题中) 我一直在搜索比较LightGBM和XGBoost的文章,但发现只有两个: https://medium.com/implodinggradients/benchmarking-lightgbm-how-fast-is-lightgbm-vs-xgboost-15d224568031这仅与速度有关,而与准确性无关。 https://github.com/Microsoft/LightGBM/wiki/Experiments来自LightGBM的作者,LightGBM在那里赢得胜利并不奇怪。 在我的测试中,两种算法的AUC都差不多,但是LightGBM的运行速度快了2至5倍。 如果LGBM太酷了,为什么在这里和Kaggle上我听不到这么多信息:)
25 xgboost 


4
XGBoost是否自己处理多重共线性?
我目前在具有21个功能(从大约150个功能的列表中选择)的数据集上使用XGBoost,然后对其进行一次热编码以获得〜98个功能。这98个功能中的一些功能有些多余,例如:变量(功能)也显示为B一种一种A和C乙一种乙一种\frac{B}{A}。C一种C一种\frac{C}{A} 我的问题是: 增强决策树如何(如果?)处理多重共线性? 如果不处理,多重共线性的存在将如何影响预测? 据我了解,该模型正在学习一棵以上的树,而最终预测是基于诸如单个预测的“加权总和”之类的。因此,如果这是正确的,那么增强决策树应该能够处理变量之间的相互依赖性。 另外,在相关说明中-XGBoost中的可变重要性对象如何工作?



1
决策树:逐叶(最佳优先)和逐层树遍历
问题1: 我对LightGBM对树的扩展方式的描述感到困惑。 他们声明: 大多数决策树学习算法都是按级别(深度)逐级增长树,如下图所示: 问题1:哪种“最多”算法以这种方式实现?据我所知C4.5和CART使用DFS。XGBoost使用BFS。哪些其他算法或软件包将BFS用于决策树? 问题2: LightGBM指出: LightGBM按叶子方向(最佳优先)生长树,它将选择具有最大delta损失的叶子进行生长。当生长相同的叶子时,与逐级算法相比,逐叶算法可以减少更多的损失。 问题2:说水平生长树的所有叶子具有相同的深度是否正确? 问题3:如果问题2不正确,则遍历结束时(不进行修剪等),从水平和叶子方向生长的树将看起来相同。这是正确的说法吗? 问题4:如果问题3是正确的,“叶级算法比级算法可以减少更多的损失”怎么办?它与修剪后的算法有关吗?

2
xgBoost中的成对排名模型如何拟合?
据我所知,要训练学习对模型进行排名,您需要在数据集中包含三件事: 标签或相关性 组或查询ID 特征向量 例如,Microsoft Learning to Rank数据集使用此格式(标签,组ID和功能)。 1 qid:10 1:0.031310 2:0.666667 ... 0 qid:10 1:0.078682 2:0.166667 ... 我正在尝试利用GBM进行成对排名的xgBoost。他们有一个排名任务的示例,该任务使用C ++程序在上述Microsoft数据集上学习。 但是,我正在使用他们的Python包装器,似乎无法找到可以在其中输入组ID的地方(qid上述)。我可以仅使用功能和相关性分数来训练模型,但是我感觉自己缺少一些东西。 这是一个示例脚本。 gbm = XGBRegressor(objective="rank:pairwise") X = np.random.normal(0, 1, 1000).reshape(100, 10) y = np.random.randint(0, 5, 100) gbm.fit(X, y) ### --- no group id needed??? print gbm.predict(X) # should be in …
14 search  ranking  xgboost  gbm 

3
熊猫数据框到DMatrix
我试图在scikit学习中运行xgboost。而且我只使用Pandas将数据加载到dataframe中。我应该如何在xgboost中使用pandas df。我对运行xgboost算法所需的DMatrix例程感到困惑。

1
XGBRegressor与xgboost.train的巨大速度差异?
如果我使用以下代码训练模型: import xgboost as xg params = {'max_depth':3, 'min_child_weight':10, 'learning_rate':0.3, 'subsample':0.5, 'colsample_bytree':0.6, 'obj':'reg:linear', 'n_estimators':1000, 'eta':0.3} features = df[feature_columns] target = df[target_columns] dmatrix = xg.DMatrix(features.values, target.values, feature_names=features.columns.values) clf = xg.train(params, dmatrix) 它会在大约1分钟内完成。 如果我使用Sci-Kit学习方法训练模型: import xgboost as xg max_depth = 3 min_child_weight = 10 subsample = 0.5 colsample_bytree = 0.6 objective = …

1
具有高基数分类特征的特征重要性用于回归(数字依赖变量)
我试图使用随机森林中的特征重要性来对回归问题执行一些经验性特征选择,该回归问题中所有特征都是分类的,并且其中许多特征具有许多级别(大约100-1000)。假设一键编码会为每个级别创建一个虚拟变量,那么功能的重要性是针对每个级别的,而不是针对每个功能(列)。汇总这些功能重要性的好方法是什么? 我考虑过对某个功能的所有级别进行求和或得出平均重要性(可能前者会偏向具有更高级别的那些功能)。关于这个问题有参考吗? 还有什么可以减少功能数量的呢?我知道套索组,找不到任何易于使用的scikit-learn。

3
需要帮助来了解xgboost的近似拆分点建议
背景: 在xgboost中,迭代尝试将树到所有示例上,这将最小化以下目标:˚F 吨 Ñtttftftf_tnnn ∑i=1n[gift(xi)+12hif2t(xi)]∑i=1n[gift(xi)+12hift2(xi)]\sum_{i=1}^n[g_if_t(x_i) + \frac{1}{2}h_if_t^2(x_i)] 其中gi,higi,hig_i, h_i是我们先前最佳估计\ hat {y}的一阶和二阶导数y^y^\hat{y}(来自迭代t−1t−1t-1): gi=dy^l(yi,y^)gi=dy^l(yi,y^)g_i=d_{\hat{y}}l(y_i, \hat{y}) hi=d2y^l(yi,y^)hi=dy^2l(yi,y^)h_i=d^2_{\hat{y}}l(y_i, \hat{y}) 和lll是我们的损失函数。 问题(最终): 在构建ftftf_t并考虑特定拆分中的特定特征kkk时,他们使用以下启发式方法仅评估某些拆分候选者:他们按其x_k对所有示例进行排序xkxkx_k,通过排序后的列表并将其二阶导数hihih_i。他们仅在总和变化超过\ epsilon时才考虑拆分候选ϵϵ\epsilon。这是为什么??? 他们给的解释使我难以理解: 他们声称我们可以像这样重写以前的公式: ∑i=1n12hi[ft(xi)−gi/hi]2+constant∑i=1n12hi[ft(xi)−gi/hi]2+constant\sum_{i=1}^n\frac{1}{2}h_i[f_t(x_i) - g_i/h_i]^2 + constant 而且我没有遵循代数-您能证明为什么相等吗? 然后他们声称“这恰好是带有标签和权重加权平方损失”-我同意这一说法,但我不知道它与他们使用的拆分候选算法有什么关系...ħ 我gi/higi/higi/hihihih_i 感谢和抱歉,如果这个论坛时间太长。
12 xgboost  gbm 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.