noparama  v0.0.1
Nonparametric Bayesian models
np_jain_neal_algorithm.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <random>
4 
5 #include <statistics/distribution.h>
6 #include <membertrix.h>
8 #include <statistics/dirichlet.h>
9 #include <np_statistics.h>
10 
16  private:
18  std::default_random_engine _generator;
19 
21  distribution_t & _likelihood;
22 
24  split_method_t _split_method;
25 
30  dirichlet_process & _nonparametrics;
31 
33  membertrix * _cluster_matrix;
34 
38  double _alpha;
39 
40  // verbosity
41  char _verbosity;
42 
43  // statistics
44  statistics_t _statistics;
45 
46  double ratioStateProb(bool split, int nc0, int nc1, int nc);
47 
55  double ratioProposal(bool split, int N, int C = 2);
56 
57  void checkLikelihoods(double l1, double l2, step_t statistics_step, double &l21, bool &accept, bool &overwrite);
58 
59  void propose_split(data_ids_t & move, data_ids_t & remain, data_id_t data_i, data_id_t data_j,
60  cluster_id_t current_cluster_id, cluster_t & new_cluster, split_method_t split_method);
61 
62  // split a single cluster
63  bool split(data_ids_t data_ids, cluster_id_t current_cluster);
64 
65  // merge the given clusters
66  bool merge(data_ids_t data_ids, std::vector<cluster_id_t> & current_clusters);
67  public:
76  random_engine_t & generator,
77  distribution_t & likelihood,
78  dirichlet_process & nonparametrics
79  );
80 
82 
89  void update(
90  membertrix & cluster_matrix,
91  const data_ids_t & data_ids
92  );
93 
97  void printStatistics();
98 };
JainNealAlgorithm(random_engine_t &generator, distribution_t &likelihood, dirichlet_process &nonparametrics)
Definition: np_jain_neal_algorithm.cpp:15
int cluster_id_t
Index to a cluster.
Definition: np_cluster.h:10
Definition: membertrix.h:52
Definition: np_statistics.h:7
Definition: np_cluster.h:27
Definition: pretty_print.hpp:112
split_method_t
Definition: np_statistics.h:5
int data_id_t
Definition: np_data.h:20
void printStatistics()
Definition: np_jain_neal_algorithm.cpp:498
void update(membertrix &cluster_matrix, const data_ids_t &data_ids)
Definition: np_jain_neal_algorithm.cpp:418
Definition: np_jain_neal_algorithm.h:15
~JainNealAlgorithm()
Definition: np_jain_neal_algorithm.cpp:38
Definition: np_statistics.h:20
Definition: np_update_cluster_population.h:13