parametersNodeTime0 = ef_learningmodelTime0.getDistributionList() .stream() .filter(dist -> dist.getVariable().isParameterVariable()) .map(dist -> { Node node = new Node(dist); parametersToNodeTime0.put(dist.getVariable(), node); return node; }) .filter(dist -> !dist.getVariable().isParameterVariable()) .map(dist -> { Node node = new Node(dist); variablesToNodeTime0.put(dist.getVariable(), node); return node; }) node.setParents(node.getPDist().getConditioningVariables().stream().map(var -> this.getNodeOfVarTime0(var)).collect(Collectors.toList())); node.getPDist().getConditioningVariables().stream().forEach(var -> this.getNodeOfVarTime0(var).getChildren().add(node));
@Override public double getPosteriorSampleSize() { double sum = 0; for (Variable variable : this.nonReplicatedVariablesList) { sum+=this.ef_learningmodel.getDistribution(variable).getNaturalParameters().sum(); } return sum; } }
dirichletMixingTopics = ef_learningmodel.getDistribution(topicIndicator).getConditioningVariables().get(0); this.replicatedVariables.put(dirichletMixingTopics, true); ef_learningmodel.getDistribution(dirichletMixingTopics).getNaturalParameters().set(i, MIXING_PRIOR); NaturalParameters vec = this.ef_learningmodel.getDistribution(variable).getNaturalParameters();
/** * Replicates this model. */ @Override public void replicateModel() { //nonReplicatedNodes are the Dirichlet storing topics distributions. nonReplictedNodes = ef_learningmodel.getDistributionList().stream() .filter(dist -> isNonReplicatedVar(dist.getVariable())) .map(dist -> { Node node = new Node(dist); nonReplicatedVarsToNode.put(dist.getVariable(), node); return node; }) .collect(Collectors.toList()); List<Node> allNodes = new ArrayList<>(); allNodes.addAll(this.nonReplictedNodes); this.vmp.setNodes(allNodes); }
dirichletMixingTopics = ef_learningmodel.getDistribution(topicIndicator).getConditioningVariables().get(0); this.replicatedVariables.put(dirichletMixingTopics, true); ef_learningmodel.getDistribution(dirichletMixingTopics).getNaturalParameters().set(i,0.1); NaturalParameters vec = this.ef_learningmodel.getDistribution(variable).getNaturalParameters();
/** * Replicates this model. */ @Override public void replicateModel() { //nonReplicatedNodes are the Dirichlet storing topics distributions. nonReplictedNodes = ef_learningmodel.getDistributionList().stream() .filter(dist -> isNonReplicatedVar(dist.getVariable())) .map(dist -> { Node node = new Node(dist); nonReplicatedVarsToNode.put(dist.getVariable(), node); return node; }) .collect(Collectors.toList()); List<Node> allNodes = new ArrayList<>(); allNodes.addAll(this.nonReplictedNodes); this.vmp.setNodes(allNodes); }
.filter(dist -> dist.getVariable().isParameterVariable()) .map(dist -> { Node node = new Node(dist); parametersToNodeTimeT.put(dist.getVariable(), node); return node; }) cloneNodesTimeT = ef_learningmodelTimeT.getDistributionList() .stream() .filter(dist -> !dist.getVariable().isParameterVariable()) .map(dist -> { Variable temporalClone = this.dbnModel.getDynamicVariables().getInterfaceVariable(dist.getVariable()); EF_UnivariateDistribution uni = temporalClone.getDistributionType().newUnivariateDistribution().toEFUnivariateDistribution(); Node node = new Node(uni); Map<Variable, Node> map = new ConcurrentHashMap<>(); List<Node> tmpNodes = ef_learningmodelTimeT.getDistributionList().stream() .filter(dist -> !dist.getVariable().isParameterVariable()) .map(dist -> { Node node = new Node(dist, dist.getVariable().getName()+"_Slice_"+slice); map.put(dist.getVariable(), node); return node; }) for (Node node : plateuNodesTimeT.get(i)) { final int slice = i; node.setParents(node.getPDist().getConditioningVariables().stream().map(var -> this.getNodeOfVarTimeT(var, slice)).collect(Collectors.toList())); node.getPDist().getConditioningVariables().stream().filter(var -> var.isInterfaceVariable()).forEach(var -> node.setVariableToNodeParent(var, this.getNodeOfVarTimeT(var, slice)));
/** * {@inheritDoc} */ @Override public void setModel(DynamicBayesianNetwork model_) { model = model_; ef_model = new EF_DynamicBayesianNetwork(this.model); this.vmpTime0.setEFModel(ef_model.getBayesianNetworkTime0()); nodesTimeT = this.ef_model.getBayesianNetworkTimeT().getDistributionList() .stream() .map(dist -> new Node(dist)) .collect(Collectors.toList()); nodesClone = this.ef_model.getBayesianNetworkTime0().getDistributionList() .stream() .map(dist -> { Variable temporalClone = this.model.getDynamicVariables().getInterfaceVariable(dist.getVariable()); EF_UnivariateDistribution uni = temporalClone.getDistributionType().newUnivariateDistribution().toEFUnivariateDistribution(); Node node = new Node(uni); node.setActive(false); return node; }) .collect(Collectors.toList()); List<Node> allNodes = new ArrayList(); allNodes.addAll(nodesTimeT); allNodes.addAll(nodesClone); this.vmpTimeT.setNodes(allNodes); this.vmpTimeT.updateChildrenAndParents(); }