【机器学习】嘿马机器学习(算法篇)第11篇:集成学习进阶,5.2 xgboost算法api介绍【附代码文档】

🏆🏆🏆教程全知识点简介:1.定位、目标。2. K-近邻算法涵盖距离度量、k值选择、kd树、鸢尾花种类预测数据集介绍、练一练、交叉验证网格搜索、facebook签到位置预测案例。3. 线性回归包括线性回归简介、线性回归损失和优化、梯度下降法介绍、波士顿房价预测案例、欠拟合和过拟合、正则化线性模型、正规方程推导方式、梯度下降法算法比较优化、维灾难。4. 逻辑回归涵盖逻辑回归介绍、癌症分类预测案例(良恶性乳腺癌肿瘤预测、获取数据)、ROC曲线绘制。5. 朴素贝叶斯算法包括朴素贝叶斯算法简介、概率基础复习、产品评论情感分析案例(取出内容列数据分析、判定评判标准好评差评)。6. 支持向量机涵盖SVM算法原理、SVM损失函数、数字识别器案例。7. 决策树算法包括决策树分类原理、cart剪枝、特征工程特征提取、决策树算法api、泰坦尼克号乘客生存预测案例。8. EM算法涵盖初识EM算法、EM算法介绍。9. HMM模型包括马尔科夫链、HMM简介、前向后向算法评估观察序列概率、维特比算法解码隐藏状态序列、HMM模型API介绍。10. 集成学习进阶涵盖Bagging、xgboost算法原理、otto案例(Otto Group Product Classification Challenge xgboost实现)、数据变化可视化、lightGBM、stacking算法基本思想、住房月租金预测。11. 聚类算法包括聚类算法api初步使用、聚类算法实现流程、模型评估、算法优化、特征降维、用户对物品类别喜好细分案例、算法选择指导。12. 数学基础涵盖向量与矩阵范数、朗格朗日乘子法、Huber Loss、极大似然函数取对数原因。

📚📚仓库code.zip 👉直接-->: https://gitee.com/yinuo112/AI/blob/master/机器学习/嘿马机器学习(算法篇)/note.md 🍅🍅
✨ 本教程项目亮点
🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考
🎯🎯🎯全教程总章节
🚀🚀🚀本篇主要内容
集成学习进阶
学习目标
- 知道xgboost算法原理
- 知道otto案例通过xgboost实现流程
- 知道lightGBM算法原理
- 知道PUBG案例通过lightGBM实现流程
- 知道stacking算法原理
- 知道住房月租金预测通过stacking实现流程
5.2 xgboost算法api介绍
学习目标
- 了解xgboost算法api中常用的参数
1 xgboost的安装:
官网链接:[
pip3 install xgboost
2 xgboost参数介绍
xgboost虽然被称为kaggle比赛神奇,但是, 要想训练出不错的模型,必须要给参数传递合适的值。
xgboost中封装了很多参数,主要由三种类型构成:通用参数(general parameters),Booster 参数(booster parameters)和学习目标参数(task parameters)
- 通用参数:主要是宏观函数控制;
- Booster参数:取决于选择的Booster类型,用于控制每一步的booster(tree, regressiong);
- 学习目标参数:控制训练目标的表现。
2.1 通用参数(general parameters)
- booster [缺省值=gbtree]
-
决定使用哪个booster,可以是gbtree,gblinear或者dart。
-
gbtree和dart使用基于树的模型(dart 主要多了 Dropout),而gblinear 使用线性函数.
-
silent [缺省值=0]
-
设置为0打印运行信息;设置为1静默模式,不打印
-
nthread [缺省值=设置为最大可能的线程数]
-
并行运行xgboost的线程数,输入的参数应该<=系统的CPU核心数,若是没有设置算法会检测将其设置为CPU的全部核心数
下面的两个参数不需要设置,使用默认的就好了
-
num_pbuffer [xgboost自动设置,不需要用户设置]
-
预测结果缓存大小,通常设置为训练实例的个数。该缓存用于保存最后boosting操作的预测结果。
-
num_feature [xgboost自动设置,不需要用户设置]
-
在boosting中使用特征的维度,设置为特征的最大维度
2.2 Booster 参数(booster parameters)
2.2.1 Parameters for Tree Booster
-
eta [缺省值=0.3,别名:learning_rate]
-
更新中减少的步长来防止过拟合。
-
在每次boosting之后,可以直接获得新的特征权值,这样可以使得boosting更加鲁棒。
-
范围: [0,1]
-
gamma [缺省值=0,别名: min_split_loss](分裂最小loss)
-
在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。
-
Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。
-
范围: [0,∞]
-
max_depth [缺省值=6]
-
这个值为树的最大深度。 这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。设置为0代表没有限制
-
范围: [0,∞]
-
min_child_weight [缺省值=1]
-
决定最小叶子节点样本权重和。XGBoost的这个参数是最小样本权重的和.
- 当它的值较大时,可以避免模型学习到局部的特殊样本。 但是如果这个值过高,会导致欠拟合。这个参数需要使用CV来调整。.
[marshmallow 文档]
-
范围: [0,∞]
-
subsample [缺省值=1]
-
这个参数控制对于每棵树,随机采样的比例。
-
减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。
-
典型值:0.5-1,0.5代表平均采样,防止过拟合.
-
范围: (0,1]
-
colsample_bytree [缺省值=1]
-
用来控制每棵随机采样的列数的占比(每一列是一个特征)。
- 典型值:0.5-1
-
范围: (0,1]
-
colsample_bylevel [缺省值=1]
-
用来控制树的每一级的每一次分裂,对列数的采样的占比。
- 我个人一般不太用这个参数,因为subsample参数和colsample_bytree参数可以起到相同的作用。但是如果感兴趣,可以挖掘这个参数更多的用处。
-
范围: (0,1]
-
lambda [缺省值=1,别名: reg_lambda]
-
权重的L2正则化项(和Ridge regression类似)。
- 这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数
-
在减少过拟合上还是可以挖掘出更多用处的。.
-
alpha [缺省值=0,别名: reg_alpha]
-
权重的L1正则化项。(和Lasso regression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。
-
scale_pos_weight[缺省值=1]
-
在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。通常可以将其设置为负
- 样本的数目与正样本数目的比值。
2.2.2 Parameters for Linear Booster
linear booster一般很少用到。
-
lambda [缺省值=0,别称: reg_lambda]
-
L2正则化惩罚系数,增加该值会使得模型更加保守。
-
alpha [缺省值=0,别称: reg_alpha]
-
L1正则化惩罚系数,增加该值会使得模型更加保守。
-
lambda_bias [缺省值=0,别称: reg_lambda_bias]
-
偏置上的L2正则化(没有在L1上加偏置,因为并不重要)
2.3 学习目标参数(task parameters)
-
objective [缺省值=reg:linear]
-
“reg:linear” – 线性回归
- “reg:logistic” – 逻辑回归
- “binary:logistic” – 二分类逻辑回归,输出为概率
- “multi:softmax” – 使用softmax的多分类器,返回预测的类别(不是概率)。在这种情况下,你还需要多设一个参数:num_class(类别数目)
-
“multi:softprob” – 和multi:softmax参数一样,但是返回的是每个数据属于各个类别的概率。
-
eval_metric [缺省值=通过目标函数选择]
可供选择的如下所示:
- “rmse”: 均方根误差
- “mae”: 平均绝对值误差
- “logloss”: 负对数似然函数值
-
“error”: 二分类错误率。
- 其值通过错误分类数目与全部分类数目比值得到。对于预测,预测值大于0.5被认为是正类,其它归为负类。
-
“error@t”: 不同的划分阈值可以通过 ‘t’进行设置
- “merror”: 多分类错误率,计算公式为(wrong cases)/(all cases)
[PyMongo 文档]
- “mlogloss”: 多分类log损失
-
“auc”: 曲线下的面积
-
seed [缺省值=0]
-
随机数的种子
-
设置它可以复现随机数据的结果,也可以用于调整参数
5.3 xgboost案例介绍
1 案例背景
该案例和前面决策树中所用案例一样。
泰坦尼克号沉没是历史上最臭名昭着的沉船事件之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。这场耸人听闻的悲剧震惊了国际社会,并为船舶制定了更好的安全规定。 造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存下沉有一些运气因素,但有些人比其他人更容易生存,例如妇女,儿童和上流社会。 在这个案例中, 要求您完成对哪些人可能存活的分析。特别是, 要求您运用机器学习工具来预测哪些乘客幸免于悲剧。
案例:[
提取到的数据集中的特征包括票的类别,是否存活,乘坐班次,年龄,登陆home.dest,房间,船和性别等。
数据:[
![æ³°å¦å°¼å…‹å·æ•°æ®]
经过观察数据得到:
- 1 乘坐班是指乘客班(1,2,3),是社会经济阶层的代表。
- 2 其中age数据存在缺失。
2 步骤分析
- 1.获取数据
-
2.数据基本处理
-
2.1 确定特征值,目标值
- 2.2 缺失值处理
-
2.3 数据集划分
-
3.特征工程(字典特征抽取)
[TensorFlow 文档]
- 4.机器学习(xgboost)
- 5.模型评估
3 代码实现
- 导入需要的模块
import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
- 1.获取数据
# 1、获取数据
titan = pd.read_csv(")
-
2.数据基本处理
-
2.1 确定特征值,目标值
x = titan[["pclass", "age", "sex"]]
y = titan["survived"]
- 2.2 缺失值处理
# 缺失值需要处理,将特征当中有类别的这些特征进行字典特征抽取
x['age'].fillna(x['age'].mean(), inplace=True)
- 2.3 数据集划分
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)
- 3.特征工程(字典特征抽取)
特征中出现类别符号,需要进行one-hot编码处理(DictVectorizer)
x.to_dict(orient="records") 需要将数组特征转换成字典数据
# 对于x转换成字典数据x.to_dict(orient="records")
# [{"pclass": "1st", "age": 29.00, "sex": "female"}, {}]
transfer = DictVectorizer(sparse=False)
x_train = transfer.fit_transform(x_train.to_dict(orient="records"))
x_test = transfer.fit_transform(x_test.to_dict(orient="records"))
- 4.xgboost模型训练和模型评估
# 模型初步训练
from xgboost import XGBClassifier
xg = XGBClassifier()
xg.fit(x_train, y_train)
xg.score(x_test, y_test)
# 针对max_depth进行模型调优
depth_range = range(10)
score = []
for i in depth_range:
xg = XGBClassifier(eta=1, gamma=0, max_depth=i)
xg.fit(x_train, y_train)
s = xg.score(x_test, y_test)
print(s)
score.append(s)
# 结果可视化
import matplotlib.pyplot as plt
plt.plot(depth_range, score)
plt.show()
[Python-dotenv 文档]
![image-20200209155048100]
🚀✨ (未完待续)项目系列下一章
📚下一篇 将进入更精彩的环节! 🔔 记得收藏 & 关注,第一时间获取更新! 🍅 一起见证整个系列逐步成型的全过程。
- 点赞
- 收藏
- 关注作者
评论(0)