当前位置:文档之家› 使用XGBOOST进行机器学习实验报告

使用XGBOOST进行机器学习实验报告

使用 XGBOOST 进行大数据机器学习
OUTLINE:
1.BOOSTING方法的起源,背景与当前发展状况。 2.XGBOOST的介绍
3.在WINDOWS下安装与配置XGBOOST。
4.设计实验,并使用XGBOOST进行实验。 5.实验核心代码。
杜帅剑 郭振强 于海涛
6.总结与分析。
1.BOOSTING方法的起源,背景与当前发展状况。

• •
test_id = test.ID
test = test.drop(["ID"],axis=1) X = train.drop(["TARGET","ID"],axis=1)

• • • •
y = train.TARGET.values
X_train, X_test, y_train, y_test = train_test_split(X, y, \ test_size=0.2,random_state=1729) print(X_train.shape, X_test.shape, test.shape) # 我们采用默认的阈值 1e-5 进行特征选 择,那么将从 306 个特征中选出 193 个。
• • • • • •
1. 读取数据,观察数据特征,发现可能有常量列和重复列。 2. 消除常量列,29 列数据被删除,这些属性值可能是永远为 0,或者永远为 1。 3. 消除重复列,数据中只有两列重复。 4. 首先使用随机森林进行训练,训练的目标不是得到最终结果,而是期望得到 每个属性 特征的重要性,为我们后面进行特征选择做准备。 5. 将重要性>1e-5 的列选择出来,最终剩余 193 列数据。 6. 我们在 193 维度下进行预测,构建 xgboost 分类器,设置基本分类器数目为 110,使 用 auc 度量指标
2.XGBOOST的介绍
• XGBoost 算法可以有效的解决这个问题,相对于 Adaboost,XGBoost 采
用了二阶泰勒展开以使算法可以更快的收敛到全局最优。同时, XGBoost 采用 C++进行实现,运算速度 和精度都得到了大大的提升, 在实践中,XGBoost 赢得了多次机器学习竞赛的冠军,在 Kaggle 也是最 火的工具包之一。
• Boosting方法来源于两位科学家对强可学习和弱可学习的研究(弱分类器是指分类结果
仅仅比随机猜测略好的方法),之后有人证明两种分类器是等价的,也就是说弱可学 习算法可以被提升为强可学习算法。Boosting就是一种提升任意给定学习算法分类准确 度的方法,大多提升方法都是改变训练数据的概率分布,针对不同分布来调用弱学习 算法学习一系列弱分类器,组合成为 一个强分类器,这种思想被称为ensemble。
• •
# split data into train and test # 将数据分成训练集合测试集
• • • • • • • • • •
clf = Re=1729)
print("there are %d feature have a importance value more than 1e-5" % \ (np.count_nonzero(clf.feature_importances_> 1e-5))) # 根据以上的输出结果,如果我们采用默认的阈值 1e5 进行特征选择,那么将从 306 # 个特征中选出 193 个。 # 下面进行特征选择 fs = SelectFromModel(selector, prefit=True) # 按选择到的特征分别处理训练集和测试集 X_train = fs.transform(X_train) X_test = fs.transform(X_test)


test = fs.transform(test)
print(X_train.shape, X_test.shape, test.shape)

# 下面进行特征选择
6.总结与分析。
• 通过以上的实验,我们在 Kaggle 上得到了一个 0.83 的分数,意味着我
们在测试集上的 准确率达到了 83.9%。这个结果距离榜单上最高分数 84.3%尚有一些差距。想要更好的结果需要我们对特征和模型进行更加 细致的分析与调优。
• (3)打开命令行输入:cd到之前build的目录下; • (4)之后执行 “python setup.py install”进行安装。使用时,只需要在Python
环境下输入 “import xgboost as xgb” 即可。
4.设计实验,并使用XGBOOST进行实验。
我们使用 XGBoost 对 Kaggle 上的数据竞赛”Santander Customer Satisfaction”进行了预测。 该项目的目的是通过银行客户的历史数据训练 一个模型来预测客户对银行的满意度,数据集上包含超过 300 个属性, 经过仔细分析,我们认为其中的属性包含了存款,贷款,国籍,年龄等 等。所有的属性都是匿名的并且包含了许多空值。我们的处理思路如下:
• Adaboost是Boosting方法的第一种实用的实现,在实践中也得到了广泛的使用,它在训
练过程中生成成百上千个分类性能较弱的树在,生成每一棵树的时候采用梯度下降的思 想,以之前生成的所有树为基础,向着最小化给定目标函数的方向多走一步。在合理 的参数 设置下,我们往往要生成一定数量的树才能达到令人满意的准确率。在数据集 较大较复杂的时候,我们可能需要几千次迭代运算,耗时比较高。
• 本次实验主要使用了 Xgboost 算法进行数据竞赛,根据结果来看,
Xgboost 非常适合在大数据下进行机器学习,训练速度和精度都非常好, 简单的调整即能得出一个良好的结果。 同时,Xgboost 的分布式版本已 经发布,而且在不断的完善中。可以说,这是一个非常有潜力的工具包。
• 为了直观的观察各个特征,我们画出了特征的重要性分布图,可以发现,
大部分特征的 重要性是很低的,只有少数特征在决策中起到了重要的 作用:
图上大部分属性的重要性集中在很小的一个范围内,我们将这个范 围展开画出图形:
5.实验核心代码(#后面是注释)。 • selector = clf.fit(X_train, y_train)
3.安装与配置(WINDOWS):
• (1)首先从github下载源代码:https:///tqchen/xgboost • (2)下载成功后,打开xgboost-master源文件夹下的windows文件夹,打开
里面的VS工程。 编译生成Python使用的xgboost_wrapper.dll。
相关主题