随机森林回归(Random Forest Regression)
理论知识推导
随机森林回归是一种集成学习方法,通过构建多个决策树,并将各个树的预测结果进行平均来进行回归。其核心思想是“集成多个弱学习器构建强学习器”。以下是随机森林回归的数学模型和推导过程。
-
随机采样:
- Bootstrap采样:从原始训练集随机有放回地抽取样本,构建多个不同的子训练集。
- 随机特征选择:在每个节点进行分裂时,随机选择一部分特征来确定最佳分裂。
-
决策树构建:
- 对每个子训练集,构建一个决策树。
- 每棵树的构建过程中,使用随机特征选择来进行节点分裂。
-
集成预测:
- 将所有决策树的预测结果进行平均,得到最终的回归结果。
数学表达式:
实施步骤与参数解读
- 导入库
- 加载数据集
- 分割数据集
- 训练未优化的随机森林回归模型
- 预测并评估未优化模型
- 优化模型(调整参数)
- 训练优化后的随机森林回归模型
- 预测并评估优化后的模型
- 可视化结果
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_regression
# 设置全局字体为楷体
plt.rcParams['font.family'] = 'KaiTi'
# 生成多维数据集
X, y = make_regression(n_samples=500, n_features=5, noise=0.1)
y = y.reshape(-1, 1)
# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 未优化模型
regressor = RandomForestRegressor()
regressor.fit(X_train, y_train.ravel())
y_pred = regressor.predict(X_test)
mse_unoptimized = mean_squared_error(y_test, y_pred)
# 优化后的模型
optimized_regressor = RandomForestRegressor(n_estimators=100, max_depth=10, min_samples_split=5, min_samples_leaf=4)
optimized_regressor.fit(X_train, y_train.ravel())
y_pred_optimized = optimized_regressor.predict(X_test)
mse_optimized = mean_squared_error(y_test, y_pred_optimized)
# 输出结果
print(f"未优化模型的MSE: {mse_unoptimized}")
print(f"优化后的模型的MSE: {mse_optimized}")
# 可视化
plt.figure(figsize=(12, 6))
# 原始数据的二维投影
plt.subplot(1, 2, 1)
plt.scatter(X_test[:, 0], y_test, color='blue', label='Actual')
plt.scatter(X_test[:, 0], y_pred, color='red', label='Predicted')
plt.title('未优化模型')
plt.xlabel('Feature 0')
plt.ylabel('Target')
plt.legend()
plt.subplot(1, 2, 2)
plt.scatter(X_test[:, 0], y_test, color='blue', label='Actual')
plt.scatter(X_test[:, 0], y_pred_optimized, color='red', label='Predicted')
plt.title('优化后的模型')
plt.xlabel('Feature 0')
plt.ylabel('Target')
plt.legend()
plt.show()
结果解释
- 未优化模型:均方误差(MSE)较高,说明模型在测试数据上的预测不够准确。
- 优化后的模型:均方误差(MSE)较低,说明经过参数优化后的模型在测试数据上的预测更加准确。
可视化图展示
- 未优化模型:图中红色点表示模型预测值,蓝色点表示实际值。可以看到预测值与实际值之间有明显差距。
- 优化后的模型:图中红色点表示优化后的模型预测值,与实际值(蓝色点)更加接近,说明优化后的模型性能更好。
原文地址:https://blog.csdn.net/qq_44133607/article/details/140536095
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!