文章目录
- 1 xgboost
- 1.1 基本用法
- 1.1.1 通用参数
- 1.1.2 集成参数
- 1.1.3 任务参数
- 1.2 例子
- 1.3 当评价函数不在默认范围内
- 2 lightGBM
1 xgboost
1.1 基本用法
xgboost有三类参数:通用参数、集成参数和任务参数。
1.1.1 通用参数
booster:可选值gbree、gblinear。默认值是gbree。这是指定用哪种基模型。
silent,可选值0,1。默认是0,表示有输出。
nthread 线程数
1.1.2 集成参数
eta 学习率。默认值0.3,范围[0,1]。
gamma [default=0, alias: min_split_loss]为了对树的叶子节点做进一步的分割而必须设置的损失减少的最小值,该值越大,算法越保守range: [0,∞]
max_depth [default=6]用于设置树的最大深度range: [1,∞]
min_child_weight [default=1]表示子树观测权重之和的最小值,如果树的生长时的某一步所生成的叶子结点,其观测权重之和小于min_child_weight,那么可以放弃该步生长,在线性回归模式中,这仅仅与每个结点所需的最小观测数相对应。该值越大,算法越保守range: [0,∞]
max_delta_step [default=0]如果该值为0,就是没有限制;如果设为一个正数,可以使每一步更新更加保守通常情况下这一参数是不需要设置的,但是在logistic回归的训练集中类极端不平衡的情况下,将这一参数的设置很有用,将该参数设为1-10可以控制每一步更新range: [0,∞]
subsample [default=1]表示观测的子样本的比率,将其设置为0.5意味着xgboost将随机抽取一半观测用于数的生长,这将有助于防止过拟合现象range: (0,1]
colsample_bytree [default=1]表示用于构造每棵树时变量的子样本比率range: (0,1]
colsample_bylevel [default=1]用来控制树的每一级的每一次分裂,对列数的采样的占比。一般不太用这个参数,因为subsample参数和colsample_bytree参数可以起到相同的作用。range: (0,1]
lambda [default=1, alias: reg_lambda]L2 权重的L2正则化项
alpha [default=0, alias: reg_alpha]L1 权重的L1正则化项
1.1.3 任务参数
objective [ default=reg:linear ] 这个参数定义需要被最小化的损失函数。
base_score [ default=0.5 ]
eval_metric [ 默认是根据 损失函数/目标函数 自动选定的 ]。评估函数。
seed [ default=0 ] random number seed.
1.2 例子
## 引入包
from numpy import loadtxt
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
## 分出变量和标签
dataset = loadtxt('data/Pima-Indians-Diabetes.csv', delimiter=",",skiprows=1)
X = dataset[:,0:8]
Y = dataset[:,8]
## 分出训练集和测试集
seed = 7
test_size = 0.33
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=test_size,random_state=seed)
## 开始训练
model = XGBClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
predictions = [round(value) for value in y_pred]
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
1.3 当评价函数不在默认范围内
此时需要调用xgboost的native方法进行训练。
需要将训练集和测试集变为xgb.DMatrix数据格式。
可以自己定义的损失函数,需要给定损失函数的一阶导数和二阶导数。
可以自定义评估标准
参考 链接
2 lightGBM
lightGBM是微软开源的一个库。与xgboost相似,但可以处理数据量更大、特征维度更高的数据。
lightGBM与xgboost树的生长方式不同。