xgboost参数及调参
常规参数General Parameters
- booster[default=gbtree]:选择基分类器,可以是:gbtree,gblinear或者dart。gbtree和draf基于树模型,而gblinear基于线性模型。
- slient[default=0]:是否有运行信息输出,设置为1则没有运行信息输出。
- nthread[default to maximum number of threads available if not set]:线程数,默认使用能使用的最大线程数。
模型参数Booster Parameters
- eta[default=0.3]:收缩参数,也即学习率。用于更新叶节点权重时,乘该系数,避免步长过大。参数值越大,越可能无法收敛。把eta设置的小一些,小的学习率可以使后面的学习更加仔细。
- min_child_weight[default=1]:每个叶子里面的h的和至少是多少,这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数越小,越容易过拟合。
- max_depth[default=6]:每棵树的最大深度,该参数设置越大,越容易过拟合。
- max_leaf_nodes:最大叶节点数,和max_depth类似。
- gamma[default=0]:后剪枝时,用于控制是否后剪枝。
- max_delta_step[default=0]:该参数可以使得更新更加平缓,如果取0表示没有约束,如果取正值则使得更新步骤更加保守,防止更新时迈的步子太大。
- subsample[default=1]:样本随机样本,该参数越大,越容易过拟合,但设置过大也会造成过拟合。
- colsample_bytree[default=1]:列采样,对每棵树生成时用的特征进行列采样,一般设置为0.5-1
- lambda[default=1]:模型的L2正则化参数,参数越大,越不容易过拟合。
- alpha[default=0]:模型的L1正则化参数,参数越大,越不容易过拟合。
- scale_pos_weight[default=1]:如果取值大于0,在类别样本偏斜时,有助于快速收敛。
学习任务参数(Learning Task Parameters)
- objective[default=reg:linear]:定义最小化损失函数类型,常用参数:
- binary:logistic –二元分类的逻辑回归模型,返回预测概率(p(y=1|x,w))
- multi:softmax –使用softmax objective的多类分类模型,返回预测的分类。这里需要设置一个额外的num_class参数,表示类的个数。
- multi:softprob –与softmax相同,但是返回每个数据点属于每个类的预测概率。
- eval_metric[default according to objective]:用于衡量验证数据的参数,即是各评价标准,常用参数如下:
- rmse – root mean square error
- mae – mean absolute error
- logloss – negative log-likelihood
- error – Binary classification error rate (0.5 threshold)
- merror – Multiclass classification error rate
- mlogloss – Multiclass logloss
- auc: Area under the curve
- seed[default=0]:随机种子,用于产生可复现的结果。
这里,xgboost与sklearn的命名风格有点区别,如:
- eta->learning_rate
- lambda->reg_lambda
- alpha->reg_alpha
参数调优
import必要的库
#Import libraries:
import pandas as pd
import numpy as np
import xgboost as xgb
from xgboost.sklearn import XGBClassifier
from sklearn import cross_validation, metrics #Additional scklearn functions
from sklearn.grid_search import GridSearchCV #Perforing grid search import matplotlib.pylab as plt
%matplotlib inline
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 12, 4 train = pd.read_csv('train_modified.csv')
target = 'Disbursed'
IDcol = 'ID'
注意,这里import两种XGBoost:
- xgb-直接引用xgboost,接下来会用到其中的‘cv’函数。
- XGBClassifier-是xgboost的sklearn包。这个包允许我们使用Grid Search和并行处理。
参考链接:http://blog.csdn.net/u010657489/article/details/51952785
xgboost参数及调参的更多相关文章
- 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参
上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...
- XGBoost和LightGBM的参数以及调参
一.XGBoost参数解释 XGBoost的参数一共分为三类: 通用参数:宏观函数控制. Booster参数:控制每一步的booster(tree/regression).booster参数一般可以调 ...
- XGBOOST应用及调参示例
该示例所用的数据可从该链接下载,提取码为3y90,数据说明可参考该网页.该示例的“模型调参”这一部分引用了这篇博客的步骤. 数据前处理 导入数据 import pandas as pd import ...
- xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?
问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了.但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高.用RandomFore ...
- xgboost的遗传算法调参
遗传算法适应度的选择: 机器学习的适应度可以是任何性能指标 —准确度,精确度,召回率,F1分数等等.根据适应度值,我们选择表现最佳的父母(“适者生存”),作为幸存的种群. 交配: 存活下来的群体中的父 ...
- lgb参数及调参
1 参数含义 max_depth: 设置树的最大深度,默认为-1,即不限制最大深度,它用于限制过拟合 num_leave: 单颗树的叶子数目,默认为31 eval_metric: 评价指标,可以用lg ...
- XGBoost参数调优完全指南(附Python代码)
XGBoost参数调优完全指南(附Python代码):http://www.2cto.com/kf/201607/528771.html https://www.zhihu.com/question/ ...
- xgboost&lightgbm调参指南
本文重点阐述了xgboost和lightgbm的主要参数和调参技巧,其理论部分可见集成学习,以下内容主要来自xgboost和LightGBM的官方文档. xgboost Xgboost参数主要分为三大 ...
- Python中Gradient Boosting Machine(GBM)调参方法详解
原文地址:Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python by Aarshay Jain 原文翻译与校对 ...
随机推荐
- 怎么样Windows7在配置ASPserverIIS
在百度经验浏览:http://jingyan.baidu.com/article/5553fa82ed97c765a23934f3.html Internet Information Services ...
- 【u115】&&【t031】 01迷宫
01迷宫(maze01) Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相 ...
- 关于生命周期里执行setState
React里生命周期的哪些方法里可以执行setState,这对于很多使用React很长时间的开发都是个迷惑的问题. 先看一下完整的生命周期. 再看两篇文章 React componentDidUpda ...
- js css 实现简单的计算器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- express笔记
1.req.query: 获取get请求的查询字符串对象 2.req.body: 获取post请求的查询字符串对象,要使用该方法需要先使用body-parser中间件,app.use(bodyPars ...
- Redmine迁移至华为软件开发云-项目管理
一.方案概述 要想将Redmine中某个项目的数据导入到华为软件开发云(以下简称开发云),如果说是按照Redmine中的数据一条一条的在开发云中新建出来,肯定不是一个明智的方案,下面就是给大家介绍一个 ...
- 利用jQuery传送json格式的字符串,后端用ashx文件来接收
在Default.aspx里面,我们会透过javascript建立两个物件,分别有Name和Age的属性,再透过Array的方式,将这两个物件塞到Array里面去.使用Ajax内建的$.ajax AP ...
- CUDA页锁定内存(Pinned Memory)
对CUDA架构而言,主机端的内存被分为两种,一种是可分页内存(pageable memroy)和页锁定内存(page-lock或 pinned).可分页内存是由操作系统API malloc()在主机上 ...
- Windows安装Linux子系统--安装GUI界面
原文:Windows安装Linux子系统--安装GUI界面 前段时间发现Windows可以安装Linux子系统了,恰逢电脑换了固态,还没装Linux,不如趁机体验一番! 1.准备工作 1.1.打开 ...
- FMXUI - UI.Dialog 示例(比较漂亮)
在 FMXUI 开源库,增加了 UI.Dialog 单元.此单元实现了跨平台的基础对话框组件.使用时引用 UI.Dialog 即可.如果需要自定义对话框的样式, 可以添加一个 TDialogStyle ...