赞
踩
小屌丝:鱼哥, 你能不能在详细的拓展一下 GBM。
小鱼:我在《【机器学习】一文掌握机器学习十大分类算法(下)。》已经讲过了
小屌丝:意犹未尽。
小鱼:…
小屌丝:你在详细的讲一讲呗。
小鱼:那得一会了呢
小屌丝:这会不是不忙着,干啥还等一会呢?
小鱼:我在看我的车内摄像头的数据存储啊
小屌丝:啊~ 这…
小鱼:你不去看看你的车内摄像存储?
小屌丝: 我就不用了吧, 反正我的车也不是 "某合"的。
小鱼:这…
梯度提升机(GBM)是一种基于Boosting思想的集成学习算法。
它通过构建多个弱学习器(通常是决策树),然后将这些弱学习器组合成一个强学习器来提高预测性能。
GBM通过不断减少模型在训练数据上的残差(预测值与实际值之差)来优化模型。
GBM的核心原理是利用梯度下降算法优化损失函数。
在每一轮迭代中,GBM会添加一个新的弱预测模型来尽量纠正前一个模型的残差(即真实值与预测值之间的差异)。
通过这种方式,模型逐渐接近目标函数。
GBM的实现通常涉及以下几个步骤:
GBM的算法公式较为复杂,主要涉及损失函数、梯度计算、弱学习器构建和模型更新等步骤。
以下是一个简化的梯度提升回归树的公式示例:
其中,
# -*- coding:utf-8 -*- # @Time : 2024-04-05 # @Author : Carl_DJ ''' 实现功能: 实现了一个GBM回归模型的训练过程 ''' import numpy as np from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingRegressor from sklearn.metrics import mean_squared_error # 生成模拟的回归数据集 # n_samples: 样本数量 # n_features: 特征数量 # noise: 噪声比例 X, y = make_regression(n_samples=1000, n_features=4, noise=0.1, random_state=42) # 划分训练集和测试集 # test_size: 测试集占总数据的比例 # random_state: 随机种子,确保结果可复现 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 初始化梯度提升回归器 # n_estimators: 弱学习器(树)的数量 # learning_rate: 学习率,控制每次迭代的步长 # max_depth: 决策树的最大深度 # random_state: 随机种子 gbm = GradientBoostingRegressor(n_estimators=200, learning_rate=0.1, max_depth=3, random_state=42) # 训练模型 # 使用训练数据拟合模型 gbm.fit(X_train, y_train) # 预测测试集 # 使用训练好的模型对测试集进行预测 y_pred = gbm.predict(X_test) # 计算均方误差 # 评估模型在测试集上的性能 mse = mean_squared_error(y_test, y_pred) print(f"Mean Squared Error: {mse}") # 特征重要性 # 获取每个特征对模型预测的贡献程度 feature_importances = gbm.feature_importances_ print(f"Feature Importances: {feature_importances}") # 绘制特征重要性图(可选) # 需要导入matplotlib和seaborn库 import matplotlib.pyplot as plt import seaborn as sns # 创建一个特征重要性DataFrame feature_importance_df = pd.DataFrame(list(zip(X.columns, feature_importances)), columns=['Feature', 'Importance']) # 根据特征重要性降序排序 feature_importance_df = feature_importance_df.sort_values(by='Importance', ascending=False) # 绘制条形图 plt.figure(figsize=(10, 6)) sns.barplot(x='Importance', y='Feature', data=feature_importance_df) plt.title('Feature Importances') plt.xlabel('Importance') plt.ylabel('Feature') plt.show()
代码解析:
实现了GBM回归模型的训练过程,并包含了以下步骤:
梯度提升机(GBM)是一种强大的集成学习算法,它通过迭代地拟合损失函数的负梯度来优化模型。
GBM具有出色的预测性能和鲁棒性,在各种机器学习任务中都有广泛的应用。
其核心原理在于利用损失函数的负梯度作为残差来构建新的弱学习器,并通过组合多个弱学习器来形成一个强学习器。
在实际应用中,我们可以通过调整GBM的参数,如学习率、迭代次数、基学习器的类型等,来优化模型的性能。
我是小鱼:
关注小鱼,学习【机器学习】&【深度学习】领域的知识。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。