毫升 | XGBoost(极限梯度提升)
XGBoost 是梯度提升决策树的实现。这个库是用 C++ 编写的。它是一种软件库,旨在提高速度和模型性能。它最近在应用机器学习中占据主导地位。 XGBoost 模型在许多 Kaggle 比赛中占据主导地位。
在这个算法中,决策树是按顺序创建的。权重在 XGBoost 中扮演着重要的角色。将权重分配给所有自变量,然后将这些自变量输入到预测结果的决策树中。树预测错误的变量的权重增加,然后将这些变量馈送到第二个决策树。这些单独的分类器/预测器然后集成在一起以提供强大且更精确的模型。它可以处理回归、分类、排序和用户定义的预测问题。
XGBoost 功能
该库专注于计算速度和模型性能,因此几乎没有多余的装饰。
型号特点
支持三种主要形式的梯度提升:
- 梯度提升
- 随机梯度提升
- 正则化梯度提升
系统特点
- 对于一系列计算环境的使用,该库提供-
- 树构造的并行化
- 用于训练超大型模型的分布式计算
- 缓存优化数据结构和算法
安装步骤
视窗
XGBoost 使用 Git 子模块来管理依赖项。因此,当您克隆 repo 时,请记住指定 –recursive 选项:
git clone --recursive https://github.com/dmlc/xgboost
对于使用github工具的windows用户,可以打开git shell,输入以下命令:
git submodule init
git submodule update
OSX(Mac)
首先,使用 Homebrew (https://brew.sh/) 获取 gcc-8 以启用多线程(即使用多个 CPU 线程进行训练)。默认的 Apple Clang 编译器不支持 OpenMP,因此使用默认编译器会禁用多线程。
brew install gcc@8
然后使用 pip 安装 XGBoost:
pip3 install xgboost
如果遇到权限错误,您可能需要使用 –user 标志运行命令。
代码:XGB 分类器的Python代码
# Write Python3 code here
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:13].values
y = dataset.iloc[:, 13].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
X = X[:, 1:]
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size = 0.2, random_state = 0)
# Fitting XGBoost to the training data
import xgboost as xgb
my_model = xgb.XGBClassifier()
my_model.fit(X_train, y_train)
# Predicting the Test set results
y_pred = my_model.predict(X_test)
# Making the Confusion Matrix
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
输出
Accuracy will be about 0.8645