【问题标题】:Conditions in formula in machine learning机器学习公式中的条件
【发布时间】:2013-09-11 09:47:37
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果您的三个变量加起来为 1,则第三个变量中没有额外信息,您可以将其关闭。你能举个例子吗,因为在lm 中你需要cbind lhs 上的多重响应来阻止它们被简单地添加。
  • 嗯,我必须考虑一下。一方面,第三个变量中可能真的没有额外的信息。另一方面,算法如何知道out1 + out3 加上模型中未指定的第三个变量加起来是一个?我编辑我的帖子以提供示例
  • @Spacedman 请检查我的编辑
  • 好吧,这看起来像是一个特定的神经网络/机器学习的东西,而不是一般的公式(包括线性模型和 GLM)。建议您稍微修改一下标题并添加“神经网络”或“机器学习”标签?
  • 我认为,如果您提出您想要解决的实际问题,而不是询问如何使用公式来解决问题,您会走得更远。可能有更好的方法来做到这一点(或构建公式的更好方法)

标签: r machine-learning conditional formula


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-05-04
    • 2019-09-16
    • 2015-10-23
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2011-06-04
    相关资源
    最近更新 更多