使用XGBoost进行分类和功能选择的介绍

我最近遇到了一个新的[对我]的方法,渐变升压机(特别是XGBoost),在书中 与Python深入学习 by Françoischollet.。 Chollet提及XGBoost是一个成功的应用机器学习者应该熟悉今天的一个浅学习技术,所以我拿了他的话,鸽子进去了解更多。

我大多想写这篇文章,因为我认为其他人的机器学习知识也可能错过了这一话题。我绝不是主题的专家,诚实地难以了解一些机制,但是,我希望这篇文章对您对主题的探索(底部的伟大资源列表)是一个很好的初步初名!

合奏学习

那么XGBoost是什么,它在ML的世界里适合在哪里?梯度升压机器适合一个名为集合学习的ML类别,这是ML方法的一个分支,该分支是一次性培训和预测许多模型,以产生单一的优越输出。将其视为规划一些不同的路线到你从未去过的单一地点;当您使用所有路线时,您开始了解哪些交通灯需要长时间以及如何影响另一个路线,允许您制作完美的路线。您尝试并结合了一些不同的模型来达到最佳结论。合奏学习是类似的!

集合学习分为三个主要子集:

    • 袋装:Bootstrap聚合或袋装有两个不同的功能,它定义其培训和预测。对于培训,它利用引导程序将培训数据分解为不同的随机子样本,该数据的不同迭代用于训练的模型。对于预测,堆垛分类器将使用来自每个模型的最多投票的预测来产生其输出,并且堆垛回归将花费平均所有模型以产生输出。袋装通常应用于高方差模型,例如决策树,随机林算法是袋装的非常紧密的变化。
    • 堆叠:堆叠模型是一个“元模型”,它利用来自许多集合的输出,通常显着不同,模型作为输入特征。例如,这允许您使用所有培训数据训练K-NN,线性回归和决策树,然后使用这些输出并使用逻辑回归合并它们。这个想法是,这可以减少过度装备和提高准确性。
  • 提升:终于提升了!升压的核心定义是一种将弱学习者转换为强大的学习者的方法,通常适用于树木。更明确地,促进算法顺序地增加了模型的迭代,沿途调整弱者的权重。这减少了模型的偏差,通常提高精度。受欢迎的促销algos是adaboost,渐变树升压和xgboost,我们将专注于这里。

XGBoost.

极端渐变升压或 XGBoost. 是针对现代数据科学问题和工具进行了优化的渐变升级算法库。它利用了提升的技术,并以易于使用的库包裹。 XGBoost的一些主要优点是其高度可扩展/并行,快速执行,通常优于其他算法。

AI时间期刊资源
你学习数据科学吗?

Check out what 图书 帮助20多个成功的数据科学家在他们的职业生涯中成长。

在本节中,我们将通过预测乘客在泰坦尼克号上幸存来探索XGBoost。可以找到用于此分析的完整Jupyter笔记本 这里.

我首先将泰坦尼克号数据加载到熊猫数据框架中并探索可用字段。 注意:在加载简洁之前,我手动转换在CSV之前的“开始”和“性别”功能

大多数元素似乎是连续的,那些包含文本的元素似乎与预测幸存者无关紧要,因此我创建了一个新的数据帧('train_df')来仅包含我想要训练的功能。另外,请注意,XGBoost将处理NAN,但(至少对我)不处理字符串。

 就像其他模特一样,它’s important to break the data up into training and test data, which I did with SKLearn’s train_test_split. Note that I decided to go with only 10% test data. I did this primarily because the titanic set is already small and my training data set is already a subset of the total data set available. This is probably leading to a bit of overfitting and is likely not best practice.

With my data ready and my goal focused on classifying passengers as survivors or not, I imported the XGBClassifier from XGBoost. We then create an object for XGBClassifier() and pass it some parameters (not necessary, but I ended up wanting to try tweaking the model a bit manually). Finally we fit() the model to our training features and labels, and we’re ready to make predictions! As you can see, using the XGBoost library is very similar to using SKLearn.

通过我的模型进行预测,并使用准确性作为我的措施,我可以看到我的准确度超过81%。这是一点手动调整且虽然我希望能够更好的结果,但它仍然比我过去的决策树在过去达到了相同的数据。

One super cool module of XGBoost is plot_importance which provides you the F分数 每个功能,显示该功能对模型的重要性。这有助于选择功能,不仅适用于您的XGB,还可以为您在数据上运行的任何其他类似型号。

把它带到下一级,我找到了一个 奇妙的代码样本和文章 关于评估要使用的功能数量的自动方法,所以我不得不尝试一下。

Essentially this bit of code trains and tests the model by iteratively removing features by their importance, recording the model’s accuracy along the way. This allows you to easily remove features without simply using trial and error. Although not shown here, this approach can also be applied to other parameters (learning_ratemax_depth, etc) of the model to automatically try different tuning variables. I won’T进入调整模型的细节,但是,大量的调谐参数是XGBoost如此流行的原因之一。

我希望这是一个有用的介绍xgboost是什么以及如何使用它。谢谢阅读。现在,去建造一些东西!

有用的资源/参考

GXBoost概述 (基本阅读!)

特征重要性和选择

调整XGBoost.

合奏学习

贡献者

MBA候选人@康奈尔科技|约翰逊管理研究生院

贡献者表达的意见是他们自己的意见。

关于Jonathan Hirko.

MBA候选人@康奈尔科技|约翰逊管理研究生院

查看Jonathan Hirko的所有帖子→