ArgumentException: узлы, содержащие любые непрерывные переменные, не могут иметь дочерние узлы, содержащие какие-либо дискретные переменные
Я пытаюсь представить следующую сеть, используя код C# на сервере Байеса. В сети Prior
и узлы "Знания" в моей сети являются непрерывными, имеют значения вероятности от 0 до 1, а узел вопроса дискретен, имеет только два состояния, правильные или неправильные (т. е. правильно или неправильно дан ответ на вопрос).
Сеть реализована следующим образом в моем скрипте.
// numberOfDistractors and levelId will be used later for added complexity in modeling
void InitializeNetworkForLevel(int numberOfDistractors, int levelId)
{
beliefnet = new BayesServer.Network();
// add an intial knowledge node
priorKnowledge = new Variable("PriorKnowledge", VariableValueType.Continuous, VariableKind.Probability);
// initialize the priorKnowledge value to 0.5 if level = 1, else set it to learn rate (may be here, or in the queryNetwork method)
priorKnowledgeNode = new Node("Prior", priorKnowledge);
beliefnet.Nodes.Add(priorKnowledgeNode);
// add a knowledge node which is a latent variable (parameter to be learned from observed values
learnRate = new Variable("LearnRate", VariableValueType.Continuous, VariableKind.Probability);
knowledgeNode = new Node("Knowledge", learnRate);
beliefnet.Nodes.Add(knowledgeNode);
// add a link from prior node to knowledge node
beliefnet.Links.Add(new Link(priorKnowledgeNode, knowledgeNode));
// add a question node, which denotes the oberved variable whether the question is answered correctly or not
// this node has two states, namely correct or incorrect
State correct = new State("Correct");
State inCorrect = new State("Inorrect");
questionNode = new Node("Question", correct, inCorrect);
beliefnet.Nodes.Add(questionNode);
// add a link from knowledge node to question node
beliefnet.Links.Add(new Link(knowledgeNode, questionNode));
// We will use the RelevanceTree algorithm here, as it is optimized for parameter learning
learning = new ParameterLearning(beliefnet, new RelevanceTreeInferenceFactory());
learningOptions = new ParameterLearningOptions();
QueryNetwork(true);
}
Тем не менее, это не позволяет мне создавать сеть, говоря, что узлы с непрерывными переменными не могут иметь дочерние узлы с дискретной переменной, и просит меня дискретизировать эти непрерывные узлы. Однако сеть такая, какая есть, и я не уверен, что смогу ее изменить. Как мне это сделать?
ArgumentException: узлы, содержащие любые непрерывные переменные, не могут иметь дочерних узлов, содержащих какие-либо дискретные переменные. Вместо этого ссылка может быть обращена (при необходимости), или вместо этого может быть добавлена скрытая дискретная родительская ссылка, или же может быть дискретизирована непрерывная переменная. BayesServer.NetworkLinkCollection. (BayesServer.Link) (по адресу:0) BayesServer.NetworkLinkCollection.Insert (индекс System.Int32, элемент BayesServer.Link) (по адресу:0) BayesServer.NetworkLinkCollection.Add (элемент BayesServer.Link) (по адресу:0) BayesNet.InitializeNetwork (System.Int32 numberOfDistractors, System.Int32 levelId) (в разделе Активы / Сценарии /BayesNet.cs:57) BayesNet.Start () (в разделе Активы / Сценарии /BayesNet.cs:22)