SHOGUN  6.1.3
MMD.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) The Shogun Machine Learning Toolbox
3  * Written (w) 2012 - 2013 Heiko Strathmann
4  * Written (w) 2014 - 2017 Soumyajit De
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright notice, this
11  * list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright notice,
13  * this list of conditions and the following disclaimer in the documentation
14  * and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  *
27  * The views and conclusions contained in the software and documentation are those
28  * of the authors and should not be interpreted as representing official policies,
29  * either expressed or implied, of the Shogun Development Team.
30  */
31 
32 #ifndef MMD_H_
33 #define MMD_H_
34 
35 #include <utility>
36 #include <memory>
37 #include <functional>
40 
41 namespace shogun
42 {
43 
44 class CKernel;
46 template <typename> class SGVector;
47 
120 class CMMD : public CTwoSampleTest
121 {
122 public:
124  CMMD();
125 
132  CMMD(CFeatures* samples_from_p, CFeatures* samples_from_q);
133 
135  virtual ~CMMD();
136 
147  void set_kernel_selection_strategy(EKernelSelectionMethod method, bool weighted = false);
148 
159  void set_kernel_selection_strategy(EKernelSelectionMethod method, index_t num_runs, index_t num_folds, float64_t alpha);
160 
170  void add_kernel(CKernel *kernel);
171 
186  virtual void select_kernel();
187 
197 
203  virtual float64_t compute_statistic() = 0;
204 
210  virtual SGVector<float64_t> sample_null() = 0;
211 
213  void cleanup();
214 
220  void set_num_null_samples(index_t null_samples);
221 
224 
231 
234 
241 
244 
246  virtual const char* get_name() const;
247 protected:
248  virtual float64_t normalize_statistic(float64_t statistic) const = 0;
249 private:
250  struct Self;
251  std::unique_ptr<Self> self;
252  void init();
253 };
254 
255 }
256 #endif // MMD_H_
virtual const char * get_name() const
Definition: MMD.cpp:159
int32_t index_t
Definition: common.h:72
EKernelSelectionMethod
Definition: TestEnums.h:61
virtual void select_kernel()
Definition: MMD.cpp:114
void set_num_null_samples(index_t null_samples)
Definition: MMD.cpp:129
Kernel two sample test base class. Provides an interface for performing a two-sample test using a ker...
Definition: TwoSampleTest.h:58
CKernelSelectionStrategy const * get_kernel_selection_strategy() const
Definition: MMD.cpp:104
double float64_t
Definition: common.h:60
void add_kernel(CKernel *kernel)
Definition: MMD.cpp:109
EStatisticType
Definition: TestEnums.h:40
index_t get_num_null_samples() const
Definition: MMD.cpp:134
void cleanup()
Definition: MMD.cpp:124
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
EStatisticType get_statistic_type() const
Definition: MMD.cpp:144
virtual SGVector< float64_t > sample_null()=0
The class Features is the base class of all feature objects.
Definition: Features.h:69
virtual float64_t normalize_statistic(float64_t statistic) const =0
virtual float64_t compute_statistic()=0
Abstract base class that provides an interface for performing kernel two-sample test using Maximum Me...
Definition: MMD.h:120
The Kernel base class.
void set_statistic_type(EStatisticType stype)
Definition: MMD.cpp:139
void set_null_approximation_method(ENullApproximationMethod nmethod)
Definition: MMD.cpp:149
virtual ~CMMD()
Definition: MMD.cpp:84
void set_kernel_selection_strategy(EKernelSelectionMethod method, bool weighted=false)
Definition: MMD.cpp:89
ENullApproximationMethod
Definition: TestEnums.h:53
ENullApproximationMethod get_null_approximation_method() const
Definition: MMD.cpp:154

SHOGUN Machine Learning Toolbox - Documentation