自学内容网 自学内容网

随机森林回归(Random Forest Regression)

理论知识推导

随机森林回归是一种集成学习方法,通过构建多个决策树,并将各个树的预测结果进行平均来进行回归。其核心思想是“集成多个弱学习器构建强学习器”。以下是随机森林回归的数学模型和推导过程。

  1. 随机采样

    • Bootstrap采样:从原始训练集随机有放回地抽取样本,构建多个不同的子训练集。
    • 随机特征选择:在每个节点进行分裂时,随机选择一部分特征来确定最佳分裂。
  2. 决策树构建

    • 对每个子训练集,构建一个决策树。
    • 每棵树的构建过程中,使用随机特征选择来进行节点分裂。
  3. 集成预测

    • 将所有决策树的预测结果进行平均,得到最终的回归结果。

数学表达式:

实施步骤与参数解读
  1. 导入库
  2. 加载数据集
  3. 分割数据集
  4. 训练未优化的随机森林回归模型
  5. 预测并评估未优化模型
  6. 优化模型(调整参数)
  7. 训练优化后的随机森林回归模型
  8. 预测并评估优化后的模型
  9. 可视化结果
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)!