使用插入符号和神经网络包调整具有两个输出变量的神经网络时的差异

时间:2015-01-12 11:43:50

标签: r neural-network regression r-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

然而,当使用与插入符号包中的列车功能相同的模型时,输出只包含一个名为&#39; .outcome&#39;的变量,它实际上是两个变量的总和。这是代码:

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

是否有可能阻止插入符号列表功能解释符号&#39; +&#39;在公式中作为求和,但作为几个输出变量的规范,就像神经网络一样?我尝试过x-y表格,虽然它没有用。

我想知道在没有为每个输出变量训练单独的模型的情况下是否有任何形式可以做到这一点。

非常感谢你!

1 个答案:

答案 0 :(得分:1)

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

最高