2

是否可以在公式中指定条件,例如

out1 + out2 ~ in1 + in2 + in3    <with all (out1 + out2 = 1)> 

一个可能的例子:尝试预测由 和 组合而成的red颜色。当没有关于模型的假设时,这可以通过神经网络来完成:greenblue

library("neuralnet")

red <- runif(n=50)
green <- (1 - red) * runif(n=50)
blue <- 1 - red - green

input1 <- green^2
input2 <- sin(red)

trainingdata <- data.frame(red, green, blue, input1, input2)

color.net <- neuralnet(red + green + blue ~ input1 + input2, trainingdata)

test.red <- runif(10)
test.green <- (1 - test.red) * runif(n=10)
test.input1 <- test.green^2
test.input2 <- sin(test.red)

testdata <- data.frame(test.input1, test.input2)

testoutcolor <- as.data.frame(compute(color.net, testdata)[2])
colnames(testoutcolor) <- c("red", "green", "blue")
testoutcolor$sum <- testoutcolor$red + testoutcolor$green + testoutcolor$blue

testoutcolor

即使trainingdata具有red + green + blue = 1神经网络也很可能不会自行“学习”这个条件,而只会输出接近这个条件的值。

是否可以强制神经网络满足这个条件?

[编辑]

正如@Spacedman 所说,在此示例blue中不会向模型添加信息 - 它可以仅使用1 - red - green. 我仍然需要一种方法来“告诉”模型存在一个条件:

red + green <= 1
4

1 回答 1

0

只需向数据集添加一个特征,如果条件为真则返回 1,如果条件为假则返回 0(或 -1,取决于您的激活函数),反之亦然。如果您想强制 ML 算法考虑某些内容,只需将其添加为特征。如果大多数算法无法预测,它将被忽略。

于 2014-03-18T17:06:33.220 回答