aGrUM  0.14.2
scoreLog2Likelihood.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005 by Christophe GONZALES and Pierre-Henri WUILLEMIN *
3  * {prenom.nom}_at_lip6.fr *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ***************************************************************************/
26 #ifndef GUM_LEARNING_SCORE_LOG2_LIKELIHOOD_H
27 #define GUM_LEARNING_SCORE_LOG2_LIKELIHOOD_H
28 
29 #include <string>
30 
31 #include <agrum/agrum.h>
32 #include <agrum/core/math/math.h>
35 
36 namespace gum {
37 
38  namespace learning {
39 
48  template < template < typename > class ALLOC = std::allocator >
49  class ScoreLog2Likelihood : public Score< ALLOC > {
50  public:
52  using allocator_type = ALLOC< NodeId >;
53 
54  // ##########################################################################
56  // ##########################################################################
58 
60 
81  const DBRowGeneratorParser< ALLOC >& parser,
82  const Apriori< ALLOC >& apriori,
83  const std::vector< std::pair< std::size_t, std::size_t >,
84  ALLOC< std::pair< std::size_t, std::size_t > > >&
85  ranges,
86  const Bijection< NodeId, std::size_t, ALLOC< std::size_t > >&
87  nodeId2columns =
88  Bijection< NodeId, std::size_t, ALLOC< std::size_t > >(),
89  const allocator_type& alloc = allocator_type());
90 
91 
93 
108  const DBRowGeneratorParser< ALLOC >& parser,
109  const Apriori< ALLOC >& apriori,
110  const Bijection< NodeId, std::size_t, ALLOC< std::size_t > >&
111  nodeId2columns =
112  Bijection< NodeId, std::size_t, ALLOC< std::size_t > >(),
113  const allocator_type& alloc = allocator_type());
114 
117 
120  const allocator_type& alloc);
121 
124 
127  const allocator_type& alloc);
128 
130  virtual ScoreLog2Likelihood< ALLOC >* clone() const;
131 
134  clone(const allocator_type& alloc) const;
135 
137  virtual ~ScoreLog2Likelihood();
138 
140 
141 
142  // ##########################################################################
144  // ##########################################################################
145 
147 
151 
154 
156 
157 
158  // ##########################################################################
160  // ##########################################################################
162 
164 
173  virtual std::string isAprioriCompatible() const final;
174 
176 
186  virtual const Apriori< ALLOC >& internalApriori() const final;
187 
188  using Score< ALLOC >::score;
189 
191 
194  double score(const IdSet< ALLOC >& idset);
195 
197 
198 
200 
202  static std::string isAprioriCompatible(const std::string& apriori_type,
203  double weight = 1.0f);
204 
206 
207  static std::string isAprioriCompatible(const Apriori< ALLOC >& apriori);
208 
209 
210  protected:
212 
215  virtual double _score(const IdSet< ALLOC >& idset) final;
216 
217 
218 #ifndef DOXYGEN_SHOULD_SKIP_THIS
219 
220  private:
222  AprioriNoApriori< ALLOC > __internal_apriori;
223 
224 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
225  };
226 
227  } /* namespace learning */
228 
229 } /* namespace gum */
230 
231 
232 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
233 extern template class gum::learning::ScoreLog2Likelihood<>;
234 #endif
235 
236 
237 // always include the template implementation
239 
240 #endif /* GUM_LEARNING_SCORE_LOG2_LIKELIHOOD_H */
Useful macros for maths.
double score(const IdSet< ALLOC > &idset)
returns the score for a given IdSet
The base class for all the scores used for learning (BIC, BDeu, etc)
Definition: score.h:49
the no a priori class: corresponds to 0 weight-sample
virtual ScoreLog2Likelihood< ALLOC > * clone() const
virtual copy constructor
ALLOC< NodeId > allocator_type
type for the allocators passed in arguments of methods
STL namespace.
A class for storing a pair of sets of NodeIds, the second one corresponding to a conditional set...
Definition: idSet.h:45
virtual ~ScoreLog2Likelihood()
destructor
the base class for all a priori
Definition: apriori.h:47
virtual const Apriori< ALLOC > & internalApriori() const final
returns the internal apriori of the score
ALLOC< NodeId > allocator_type
type for the allocators passed in arguments of methods
Definition: score.h:52
gum is the global namespace for all aGrUM entities
Definition: agrum.h:25
the class for computing Log2-likelihood scores
const std::vector< std::pair< std::size_t, std::size_t >, ALLOC< std::pair< std::size_t, std::size_t > > > & ranges() const
returns the current ranges
Set of pairs of elements with fast search for both elements.
Definition: bijection.h:1803
the base class for all the scores used for learning (BIC, BDeu, etc)
ScoreLog2Likelihood< ALLOC > & operator=(const ScoreLog2Likelihood< ALLOC > &from)
copy operator
ScoreLog2Likelihood(const DBRowGeneratorParser< ALLOC > &parser, const Apriori< ALLOC > &apriori, const std::vector< std::pair< std::size_t, std::size_t >, ALLOC< std::pair< std::size_t, std::size_t > > > &ranges, const Bijection< NodeId, std::size_t, ALLOC< std::size_t > > &nodeId2columns=Bijection< NodeId, std::size_t, ALLOC< std::size_t > >(), const allocator_type &alloc=allocator_type())
default constructor
virtual std::string isAprioriCompatible() const final
indicates whether the apriori is compatible (meaningful) with the score
the class used to read a row in the database and to transform it into a set of DBRow instances that c...
virtual double _score(const IdSet< ALLOC > &idset) final
returns the score for a given IdSet
Size NodeId
Type for node ids.
Definition: graphElements.h:97
the no a priori class: corresponds to 0 weight-sample
the class for computing Log2-Likelihood scores