Можно ли указать условия в формуле, напримерусловие в формуле в машинном обучении
out1 + out2 ~ in1 + in2 + in3 <with all (out1 + out2 = 1)>
возможный пример: Попытки предсказать цвет собранный с red
, green
и blue
. Когда нет презумпции о модели, это возможно, можно было бы сделать с помощью нейронной сети:
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
нейронную сеть, скорее всего, не «узнать» это состояние самого по себе и только значению выходных аппроксимируя это условие.
Можно ли заставить нейронную сеть соответствовать этому условию?
[EDIT]
Как указано @Spacedman, в этом примере blue
не добавляет информацию к модели - она может быть вычислена только с 1 - red - green
. Тем не менее я должен был бы способ «сказать» модель, в которой есть условие:
red + green <= 1
Если ваши три переменные составляют до 1, то в третьей переменной нет дополнительной информации, и вы можете ее оставить. Можете ли вы привести рабочий пример, потому что в 'lm' вам нужно« cbind »множественный отклик на lhs, чтобы остановить их простым добавлением. – Spacedman
Хм, мне нужно подумать об этом. С одной стороны, в третьей переменной, возможно, нет дополнительной информации. С другой стороны, как должен алгоритм знать, что 'out1 + out3' плюс третья переменная, не указанная в модели, составляет до одного? Я отредактировал свою публикацию, чтобы предоставить пример – speendo
@Spacedman, пожалуйста, проверьте мои изменения. – speendo