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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

使用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下载源代码:•(2)下载成功后,打开xgboost-master源文件夹下的windows文件夹,打开里面的VS工程。编译生成Python使用的xgboost_wrapper.dll。•(3)打开命令行输入:cd到之前build的目录下;•(4)之后执行“pythonsetup.pyinstall”进行安装。使用时,只需要在Python环境下输入“importxgboostasxgb”即可。4.设计实验,并使用XGBOOST进行实验。我们使用XGBoost对Kaggle上的数据竞赛”SantanderCustomerSatisfaction”进行了预测。该项目的目的是通过银行客户的历史数据训练一个模型来预测客户对银行的满意度,数据集上包含超过300个属性,经过仔细分析,我们认为其中的属性包含了存款,贷款,国籍,年龄等等。所有的属性都是匿名的并且包含了许多空值。我们的处理思路如下:•1.读取数据,观察数据特征,发现可能有常量列和重复列。•2.消除常量列,29列数据被删除,这些属性值可能是永远为0,或者永远为1。•3.消除重复列,数据中只有两列重复。•4.首先使用随机森林进行训练,训练的目标不是得到最终结果,而是期望得到每个属性特征的重要性,为我们后面进行特征选择做准备。•5.将重要性1e-5的列选择出来,最终剩余193列数据。•6.我们在193维度下进行预测,构建xgboost分类器,设置基本分类器数目为110,使用auc度量指标•为了直观的观察各个特征,我们画出了特征的重要性分布图,可以发现,大部分特征的重要性是很低的,只有少数特征在决策中起到了重要的作用:图上大部分属性的重要性集中在很小的一个范围内,我们将这个范围展开画出图形:5.实验核心代码(#后面是注释)。•#splitdataintotrainandtest•#将数据分成训练集合测试集•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)•selector=clf.fit(X_train,y_train)•print(thereare%dfeaturehaveaimportancevaluemorethan1e-5%\•(np.count_nonzero(clf.feature_importances_1e-5)))•#根据以上的输出结果,如果我们采用默认的阈值1e-5进行特征选择,那么将从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%尚有一些差距。想要更好的结果需要我们对特征和模型进行更加细致的分析与调优。•本次实验主要使用了Xgboost算法进行数据竞赛,根据结果来看,Xgboost非常适合在大数据下进行机器学习,训练速度和精度都非常好,简单的调整即能得出一个良好的结果。同时,Xgboost的分布式版本已经发布,而且在不断的完善中。可以说,这是一个非常有潜力的工具包。

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功