监督学习 - 梯度提升回归(Gradient Boosting Regression)

什么是机器学习

梯度提升回归 (Gradient Boosting Regression)是一种集成学习方法,用于解决回归问题。它通过迭代地训练一系列弱学习器(通常是决策树)来逐步提升模型的性能。梯度提升回归的基本思想是通过拟合前一轮模型的残差(实际值与预测值之差)来构建下一轮模型,从而逐步减小模型对训练数据的预测误差。

以下是梯度提升回归的主要步骤:

  1. 初始化: 初始模型可以是一个简单的模型,比如均值模型。这个模型将用于第一轮训练。
  2. 迭代训练: 对于每一轮迭代,都会训练一个新的弱学习器(通常是决策树),该学习器将拟合前一轮模型的残差。新模型的预测结果将与前一轮模型的预测结果相加,从而逐步改善模型的性能。
  3. 残差计算: 在每一轮迭代中,计算实际值与当前模型的预测值之间的残差。残差表示模型尚未能够正确拟合的部分。
  4. 学习率: 通过引入学习率(learning rate)来控制每一轮模型的权重。学习率是一个小于 1 的参数,它乘以每一轮模型的预测结果,用于缓慢地逼近真实的目标值。
  5. 停止条件: 迭代可以在达到一定的轮数或者当模型的性能满足一定条件时停止。

在实际应用中,可以使用梯度提升回归的库,如Scikit-Learn中的GradientBoostingRegressor类,来实现梯度提升回归。

以下是一个简单的Python代码示例:

python 复制代码
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np
import matplotlib.pyplot as plt

# 创建示例数据集
np.random.seed(42)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, X.shape[0])

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建梯度提升回归模型
gb_regressor = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)

# 在训练集上训练模型
gb_regressor.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = gb_regressor.predict(X_test)

# 评估模型性能
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差(MSE): {mse}")

# 可视化结果
plt.figure(figsize=(8, 6))
plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_pred, color="cornflowerblue", label="prediction")
plt.xlabel("data")
plt.ylabel("target")
plt.title("Gradient Boosting Regression")
plt.legend()
plt.show()

在这个例子中,GradientBoostingRegressor 类的关键参数包括 n_estimators(迭代次数)、learning_rate(学习率)、max_depth(树的最大深度)等。这些参数可以根据实际问题进行调整。

相关推荐
Katecat996633 小时前
【YOLOv8改进】基于tood_x101-64x4d_fpn_ms-2x_coco的卡车过载检测与分类_1
yolo·分类·数据挖掘
木头左8 小时前
基于GARCH波动率聚类的指数期权蒙特卡洛定价模型
机器学习·数据挖掘·聚类
Katecat9966310 小时前
尿液样本中细胞与非细胞成分检测分类系统实现
单片机·分类·数据挖掘
数据大魔方11 小时前
【期货量化进阶】期货Tick数据分析与应用:高频数据入门(TqSdk完整教程)
python·算法·数据挖掘·数据分析·github·程序员创富·期货程序化
YangYang9YangYan11 小时前
2026中专财务专业学数据分析指南
数据挖掘·数据分析
青春不败 177-3266-052012 小时前
AI支持下的临床医学日常工作、论文撰写、数据分析与可视化、机器学习建模中的实践应用
人工智能·数据挖掘·数据分析·医学
Watermelo61713 小时前
探究TOON的价值边界:比JSON更优的大模型友好数据格式?
数据结构·人工智能·语言模型·自然语言处理·数据挖掘·数据分析·json
CryptoPP14 小时前
对接API库 获取印度股票历史数据
金融·数据挖掘·数据分析·区块链
Dylan的码园14 小时前
稀疏 MoE 与原生多模态双驱:2025 大模型技术演进全景
人工智能·机器学习·ai作画·数据挖掘·boosting·oneflow
mahtengdbb114 小时前
Yolov8结合CAA-HSFPN网络实现汽车漆面缺陷检测与分类的完整实战指南
yolo·分类·数据挖掘