40 using namespace Eigen;
54 void CSingleFITCInference::init()
77 eigen_res=-eigen_W.cwiseProduct(eigen_W).colwise().sum().transpose()-eigen_al.array().pow(2).matrix();
98 float64_t result=(eigen_w.dot(eigen_dKuui*eigen_w)+eigen_v.dot(eigen_di)-
99 (eigen_R*eigen_W.adjoint()).cwiseProduct(eigen_B*eigen_W.adjoint()).sum())/2.0;
116 eigen_R=2*eigen_dKui-eigen_dKuui*eigen_B;
121 eigen_v=eigen_ddiagKi-eigen_R.cwiseProduct(eigen_B).colwise().sum().adjoint();
144 result+=(eigen_ddiagKi.dot(eigen_t))/2.0-
145 eigen_w.dot((eigen_dKui*eigen_al));
154 return -eigen_dmu.dot(eigen_al);
161 REQUIRE(param,
"Param not set\n");
163 int64_t len=
const_cast<TParameter *
>(param)->m_datatype.get_num_elements();
183 REQUIRE(param,
"Param not set\n");
184 REQUIRE(!strcmp(param->
m_name,
"log_inducing_noise"),
"Can't compute derivative of "
185 "the nagative log marginal likelihood wrt %s.%s parameter\n",
194 eigen_R=-eigen_B*factor;
199 eigen_v=-eigen_R.cwiseProduct(eigen_B).colwise().sum().adjoint();
233 for(int32_t lat_idx=0; lat_idx<A.rows(); lat_idx++)
238 deriv_lat_col_vec+=eigen_deriv_mat*(-A.row(lat_idx).transpose());
246 for(int32_t lat_lidx=0; lat_lidx<C.rows(); lat_lidx++)
251 deriv_lat_col_vec+=eigen_deriv_mat*(C.row(lat_lidx).transpose());
277 eigen_BdK=eigen_B*eigen_v.asDiagonal()+eigen_w*(eigen_al.transpose())+
278 eigen_B*eigen_W.transpose()*eigen_W;
virtual bool init(CFeatures *lhs, CFeatures *rhs)
virtual float64_t get_derivative_related_cov_helper(SGMatrix< float64_t > dKuui, SGVector< float64_t > v, SGMatrix< float64_t > R)
virtual ~CSingleFITCInference()
SGVector< float64_t > m_w
The class Labels models labels, i.e. class assignments of objects.
virtual SGVector< float64_t > get_derivative_related_cov_diagonal()
virtual float64_t get_derivative_related_cov(SGVector< float64_t > ddiagKi, SGMatrix< float64_t > dKuui, SGMatrix< float64_t > dKui)
An abstract class of the mean function.
virtual SGVector< float64_t > get_derivative_wrt_inducing_noise(const TParameter *param)
The sparse inference base class for classification and regression for 1-D labels (1D regression and b...
virtual float64_t get_derivative_related_mean(SGVector< float64_t > dmu)
virtual SGVector< float64_t > get_derivative_wrt_mean(const TParameter *param)
virtual CFeatures * get_inducing_features()
SGMatrix< float64_t > m_Rvdd
virtual SGVector< float64_t > get_derivative_related_inducing_features(SGMatrix< float64_t > BdK, const TParameter *param)
SGVector< float64_t > m_t
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
SGMatrix< float64_t > m_V
SGMatrix< float64_t > m_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)
SGMatrix< float64_t > m_B
virtual const char * get_name() const
virtual SGVector< float64_t > get_derivative_wrt_inducing_features(const TParameter *param)
static SGMatrix< T > create_identity_matrix(index_t size, T scale)
The Likelihood model base class.
SGVector< float64_t > m_al
float64_t m_log_ind_noise