SHOGUN
3.2.1
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
shogun
statistics
StreamingMMD.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 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 STREAMING_MMD_H_
33
#define STREAMING_MMD_H_
34
35
#include <
shogun/statistics/KernelTwoSampleTest.h
>
36
37
namespace
shogun
38
{
39
40
class
CStreamingFeatures;
41
class
CFeatures;
42
86
class
CStreamingMMD
:
public
CKernelTwoSampleTest
87
{
88
public
:
90
CStreamingMMD
();
91
101
CStreamingMMD
(
CKernel
* kernel,
CStreamingFeatures
* p,
102
CStreamingFeatures
* q,
index_t
m,
index_t
blocksize=10000);
103
105
virtual
~CStreamingMMD
();
106
116
virtual
float64_t
compute_statistic
();
117
125
virtual
SGVector<float64_t>
compute_statistic
(
bool
multiple_kernels);
126
140
virtual
float64_t
compute_p_value
(
float64_t
statistic);
141
157
virtual
float64_t
perform_test
();
158
171
virtual
float64_t
compute_threshold
(
float64_t
alpha);
172
179
virtual
float64_t
compute_variance_estimate
();
180
199
virtual
void
compute_statistic_and_variance
(
200
SGVector<float64_t>
& statistic,
SGVector<float64_t>
& variance,
201
bool
multiple_kernels=
false
)=0;
202
207
virtual
void
compute_statistic_and_Q
(
208
SGVector<float64_t>
& statistic,
SGMatrix<float64_t>
& Q)=0;
209
219
virtual
SGVector<float64_t>
sample_null
();
220
224
void
set_blocksize
(
index_t
blocksize)
225
{
226
m_blocksize
=blocksize;
227
}
228
240
CList
*
stream_data_blocks
(
index_t
num_blocks,
index_t
num_this_run);
241
243
virtual
void
set_p_and_q
(
CFeatures
* p_and_q);
244
246
virtual
CFeatures
*
get_p_and_q
();
247
251
virtual
CStreamingFeatures
*
get_streaming_p
();
252
256
virtual
CStreamingFeatures
*
get_streaming_q
();
257
261
inline
void
set_simulate_h0
(
bool
simulate_h0)
262
{
263
m_simulate_h0
=simulate_h0;
264
}
265
267
virtual
const
char
*
get_name
()
const
268
{
269
return
"StreamingMMD"
;
270
}
271
272
protected
:
284
virtual
SGVector<float64_t>
compute_squared_mmd
(
CKernel
* kernel,
285
CList
* data,
index_t
num_this_run)=0;
286
288
CStreamingFeatures
*
m_streaming_p
;
289
291
CStreamingFeatures
*
m_streaming_q
;
292
294
index_t
m_blocksize
;
295
298
bool
m_simulate_h0
;
299
300
private
:
302
void
init();
303
};
304
305
}
306
307
#endif
/* STREAMING_MMD_H_ */
308
SHOGUN
Machine Learning Toolbox - Documentation