机器学习工具箱的必备算法:XGBoost

机器学习工具箱的必备算法:XGBoost

> Image by WikiImages from Pixabay

最高效的机器学习算法之一

XGBoost是一种监督学习算法,可用于回归和分类。 与所有算法一样,它也有其优点和缺点,我们一定会逐步介绍其优点。

在本文中,我们将仅从分类问题的背景中学习XGBoost。 对于回归部分,请确保随时关注我在datasciencelessons.com上的博客。

监督学习赶上

我不会在这里深入探讨,但是对于那些需要在有监督的学习中快速复习的人而言; 监督学习是指您有特定的想法要预测时。 例如,您要预测未来的房价; 因此,您有想要预测的内容,下一步就是标记历史数据,以预测未来。 更深入地研究这个例子; 假设您想出售房屋,但想知道应该支付的价格,则可能会积累有关房屋的数据点以及该房屋在同一时期的价格。 从这一点出发,您将训练一个模型,将有关您自己房屋的数据点传递到该模型,以生成有关房屋价值的预测。 对于您的预测班级的分类示例; 假设您的Gmail想要预测垃圾邮件……这需要一个模型来训练许多被"标签"为垃圾邮件的电子邮件,以及相应数量的未标记为垃圾邮件的邮件。

到底是什么

XGBoost使用所谓的集成方法。 无需过多介绍集成方法,XGBoost的独特之处在于它如何利用许多模型的输出来生成其预测! XGBoost利用许多所谓的"弱学习者"来产生"强学习者"。

XGBoost流程如下所示:

· 迭代训练许多弱模型

· 根据效果加权每个预测

· 结合许多加权预测得出最终输出。

是什么使XGBoost如此受欢迎?

· 准确性

· 速度

· 该算法很好地利用了现代计算,使其自身可以并行化

· 与其他算法一致的出色表现

您的第一个XGBoost模型

让我们分解步骤!

· 首先,请以python导入XGBoost包

· 分别使用y和X分解因变量和自变量

· 打破火车测试分裂

· 实例化您的分类器

· 训练您的分类器

· 为您的测试集预测

· 评估准确性!

在此示例中,我们将对泰坦尼克号上的生存进行分类。

<code>import xgboost as xgb 
from sklearn.model_selection import train_test_split
X, y = titanic.iloc[:,:-1], titanic.iloc[:,-1]
X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=.2, random_state=44)
xgb_model = xgb.XGBClassifier(objective='binary:logistic', n_estimators= 7, seed=44)
xgb_model.fit(X_train, y_train) 
pred = xgb_model.predict(X_test)
accuracy = float(np.sum(pred == y_test)) / y_test.shape[0]/<code>

做得好! 那是很棒的第一关! 让我们进一步了解如何评估模型的质量。

绩效评估

我们已经在上面的代码片段中看到了准确性,但是混淆矩阵还有其他方面,即准确性和召回率。 我在这里不会谈论这两个问题,但是如果您想了解更多信息,请跳至有关随机森林算法的这篇文章:
https://datasciencelessons.com/2019/08/13/random-forest-for- r-分类/

除了这些,我想谈谈AUC。

简而言之; 如果您选择一个正数据点和一个负数据点,则AUC是正数据点比负数据点排名更高的概率。

XGBoost允许您运行交叉验证测试并指定您在核心算法调用本身中关心的指标。 这部分是通过创建一个称为dmatrix的数据结构来完成的,该数据结构由X和y值组成。

这次的核心区别在于,我们将创建dmatrix,指定模型参数,然后生成将指标指定为AUC的输出。

<code>titanic_dm = xgb.DMatrix(data=X, label=y)
params = {"objective":"reg:logistic", "max_depth":3}
output = xgb.cv(dtrain=titanic_dm, params=params, nfold=3, num_boost_round=5, metrics="auc", as_pandas=True, seed=123)
print((output["test-auc-mean"]).iloc[-1])/<code>

您应该多久使用一次?

XGBoost并非在每次需要预测某些内容时都使用。 但是,在正确的情况下它可能非常有用:

· 你有很多训练数据

· 您不仅拥有分类数据,而且还可以很好地混合使用数字变量和分类变量,或者仅仅是数字变量。

您肯定要使XGBoost远离计算机视觉和与nlp相关的任务…或者如果您的数据非常有限。

与往常一样,我希望这对您的数据科学工作有帮助! 请务必在datasciencelessons.com上查看我的其他帖子!

快乐数据科学!

(本文翻译自Robert Wood的文章《A Must-have Algorithm for Your Machine Learning Toolbox: XGBoost》,参考:
https://towardsdatascience.com/a-must-have-algorithm-for-your-machine-learning-toolbox-xgboost-3e295cf8d69b)


分享到:


相關文章: