46 using namespace Eigen;
60 void CSingleFITCLaplacianBase::init()
83 eigen_res=-eigen_W.cwiseProduct(eigen_W).colwise().sum().transpose()-eigen_al.array().pow(2).matrix();
104 float64_t result=(eigen_w.dot(eigen_dKuui*eigen_w)+eigen_v.dot(eigen_di)-
105 (eigen_R*eigen_W.adjoint()).cwiseProduct(eigen_B*eigen_W.adjoint()).sum())/2.0;
122 eigen_R=2*eigen_dKui-eigen_dKuui*eigen_B;
127 eigen_v=eigen_ddiagKi-eigen_R.cwiseProduct(eigen_B).colwise().sum().adjoint();
150 result+=(eigen_ddiagKi.dot(eigen_t))/2.0-
151 eigen_w.dot((eigen_dKui*eigen_al));
160 return -eigen_dmu.dot(eigen_al);
167 REQUIRE(param,
"Param not set\n");
169 int64_t len=
const_cast<TParameter *
>(param)->m_datatype.get_num_elements();
189 REQUIRE(param,
"Param not set\n");
190 REQUIRE(!strcmp(param->
m_name,
"log_inducing_noise"),
"Can't compute derivative of "
191 "the nagative log marginal likelihood wrt %s.%s parameter\n",
200 eigen_R=-eigen_B*factor;
205 eigen_v=-eigen_R.cwiseProduct(eigen_B).colwise().sum().adjoint();
239 for(int32_t lat_idx=0; lat_idx<A.rows(); lat_idx++)
244 deriv_lat_col_vec+=eigen_deriv_mat*(-A.row(lat_idx).transpose());
252 for(int32_t lat_lidx=0; lat_lidx<C.rows(); lat_lidx++)
257 deriv_lat_col_vec+=eigen_deriv_mat*(C.row(lat_lidx).transpose());
283 eigen_BdK=eigen_B*eigen_v.asDiagonal()+eigen_w*(eigen_al.transpose())+
284 eigen_B*eigen_W.transpose()*eigen_W;
virtual bool init(CFeatures *lhs, CFeatures *rhs)
SGMatrix< float64_t > m_B
The class Labels models labels, i.e. class assignments of objects.
CSingleFITCLaplacianBase()
SGMatrix< float64_t > m_Rvdd
SGVector< float64_t > m_al
virtual SGVector< float64_t > get_derivative_wrt_mean(const TParameter *param)
virtual ~CSingleFITCLaplacianBase()
An abstract class of the mean function.
virtual SGVector< float64_t > get_derivative_wrt_inducing_noise(const TParameter *param)
SGMatrix< float64_t > m_inducing_features
virtual float64_t get_derivative_related_cov(SGVector< float64_t > ddiagKi, SGMatrix< float64_t > dKuui, SGMatrix< float64_t > dKui)
virtual const char * get_name() const
virtual SGVector< float64_t > get_derivative_related_cov_diagonal()
The sparse inference base class for classification and regression for 1-D labels (1D regression and b...
virtual SGVector< float64_t > get_derivative_related_inducing_features(SGMatrix< float64_t > BdK, const TParameter *param)
virtual float64_t get_derivative_related_mean(SGVector< float64_t > dmu)
virtual SGVector< float64_t > get_parameter_derivative(const CFeatures *features, const TParameter *param, index_t index=-1)
all of classes and functions are contained in the shogun namespace
virtual CFeatures * get_inducing_features()
The class Features is the base class of all feature objects.
static float64_t exp(float64_t x)
virtual SGMatrix< float64_t > get_parameter_gradient(const TParameter *param, index_t index=-1)
SGVector< float64_t > m_t
float64_t m_log_ind_noise
SGVector< float64_t > m_w
virtual SGVector< float64_t > get_derivative_wrt_inducing_features(const TParameter *param)
SGMatrix< float64_t > m_V
static SGMatrix< T > create_identity_matrix(index_t size, T scale)
The Likelihood model base class.
virtual float64_t get_derivative_related_cov_helper(SGMatrix< float64_t > dKuui, SGVector< float64_t > v, SGMatrix< float64_t > R)