首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习:XGBoost 安装及实战应用

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!

01

回顾

昨天推送了XGBoost的原理,已知某个样本 xi ,经过XGBoost 求解得到的 yi 是由 K 个决策树线性叠加的结果。那么在求解每个树的叶子节点的权重参数时,用的目标函数是损失函数 Loss 和正则化惩罚项组成的,XGBoost对这个目标函数做了很多次演化,其中重要的两步:

将损失函数 loss 用泰勒公式展开取前三项,这样能适应一般的问题,而不仅仅是常见的最小平方误差项。

将目标函数对样本的遍历转化为对叶子节点的遍历,这样带来的好处是,目标函数是权重参数的一维二元函数,非常容易求每个叶子节点最好的权重参数和对应的目标值。

下面,看下实际应用中,如何安装 XGBoost 和怎么使用XGBoost做分类和回归任务。

02

XGBoost安装

推荐用 Anaconda 进行安装,输入如下的命令:

如果报错,那就需要去下载 XGBoost 的安装文件(安装文件的后缀名为.whl),下载后放入一个目录,然后输入如下命令:

好了,安装过程结束。

如需要以上whl文件,或者安装过程中出现文件版本不一致问题,请参考以下链接,下载对应的XGBoost的版本:https://www.lfd.uci.edu/~gohlke/pythonlibs/

xgboost‑0.6+20171121‑cp35‑cp35m‑win32.whl

xgboost‑0.6+20171121‑cp35‑cp35m‑win_amd64.whl

xgboost‑0.6+20171121‑cp36‑cp36m‑win32.whl

xgboost‑0.6+20171121‑cp36‑cp36m‑win_amd64.whl

出现下面这个界面,才说明安装成功:

03

XGBoost实战

应用 xgboost 做一个分类任务,用到的数据集是pima-indians-diabetes糖尿病人的分类任务,数据样本前10个如下,可以看到最后一列是标签值,0或1。

3.1 基本训练思路

先应用xgboost对以上模型做一个基本的训练,训练的思路,代码如下:

#1 导入库

from numpy import loadtxt

from xgboost import XGBClassifier

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

#2 加载糖尿病人数据集

dataset = loadtxt('pima-indians-diabetes.csv',delimiter=",")

#3 分割数据为 X 和 y

X = dataset[:,0:8]

Y = dataset[:,8]

#4 用训练数据进行模型拟合

model = XGBClassifier()

model.fit(X_train,y_train)

#5 用测试数据进行预测

y_pred = model.predict(X_test)

predictions = [round(value) for value in y_pred]

#6 评估预测精度

accuracy = accuracy_score(y_test,predictions)

print("精度等于: %.3f%%" %(accuracy*100.0))

结果为,精度等于: 76.623%

3.2 查看每轮集成效果

因为 xgboost 是在原来模型的基础上加入一个又一个的决策树的,那么分析下每加入一个新的树后,问题的精度变化情况,修改第四步为如下:

#4 用训练数据进行模型拟合

evals = [(X_test,y_test)]

model.fit(X_train,y_train,early_stopping_rounds=15,eval_metric="logloss",eval_set=evals, verbose=True)

可以看到,每加入一棵树后,损失值的变化情况,选取前7轮树的集成对损失值的影响情况,如下图所示:

[0]validation_0-logloss:0.665117

Will train until validation_0-logloss hasn't improved in 15 rounds.

[1]validation_0-logloss:0.637394

[2]validation_0-logloss:0.611943

[3]validation_0-logloss:0.591936

[4]validation_0-logloss:0.575281

[5]validation_0-logloss:0.562751

[6]validation_0-logloss:0.551439

[7]validation_0-logloss:0.540937

...

3.3 绘制特征的重要性

查看每个特征的重要程度,与基本训练思路差不多,增加的代码,

导入如下库:

from xgboost import plot_importance

#绘制特征的重要性

plot_importance(model)

pyplot.show()

xgboost也会有很多参数可以调节,常见的有:学习率,树的一些参数:深度等,还有正则化的参数,这些参数都在昨天的xgboost的原理介绍中有涉及,可以参考昨天的推送。

参数调优,可以借助sklearn的 GridSearchCV模块,关于这块可以参考sklearn官网去查看。

04

总结

今天总结了xgboost库的安装和使用,对一个葡萄糖病人的数据集做了分类,绘制了每个特征的重要性,明白了xgboost的原理,对于xgboost的参数调优就变得明了了。

XGBoost 是提升树模型中一个性能比较好的算法,在此之前,比它古老点的,也是一个树提升的模型:GBDT(梯度提升决策树),这个算法的原理又是怎样的呢?它和XGBoost相比,有什么异同点呢? 欢迎关注明天的推送。

算法channel已推送的更多文章:

1机器学习:不得不知的概念(1)

2机器学习:不得不知的概念(2)

3机器学习:不得不知的概念(3)

4回归分析简介

5最小二乘法:背后的假设和原理(前篇)

6最小二乘法原理(后):梯度下降求权重参数

7机器学习之线性回归:算法兑现为python代码

8机器学习之线性回归:OLS 无偏估计及相关性python分析

9机器学习线性回归:谈谈多重共线性问题及相关算法

10机器学习:说说L1和L2正则化

11机器学习逻辑回归:原理解析及代码实现

12机器学习逻辑回归:算法兑现为python代码

13机器学习:谈谈决策树

14机器学习:对决策树剪枝

15机器学习决策树:sklearn分类和回归

16机器学习决策树:提炼出分类器算法

17机器学习:说说贝叶斯分类

18朴素贝叶斯分类器:例子解释

19朴素贝叶斯分类:拉普拉斯修正

20机器学习:单词拼写纠正器python实现

21机器学习:半朴素贝叶斯分类器

22机器学习期望最大算法:实例解析

23机器学习高斯混合模型(前篇):聚类原理分析

24机器学习高斯混合模型(中篇):聚类求解

25机器学习高斯混合模型(后篇):GMM求解完整代码实现

26高斯混合模型:不掉包实现多维数据聚类分析

27高斯混合模型:GMM求解完整代码实现

28数据降维处理:背景及基本概念

29数据降维处理:PCA之特征值分解法例子解析

30数据降维处理:PCA之奇异值分解(SVD)介绍

31数据降维处理:特征值分解和奇异值分解的实战分析

32机器学习集成算法:XGBoost思想

33机器学习集成算法:XGBoost模型构造

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171212G1007100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券