public void initLearning() { efBayesianNetwork = new EF_BayesianNetwork(dag); sumSS = efBayesianNetwork.createInitSufficientStatistics(); }
public void initLearning() { efBayesianNetwork = new EF_BayesianNetwork(dag); sumSS = efBayesianNetwork.createInitSufficientStatistics(); }
public void initLearning() { efBayesianNetwork = new EF_BayesianNetwork(dag); sumSS = efBayesianNetwork.createInitSufficientStatistics(); }
@Override public SufficientStatistics createInitSufficientStatistics() { DynamiceBNCompoundVector vectorSS = this.createEmtpyCompoundVector(); vectorSS.setIndicatorTime0(1.0); vectorSS.setVectorTime0(this.bayesianNetworkTime0.createInitSufficientStatistics()); vectorSS.setIndicatorTimeT(1.0); vectorSS.setVectorTimeT(this.bayesianNetworkTimeT.createInitSufficientStatistics()); return vectorSS; }
/** * {@inheritDoc} */ @Override public double updateModel(DataSpark dataUpdate) { //this.sumSS = computeSufficientStatistics(dataUpdate, efBayesianNetwork); this.sumSS = dataUpdate.getDataSet() .mapPartitions( iter -> sufficientStatisticsMap(iter, this.efBayesianNetwork)) .reduce(ParallelMaximumLikelihood::sufficientStatisticsReduce); //Add the prior sumSS.sum(efBayesianNetwork.createInitSufficientStatistics()); // FIXME: Maybe a generic method from the class, what about caching? numInstances = dataSpark.getDataSet().count(); numInstances++;//Initial counts return this.getLogMarginalProbability(); }
/** * {@inheritDoc} */ @Override public double updateModel(DataFlink<DataInstance> dataUpdate) { try { Configuration config = new Configuration(); config.setString(BN_NAME, this.dag.getName()); config.setBytes(EFBN_NAME, Serialization.serializeObject(efBayesianNetwork)); DataSet<DataInstance> dataset = dataUpdate.getDataSet(); this.sumSS = dataset.map(new SufficientSatisticsMAP()) .withParameters(config) .reduce(new SufficientSatisticsReduce()) .collect().get(0); //Add the prior sumSS.sum(efBayesianNetwork.createInitSufficientStatistics()); JobExecutionResult result = dataset.getExecutionEnvironment().getLastJobExecutionResult(); numInstances = result.getAccumulatorResult(ParallelMaximumLikelihood.COUNTER_NAME+"_"+this.dag.getName()); numInstances++;//Initial counts }catch(Exception ex){ throw new UndeclaredThrowableException(ex); } return this.getLogMarginalProbability(); }
/** * {@inheritDoc} */ @Override public double updateModel(DataFlink<DataInstance> dataUpdate) { try { this.initLearning(); Configuration config = new Configuration(); config.setString(ParameterLearningAlgorithm.BN_NAME, this.dag.getName()); config.setBytes(EFBN_NAME, Serialization.serializeObject(efBayesianNetwork)); DataSet<DataInstance> dataset = dataUpdate.getDataSet(); this.sumSS = dataset.mapPartition(new SufficientSatisticsMAP()) .withParameters(config) .reduce(new SufficientSatisticsReduce()) .collect().get(0); //Add the prior sumSS.sum(efBayesianNetwork.createInitSufficientStatistics()); JobExecutionResult result = dataset.getExecutionEnvironment().getLastJobExecutionResult(); numInstances = result.getAccumulatorResult(ParallelMaximumLikelihood2.COUNTER_NAME+"_"+this.dag.getName()); numInstances++;//Initial counts }catch(Exception ex){ throw new UndeclaredThrowableException(ex); } return this.getLogMarginalProbability(); }