【问题标题】:Differences when tuning neural network with two output variables using caret and neuralnet packages使用插入符号和神经网络包调整具有两个输出变量的神经网络时的差异
【发布时间】:2015-03-10 04:07:42
【问题描述】:

我正在使用 caret 包和“neuralnet”模型,以便根据包含由 PCA 转换的多个预测变量的数据集找到神经网络的最佳调整参数。该数据集还包含两个输出数值变量,因此我想根据预测变量对这两个变量进行建模。因此,我正在执行回归。

当使用“neuralnet”包时,我得到了想要的输出:一个输出层由两个神经元组成的网络,对应于我要建模的两个输出变量,如下面的代码所示。

library(neuralnet)
neuralnet.network <- neuralnet(x + y ~ PC1 + PC2, train.pca.groundTruth, hidden=2, rep=5, algorithm = "rprop+", linear.output=T)

> head(compute(neuralnet.network, test.pca[,c(1,2)])$net.result)
            [,1]         [,2]
187 0.5890781796 0.3481661367
72  0.7182396668 0.4330461404
107 0.5854193907 0.3446555435
228 0.6114171607 0.3648684296
262 0.6727465772 0.4035759540
135 0.5559830113 0.3288717153

但是,当使用带有 caret 包中的 train 函数的相同模型时,输出仅包含一个名为“.outcome”的变量,它实际上是两个变量的总和。这是代码:

paramGrid <- expand.grid(.layer1 = c(2), .layer2 = 0, .layer3 = 0)
ctrl <- trainControl(method = "repeatedcv", repeats = 5)
set.seed(23)
caret.neuralnet <- train(x + y ~ PC1 + PC2, data = train.pca.groundTruth, method = "neuralnet", metric = "RMSE", tuneGrid = paramGrid, trControl = ctrl, algorithm = "rprop+", linear.output = T)

> head(predict(caret.neuralnet, test.pca[,c(1,2)]))
[1] 0.9221328635 1.1953289038 1.0333353272 0.9561434406 1.0409961115 0.8834807926

是否有可能阻止插入符号训练函数将公式中的符号“+”解释为求和,而是解释为几个输出变量的规范,就像神经网络一样?我试过 x-y 形式,但它不起作用。

我想知道是否有任何形式可以做到这一点,而无需为每个输出变量训练单独的模型。

非常感谢!

【问题讨论】:

    标签: r neural-network regression r-caret


    【解决方案1】:

    train 不支持多个结果,因此预期的符号公式 x + y 解析为添加 xy 的文字公式。

    最大

    【讨论】:

    • 非常感谢您的回复,马克斯。对于支持多种结果的模型,为 train 函数指定一个参数可能会很有趣。顺便说一句,很棒的包;)
    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 2015-03-02
    • 2017-04-08
    • 2016-09-08
    • 2012-10-05
    • 2018-02-28
    • 2015-02-23
    相关资源
    最近更新 更多