43 using namespace internal;
45 MaxMeasure::MaxMeasure(KernelManager& km,
CMMD* est) : KernelSelection(km, est)
49 MaxMeasure::~MaxMeasure()
64 void MaxMeasure::init_measures()
66 const index_t num_kernels=kernel_mgr.num_kernels();
67 REQUIRE(num_kernels>0,
"Number of kernels is %d!\n", kernel_mgr.num_kernels());
68 if (measures.size()!=num_kernels)
70 std::fill(measures.data(), measures.data()+measures.size(), 0);
73 void MaxMeasure::compute_measures()
75 REQUIRE(estimator!=
nullptr,
"Estimator is not set!\n");
77 if (mmd!=
nullptr && kernel_mgr.same_distance_type())
82 auto existing_kernel=estimator->get_kernel();
83 const auto num_kernels=kernel_mgr.num_kernels();
84 for (
auto i=0; i<num_kernels; ++i)
86 auto kernel=kernel_mgr.kernel_at(i);
87 estimator->set_kernel(kernel);
88 measures[i]=estimator->compute_statistic();
92 estimator->set_kernel(existing_kernel);
96 CKernel* MaxMeasure::select_kernel()
99 ASSERT(measures.size()==kernel_mgr.num_kernels());
100 auto max_element=std::max_element(measures.vector, measures.vector+measures.vlen);
102 SG_SDEBUG(
"Selected kernel at %d position!\n", max_idx);
103 return kernel_mgr.kernel_at(max_idx);
float distance(CJLCoverTreePoint p1, CJLCoverTreePoint p2, float64_t upper_bound)
#define SG_SNOTIMPLEMENTED
This class implements the quadratic time Maximum Mean Statistic as described in [1]. The MMD is the distance of two probability distributions and in a RKHS which we denote by .
CMultiKernelQuadraticTimeMMD * multikernel()
all of classes and functions are contained in the shogun namespace
Abstract base class that provides an interface for performing kernel two-sample test using Maximum Me...