河南实力网站建设首选,佛山专业的网站建设公司,卖钢材做哪个宣传网站,网址服务器查询XGBoost发展历程 XGBoost显著优势 XGBoost核心概念
XGBoost#xff08;eXtreme Gradient Boosting#xff09;是一种在机器学习领域广泛使用的集成学习算法#xff0c;特别是在分类、回归和排序任务中表现出色。其基本原理建立在决策树、梯度提升和损失函数优化等核心概念之…XGBoost发展历程 XGBoost显著优势 XGBoost核心概念
XGBoosteXtreme Gradient Boosting是一种在机器学习领域广泛使用的集成学习算法特别是在分类、回归和排序任务中表现出色。其基本原理建立在决策树、梯度提升和损失函数优化等核心概念之上。以下是对XGBoost基本原理的深入浅出介绍
一、决策树基础
决策树是一种基本的分类与回归方法它通过构建树状结构来模拟决策过程。在XGBoost中决策树作为基学习器弱学习器被使用。每个决策树通过评估一系列的条件即特征值来做出预测。对于分类问题决策树通过评估If-Then-Else True/False特征问题树来预测标签对于回归问题则通过树结构来估算连续数值。
二、梯度提升原理
梯度提升是一种集成学习方法它通过逐步构建弱学习器来优化模型的预测能力。在XGBoost中梯度提升的具体实现是通过迭代地训练新的决策树来拟合之前模型的残差即实际值与预测值之间的差异。每一轮迭代都关注于前一轮模型的不足通过新的决策树来弥补这些不足从而逐步提升整体模型的预测能力。
三、损失函数优化
损失函数描述了模型预测值与真实值之间的差异是模型优化的关键。在XGBoost中损失函数的优化是通过梯度下降或更具体地说是牛顿法梯度更新来实现的。与传统的GBDTGradient Boosting Decision Tree相比XGBoost对损失函数进行了二阶泰勒展开保留了更多有关目标函数的信息从而有助于更精确地优化模型。
具体来说XGBoost在每一轮迭代中都会计算当前模型的损失函数关于预测值的一阶导数和二阶导数并通过这些导数信息来指导新决策树的训练。新决策树的目标是尽可能拟合当前模型的残差从而减小整体损失函数的值。
四、正则化与过拟合控制
为了防止过拟合XGBoost在损失函数中引入了正则化项。这些正则化项包括树的复杂度如叶子节点的数量、叶子节点值的平方和等通过控制这些正则化项的大小可以有效地限制模型的复杂度从而避免过拟合。
五、并行计算与分布式计算
XGBoost支持并行计算和分布式计算这使得它能够高效地处理大规模数据集。在并行计算方面XGBoost利用多核CPU的并行计算能力来加速决策树的构建和损失函数的计算在分布式计算方面XGBoost可以将数据集分布在多个计算节点上通过并行地训练多个决策树来加速整体模型的训练过程。
XGBoost简单案例
本章先介绍构建XGBoost模型的主要机器学习算法——决策树。决策树是XGBoost最常用的基学习器在机器学习领域中具有显著特点。决策树不像线性回归和逻辑回归那样将列值乘以数字权重而是通过询问有关列的问题来分割数据。 构建决策树就像玩问题测试游戏。例如一个决策树有一个温度列该列可以分成两组一组温度高于70摄氏度一组温度低于70摄氏度。下一个分割可以基于季度进行如果是夏天就跟随一个分支否则跟随另一个分支。现在数据已经被分为4个独立的组。通过分割将数据分成新群组的过程将继续直到算法达到所需的精度水平。 决策树能够创建成千上万个分支直到将每个样本在训练集中准确映射到正确的目标为止。但容易对数据过拟合换句话说可能会过分贴合训练数据。
第一个决策树模型
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings(ignore)
df_census pd.read_csv(/Users/c/jupyter lab/CSDN/梯度提升算法XGBoost从入门到精通/国外人口普查数据集(列名英文版).csv)
df_census pd.get_dummies(df_census)
X df_census.iloc[:,:-1]
y df_census.iloc[:,-1]
X_train, X_test, y_train, y_test train_test_split(X, y, random_state2)
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
clf DecisionTreeClassifier(random_state2)
clf.fit(X_train, y_train)
y_pred clf.predict(X_test)
accuracy_score(y_pred, y_test)感兴趣的可以试下准确率是多少数据集我会上传至本篇博文标题下方。
决策树内部结构 上图是来自本篇人口普查数据集国外的一个决策树只有两个分叉。顶部是根节点True/False箭头是分支数据点是节点。在树的末端节点被归类为叶节点。 下面详细研究该图
根节点
树根节点位于顶部。在第一行marital-status是一个二进制列因为所有值都是0否定或1肯定。第一个分割是基于是否已婚树的左侧是True分支表示未婚右侧是False分支表示已婚。
基尼系数
根节点的第二行数据是基尼系数是决策树用来决定如何进行分割的误差值这里的基尼系数为0.364。分割目标是找到一个导致误差最低的切割点。基尼系数为0意味着0个误差基尼系数为1表示全部为误差。基尼系数为0.5表示元素分布是均等的那么预测的准确率不比随机猜测更高。误差越接近于0误差越低。根节点上的基尼系数为0.364表示训练集是不平衡的其中36.4%属于类别1。 PS: 基尼系数的应用没想到这么广泛
样本、值和类别
根节点表明有24420个样本这是训练集中的样本总数。下面一行是[185755845]。由于排序方式为先0后1因此代表有18575个样本值为0收入低于5万美元5845个样本值为1收入高于5万美元。
True/False节点
第一个分割后左边分支是True,右边是False。这种左右模型贯穿了整个决策树。在第二行的左侧节点中分割capital_gain 7073.5被用于后续节点其余信息来自前一次分割。在13160位未婚人士中有12311位收入低于5万美元有849位收入高于5万美元。基尼系数为0.121接近零代表误差很低。
树桩
只有一个分割的树被称为树桩尽管树桩本身不能成为强大的预测器但到了第4章我们会明白在使用提升器时树桩可以变得非常强大。
叶节点
树最末端的节点被称为叶节点叶节点饮食所有最终预测。 最左侧的叶节点基尼系数为0.093这表示它正确预测了12938个案例中的12304个准确率为95%即对于资本收益低于7073.50的未婚用户来说其收入不会超过5万美元的可能性有95%。 其他叶节点的信息也可以类似地进行解读。
本篇未完持续更新中欢迎给博客其他内容提宝贵建议数据集已上传。