aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
EMApproximationScheme.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2025 by *
5 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
6 * - Christophe GONZALES(_at_AMU) *
7 * *
8 * The aGrUM/pyAgrum library is free software; you can redistribute it *
9 * and/or modify it under the terms of either : *
10 * *
11 * - the GNU Lesser General Public License as published by *
12 * the Free Software Foundation, either version 3 of the License, *
13 * or (at your option) any later version, *
14 * - the MIT license (MIT), *
15 * - or both in dual license, as here. *
16 * *
17 * (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18 * *
19 * This aGrUM/pyAgrum library is distributed in the hope that it will be *
20 * useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26 * OTHER DEALINGS IN THE SOFTWARE. *
27 * *
28 * See LICENCES for more details. *
29 * *
30 * SPDX-FileCopyrightText: Copyright 2005-2025 *
31 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
32 * - Christophe GONZALES(_at_AMU) *
33 * SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34 * *
35 * Contact : info_at_agrum_dot_org *
36 * homepage : http://agrum.gitlab.io *
37 * gitlab : https://gitlab.com/agrumery/agrum *
38 * *
39 ****************************************************************************/
40
41
47#ifndef GUM_LEARNING_EM_APPROX_SCHEME_H
48#define GUM_LEARNING_EM_APPROX_SCHEME_H
49
50#include <algorithm>
51#include <string>
52#include <vector>
53
54#include <agrum/agrum.h>
55
58
59namespace gum {
60
61 namespace learning {
62
69 public:
78
80
89 void setEpsilon(double eps) override {
90 if (eps <= 0)
91 GUM_ERROR(OutOfBounds, "EM's min diff epsilon value must be strictly positive")
94 }
95
104 void setMinDiffEpsilon(double eps) { setEpsilon(eps); }
105
114 void setMinEpsilonRate(double rate) override {
115 if (rate <= 0.0)
116 GUM_ERROR(OutOfBounds, "EM's min log-likelihood evolution rate must be strictly positive")
119 }
120 };
121
122 } // namespace learning
123
124} // namespace gum
125
126#endif // GUM_LEARNING_EM_APPROX_SCHEME_H
gum::ApproximationSchemeListener header file.
This file contains general scheme for iteratively convergent algorithms.
void setMinEpsilonRate(double rate) override
Given that we approximate f(t), stopping criterion on d/dt(|f(t+1)-f(t)|).
void disableEpsilon() override
Disable stopping criterion on epsilon.
void disableMinEpsilonRate() override
Disable stopping criterion on epsilon rate.
ApproximationScheme(bool verbosity=false)
void enableMinEpsilonRate() override
Enable stopping criterion on epsilon rate.
bool verbosity() const override
Returns true if verbosity is enabled.
void setEpsilon(double eps) override
Given that we approximate f(t), stopping criterion on |f(t+1)-f(t)|.
Exception : out of bound.
void setEpsilon(double eps) override
sets the stopping criterion of EM as being the minimal difference between two consecutive log-likelih...
EMApproximationScheme(bool verbosity=false)
initializes the EM parameter learning approximation with the min rate criterion
void setMinEpsilonRate(double rate) override
sets the stopping criterion of EM as being the minimal log-likelihood's evolution rate
void setMinDiffEpsilon(double eps)
sets the stopping criterion of EM as being the minimal difference between two consecutive log-likelih...
#define GUM_ERROR(type, msg)
Definition exceptions.h:72
include the inlined functions if necessary
Definition CSVParser.h:54
gum is the global namespace for all aGrUM entities
Definition agrum.h:46