13 #ifndef MLPACK_METHODS_NYSTROEM_METHOD_NYSTROEM_METHOD_IMPL_HPP 14 #define MLPACK_METHODS_NYSTROEM_METHOD_NYSTROEM_METHOD_IMPL_HPP 22 template<
typename KernelType,
typename Po
intSelectionPolicy>
24 const arma::mat&
data,
32 template<
typename KernelType,
typename Po
intSelectionPolicy>
34 const arma::mat* selectedData,
35 arma::mat& miniKernel,
36 arma::mat& semiKernel)
39 for (
size_t i = 0; i < rank; ++i)
40 for (
size_t j = 0; j < rank; ++j)
41 miniKernel(i, j) = kernel.Evaluate(selectedData->col(i),
42 selectedData->col(j));
46 for (
size_t i = 0; i <
data.n_cols; ++i)
47 for (
size_t j = 0; j < rank; ++j)
48 semiKernel(i, j) = kernel.Evaluate(
data.col(i),
49 selectedData->col(j));
54 template<
typename KernelType,
typename Po
intSelectionPolicy>
56 const arma::Col<size_t>& selectedPoints,
57 arma::mat& miniKernel,
58 arma::mat& semiKernel)
61 for (
size_t i = 0; i < rank; ++i)
63 for (
size_t j = 0; j < rank; ++j)
65 miniKernel(i, j) = kernel.Evaluate(
data.col(selectedPoints(i)),
66 data.col(selectedPoints(j)));
72 for (
size_t i = 0; i <
data.n_cols; ++i)
73 for (
size_t j = 0; j < rank; ++j)
74 semiKernel(i, j) = kernel.Evaluate(
data.col(i),
75 data.col(selectedPoints(j)));
78 template<
typename KernelType,
typename Po
intSelectionPolicy>
81 arma::mat miniKernel(rank, rank);
82 arma::mat semiKernel(
data.n_cols, rank);
90 arma::svd(U, s, V, miniKernel);
94 arma::mat normalization = arma::diagmat(1.0 / sqrt(s));
95 for (
size_t i = 0; i < s.n_elem; ++i)
96 if (std::abs(s[i]) <= 1e-20)
97 normalization(i, i) = 0.0;
99 output = semiKernel * U * normalization * V;
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
void Apply(arma::mat &output)
Apply the low-rank factorization to obtain an output matrix G such that K' = G * G^T.
Definition: nystroem_method_impl.hpp:79
NystroemMethod(const arma::mat &data, KernelType &kernel, const size_t rank)
Create the NystroemMethod object.
Definition: nystroem_method_impl.hpp:23
void GetKernelMatrix(const arma::mat *data, arma::mat &miniKernel, arma::mat &semiKernel)
Construct the kernel matrix with matrix that contains the selected points.
Definition: nystroem_method_impl.hpp:33