xgboost是提升树方法的一种,算法由GBDT改进而来,在计算时也采用并行计算,速度更快。sklearn中提供分类和回归的xgboost模型,本文对二分类问题采用xgboost进行训练。
一、数据准备
2、分训练集和测试集
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv('data.csv')
#label
label = df.ix[:,[0]]
features = df.ix[:,[1,2,3,4,5]]
#分训练集测试集
X_train, X_test, y_train, y_test = train_test_split(features, label, test_size=0.2, random_state=3)
二、训练模型
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.metrics import accuracy_score
from xgboost import XGBClassifier
from xgboost import plot_importance
from sklearn import metrics
model = XGBClassifier(learning_rate=0.01,
n_estimators=10,
max_depth=4,
min_child_weight = 1,
gamma=0.,
subsample=1,
colsample_btree=1,
scale_pos_weight=1,
random_state=27,
slient = 0
model.fit(X_train,
y_train)
y_test, y_pred = y_test, model
.predict
(X_test)
print(
"Accuracy : %.4g"
% metrics
.accuracy
_score(y_test, y_pred))
y_train_proba = model
.predict
_proba(X_train)[:,
1
]
print(
"AUC Score (Train): %f"
% metrics
.roc
_auc_score(y_train, y_train_proba))
y_proba = model
.predict
_proba(X_test)[:,
1
]
print(
"AUC Score (Test): %f"
% metrics
.roc
_auc_score(y_test, y_proba))
xgboost是提升树方法的一种,算法由GBDT改进而来,在计算时也采用并行计算,速度更快。sklearn中提供分类和回归的xgboost模型,本文对二分类问题采用xgboost进行训练。一、数据准备1、样本正样本:1.5W负样本:10W5个特征2、分训练集和测试集import pandas as pdfrom sklearn.model_selection im...
一、概述如果你的预测
模型
表现得有些不尽如人意,那就用
XGBoost
吧。
XGBoost
算法现在已经成为很多数据工程师的重要武器。它是一种十分精致的算法,可以处理各种不规则的数据。
构造一个
使用
XGBoost
的
模型
十分简单。但是,提高这个
模型
的表现就有些困难(至少我觉得十分纠结)。这个算法
使用
了好几个参数。所以为了提高
模型
的表现,参数的调整十分必要。在解决实际问题的时候,有些问题是很难回答的——你需要
from
sklearn
.datasets import load_svmlight_file
X_train,y_train = load_svmlight_file(libsvm文件)
使用
pandas读取完数据后在转化为标准形式
2.
模型
训练
过程
1.未调参基线
模型
使用
xgboost
原生库进行
训练
import
xgboost
as xgb
from skl
这篇应该是你见过的讲
xgboost
的文章里最细的。
首先需要介绍GBDT,它是一种基于boosting增强策略的加法
模型
,
训练
的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与
训练
样本真实值的残差。
在核心思想不变的情况下,
XGBoost
对GBDT进行了一系列优化,主要是损失函数进行了二阶泰勒展开,另外还有目标函数加入正则项、支持并行和...
以回归任务为例,首先导入包
from
xgboost
import XGBRegressor as XGBR
# Implementation of the scikit-learn API for
XGBoost
regression
n_estimators:
通过画出n_estimator的学习曲线,这里得出几个重要的结论:
首先,XGB中的树的数量决定了
模型
的学习能力,树的数量越多,
模型
的学习能力越强。只要XGB中树的数量足够了,即便只有很少的数据,
模型
也能够学到
训练
数据100%的信息,所以X
1.什么是
XGBoost
?
GBDT,它是一种基于boosting增强策略的加法
模型
,
训练
的时候采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t−1t-1t−1 棵树的预测结果与
训练
样本真实值的残差。
XGBoost
对GBDT进行了一系列优化,比如损失函数进行了二阶泰勒展开、目标函数加入正则项、支持并行和默认缺失值处理等,在可扩展性和
训练
速度上有了巨大的提升,但其核心思想没有大的变化。
2.
XGBoost
的核心原理
2.1 如何构造目标函数?
对于一个给定有 nnn 个样本和
xgboost
是一种集成分类器(弱分类器),
xgboost
是基于提升树的。提升树:简单说,就是一个
模型
表现不好,我继续按照原来
模型
表现不好的那部分
训练
第二个
模型
,依次类推。形象的比喻就是:
做题的时候,第一个人做一遍得到一个分数,第二个人去做第一个人做错的题目,第三个人去做第二个人做错的题目,以此类推,不停的去拟合从而可以使整张试卷分数可以得到100分(极端情况)。把这个比喻替换到
模型
来说,就是真实值为100,第一个
模型
预测为90,差10分,第二个
模型
以10为目标值去
训练
并预测,预测值为7,差三分,第三个
在实际业务中,
XGBoost
经常被运用于用户行为预判、用户标签预测、用户信用评分等项目中。
XGBoost
是对梯度提升算法的改进,求解损失函数极值时
使用
了牛顿法,将损失函数泰勒展开到二阶,另外损失函数中加入了正则化项。
1.集成学习
集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单.
一.
Xgboost
简介
1.
Xgboost
是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包之一,比常见的工具包快10倍以上,他是GB方法里的完全加强版本,也是基于残差优化的算法,希望建立K个回归树,使得树群的预测值尽量接近真实值(准确率)而且有尽量大的泛化能力。
2.
Xgboost
相对于GBDT的优点:
(1)传统GBDT以CA...
sklearn
中也集成了
XGBoost
的
模型
,
使用
起来比较简单。下面是一个
使用
sklearn
中
XGBoost
进行分类的Python代码示例:
```python
import
xgboost
as xgb
from
sklearn
.datasets import load_breast_cancer
from
sklearn
.model_selection import train_test_split
from
sklearn
.metrics import accuracy_score
# 加载数据集
data = load_breast_cancer()
X, y = data.data, data.target
# 划分
训练
集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义
模型
参数
params = {'objective': 'binary:logistic', 'eval_metric': 'logloss'}
#
训练
模型
num_rounds = 100
dtrain = xgb.DMatrix(X_train, label=y_train)
bst = xgb.train(params, dtrain, num_rounds)
# 进行预测
dtest = xgb.DMatrix(X_test)
preds = bst.predict(dtest)
# 输出预测结果
predictions = [round(value) for value in preds]
accuracy = accuracy_score(y_test, predictions)
print("Accuracy: %.2f%%" % (accuracy * 100.0))
解释一下代码:
1. 首先导入
XGBoost
库、
sklearn
库中的load_breast_cancer、train_test_split和accuracy_score函数。
2.
使用
load_breast_cancer函数加载乳腺癌数据集,这是一个二分类问题。
3.
使用
train_test_split函数将数据集划分为
训练
集和测试集,其中测试集占比为20%。
4. 定义
模型
参数,这里
使用
了二分类任务的目标函数和评估指标。
5.
使用
训练
数据和
模型
参数
训练
模型
,其中将
训练
数据和标签转换为DMatrix格式。
6. 准备测试数据,这里
使用
测试集数据进行预测,同样需要将测试数据转换为DMatrix格式。
7.
使用
训练
好的
模型
对测试数据进行预测。
8. 输出预测结果,并
使用
accuracy_score函数计算
模型
的准确率,以评估
模型
的预测效果。
需要注意的是,
sklearn
中的
XGBoost
使用
方法与原生的
XGBoost
库略有不同,但是由于
使用
了
sklearn
的接口,因此在
使用
过程中可以充分利用
sklearn
的其他功能,比如GridSearchCV进行参数调优等。