39 using namespace Eigen;
59 void CKRRNystrom::init()
88 #pragma omp parallel for
94 #pragma omp parallel for
100 MatrixXd K_mn_eig = K_nm_eig.transpose();
102 VectorXd alphas_eig(m_num_rkhs_basis);
106 SelfAdjointEigenSolver<MatrixXd> solver(Kplus);
107 if (solver.info()!=Success)
114 MatrixXd D=solver.eigenvalues().asDiagonal();
115 MatrixXd eigvec=solver.eigenvectors();
116 float64_t dbl_epsilon=std::numeric_limits<float64_t>::epsilon();
117 const float64_t tolerance=m_num_rkhs_basis*dbl_epsilon*D.maxCoeff();
120 if (D(i,i)<tolerance)
125 MatrixXd pseudoinv=eigvec*D*eigvec.transpose();
126 alphas_eig=pseudoinv*K_mn_eig*y_eig;
132 alpha_n[col[i]]=alphas_eig[i];
void range_fill(T start=0)
static void permute(SGVector< T > v, CRandom *rand=NULL)
Class KernelRidgeRegression implements Kernel Ridge Regression - a regularized least square method fo...
Real Labels are real-valued labels.
SGVector< int32_t > subsample_indices()
The class Labels models labels, i.e. class assignments of objects.
float64_t kernel(int32_t idx_a, int32_t idx_b)
virtual int32_t get_num_vec_lhs()
static void qsort(T *output, int32_t size)
SGVector< float64_t > m_alpha
virtual bool solve_krr_system()
all of classes and functions are contained in the shogun namespace
SGVector< T > get_row_vector(index_t row) const