Cubist回归预测

本文介绍了Cubist模型,一种基于回归树的预测方法,它通过组合多个回归树和分段线性模型来捕获数据的非线性关系。Cubist模型具有高解释性,主要参数包括委员会数量、邻居、规则、最大深度和最小样本数。文章展示了如何使用R的Cubist库进行数据划分、超参数调整、模型训练、性能评估以及特征重要性的可视化。
摘要由CSDN通过智能技术生成

Cubist 模型的基础是回归树。回归树是一种树状结构,用于将输入空间划分为不同的区域,并在每个区域中拟合一个简单的线性模型。这使得模型能够捕获数据中复杂的非线性关系。

Cubist 模型相对于其他复杂的机器学习模型(如神经网络或支持向量机)具有较高的解释性。由于其基于树模型和分段线性模型,可以很容易地理解模型对于输入变量的影响以及不同区域的预测规则。

Cubist 模型的主要参数包括:

  1. Committees(委员会):用于指定要创建的回归树的数量。每个委员会会产生一个回归树,最后的预测结果是所有树的平均值。默认值为 1。

  2. Neighbors(邻居):用于指定在生成分段线性模型时要考虑的最近邻数目。这个参数控制了分段线性模型的复杂度。默认值为 0,表示不使用邻居。

  3. Rules(规则):用于控制生成的分段线性模型的数量。每个回归树叶节点上生成一个分段线性模型。规则的数量影响了模型的复杂度和解释性。默认值为 100。

  4. Maxdepth(最大深度):用于限制回归树的最大深度。这有助于控制模型的复杂度和过拟合的风险。默认值为 1。

  5. MinCases(最小样本数):用于指定在拟合分段线性模型时所需的最小样本数。如果叶节点上的样本数小于这个值,则不会拟合分段线性模型。默认值为 10。

 
###2024.04.01 
# 导入数据集
setwd("C:/Users")
# 安装和加载所需的包
# install.packages(c("Cubist", "caret"))
library(Cubist)
library(caret)
# 加载数据
data <- read.csv("123.csv", header = TRUE)
#数据集划分
intrain<- createDataPartition(y = data$SC, 
                              p = 0.7, 
                              list = FALSE)
train_data <- data[intrain,]
test_data <- data[-intrain,]
# # Hyperparameter tuning and model training参数优化和模型训练
set.seed(1345)
# 创建训练控制对象
trctrl <- trainControl(method = "cv", number = 10)
#建立模型
cubist_model <- train(SC~., 
                    data = train_data,
                    method = "cubist",
                    trControl= trctrl,
                    metric = "RMSE")
cubist_model

 

total_time <- Sys.time() - start_time
total_time
summary(cubist_model)
# Train set predictions
train_pred <- predict(cubist_model, newdata = train_data[,-1])
mse_train = MSE(train_data$SOC, train_pred)
mae_train = MAE(train_data$SOC, train_pred)
rmse_train = RMSE(train_data$SOC, train_pred)
r2_train = caret::R2(train_data$SOC, train_pred)

cat("MAE:", mae_train, "\n", "MSE:", mse_train, "\n",
    "RMSE:", rmse_train, "\n", "R-squared:", r2_train)

# Test set predictions

test_pred <- predict(cubist_model, newdata = test_data[,-1])

mse_test = MSE(test_data$SOC, test_pred)
mae_test = MAE(test_data$SOC, test_pred)
rmse_test = RMSE(test_data$SOC, test_pred)
r2_test = caret::R2(test_data$SOC, test_pred)

cat("MAE:", mae_test, "\n", "MSE:", mse_test, "\n",
    "RMSE:", rmse_test, "\n", "R-squared:", r2_test)

# Predictions' plot预测结果画散点图

train_pred_matrix <- data.frame(Real = c(train_data$SOC),
                                Predicted = c(train_pred))

test_pred_matrix <- data.frame(Real = c(test_data$SOC),
                               Predicted = c(test_pred))
# 训练集散点图
plot(x=train_pred_matrix$Real,y=train_pred_matrix$Predicted,xlab = "Real-value",
     ylab="Predicted",xlim=c(0,12),ylim=c(0,12),col = "red")
#测试集散点图
plot(x=test_pred_matrix $Real,y=test_pred_matrix $Predicted)
# 提取特征重要性图
plot(varImp(object = cubist_model),
     top = 20,
     ylab = "Feature")


# 绘制模型摘要图
plot(cubist_model)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用[1]:在目前的文献中,较少的预测ML算法经过训练和测试后将结果与以前的研究进行比较,例如(Adamovic et al., 2017; Johnson et al., 2017; Kannangara et al., 2017)。在这些研究中,不同的机器学习技术的真正多功能性和优势或局限性仍然未知。引用[2]:DNN的核心思想不仅是学习输入和输出之间的非线性映射,而且是学习数据的底层结构(Karhunen et al., 2015)。DNN模型使用反向误差传播算法从训练数据中学习模式,其中,来自输出的误差或反馈信号将向后传播,以调整神经网络权重并使最终输出的误差最小(Chollet and Allaire, 2018)。DNN的结构包括输入,隐藏和输出层。引用[3]:基于机器学习模型的预测结果有助于越南的综合固体废弃物管理行动计划的规划、设计和实施。本研究的局限性体现在数据集的异质性,如越南下级行政部门缺乏有效数据。基于此,当未来能够获取更多的可靠数据时,可以更新和重新训练机器学习预测模型。 问题: 什么是机器学习cubist? 回答: 在提供的引用中,并没有提到机器学习cubist的具体定义或描述。引用[1]提到了一些机器学习算法的比较,但没有提到cubist。引用[2]提到了DNN(深度神经网络)的核心思想和结构,但没有提到cubist。引用[3]讨论了基于机器学习模型的预测结果在固体废弃物管理中的应用,但同样没有提到cubist。因此,根据提供的引用内容,无法回答关于机器学习cubist的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lltanwh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值