- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用 XGBOOST 进行大数据机器学习
OUTLINE:
1.BOOSTING方法的起源,背景与当前发展状况。
2.XGBOOST的介绍
3.在WINDOWS下安装与配置XGBOOST。
4.设计实验,并使用XGBOOST进行实验。
5.实验核心代码。
6.总结与分析。
杜帅剑
郭振强
于海涛
1.BOOSTING方法的起源,背景与当前发展状况。
Boosting方法来源于两位科学家对强可学习和弱可学习的研究(弱分类器是指分类结果仅仅比随机猜测略好的方法),之后有人证明两种分类器是等价的,也就是说弱可学习算法可以被提升为强可学习算法。Boosting就是一种提升任意给定学习算法分类准确度的方法,大多提升方法都是改变训练数据的概率分布,针对不同分布来调用弱学习算法学习一系列弱分类器,组合成为 一个强分类器,这种思想被称为ensemble。
Adaboost是Boosting方法的第一种实用的实现,在实践中也得到了广泛的使用,它在训练过程中生成成百上千个分类性能较弱的树在,生成每一棵树的时候采用梯度下降的思想,以之前生成的所有树为基础,向着最小化给定目标函数的方向多走一步。在合理的参数 设置下,我们往往要生成一定数量的树才能达到令人满意的准确率。在数据集较大较复杂的时候,我们可能需要几千次迭代运算,耗时比较高。
2.XGBOOST的介绍
XGBoost 算法可以有效的解决这个问题,相对于 Adaboost,XGBoost 采用了二阶泰勒展开以使算法可以更快的收敛到全局最优。同时,XGBoost 采用 C++进行实现,运算速度 和精度都得到了大大的提升,在实践中,XGBoost 赢得了多次机器学习竞赛的冠军,在 Kaggle 也是最火的工具包之一。
3.安装与配置(WINDOWS):
(1)首先从github下载源代码:/tqchen/xgboost
(2)下载成功后,打开xgboost-master源文件夹下的windows文件夹,打开里面的VS工程。 编译生成Python使用的xgboost_wrapper.dll。
(3)打开命令行输入:cd到之前build的目录下;
(4)之后执行 “python setup.py install”进行安装。使用时,只需要在Python 环境下输入 “import xgboost as xgb” 即可。
4.设计实验,并使用XGBOOST进行实验。
我们使用 XGBoost 对 Kaggle 上的数据竞赛”Santander Customer Satisfaction”进行了预测。 该项目的目的是通过银行客户的历史数据训练一个模型来预测客户对银行的满意度,数据集上包含超过 300 个属性,经过仔细分析,我们认为其中的属性包含了存款,贷款,国籍,年龄等等。所有的属性都是匿名的并且包含了许多空值。我们的处理思路如下:
1. 读取数据,观察数据特征,发现可能有常量列和重复列。
2. 消除常量列,29 列数据被删除,这些属性值可能是永远为 0,或者永远为 1。
3. 消除重复列,数据中只有两列重复。
4. 首先使用随机森林进行训练,训练的目标不是得到最终结果,而是期望得到每个属性 特征的重要性,为我们后面进行特征选择做准备。
5. 将重要性1e-5 的列选择出来,最终剩余 193 列数据。
6. 我们在 193 维度下进行预测,构建 xgboost 分类器,设置基本分类器数目为 110,使 用 auc 度量指标
为了直观的观察各个特征,我们画出了特征的重要性分布图,可以发现,大部分特征的 重要性是很低的,只有少数特征在决策中起到了重要的作用:
图上大部分属性的重要性集中在很小的一个范围内,我们将这个范围展开画出图形:
5.实验核心代码(#后面是注释)。
# split data into train and test
# 将数据分成训练集合测试集
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 个。
# 下面进行特征选择
clf = RandomForestClassifier(random_state=1729)
selecto
文档评论(0)