sts_sparse_linear_regression {tfprobability} | R Documentation |
Formal representation of a sparse linear regression.
Description
This model defines a time series given by a sparse linear combination of covariate time series provided in a design matrix:
Usage
sts_sparse_linear_regression(
design_matrix,
weights_prior_scale = 0.1,
weights_batch_shape = NULL,
name = NULL
)
Arguments
design_matrix |
float |
weights_prior_scale |
float |
weights_batch_shape |
if |
name |
the name of this model component. Default value: 'LinearRegression'. |
Details
observed_time_series <- tf$matmul(design_matrix, weights)
This is identical to sts_linear_regression
, except that
sts_sparse_linear_regression
uses a parameterization of a Horseshoe
prior to encode the assumption that many of the weights
are zero,
i.e., many of the covariate time series are irrelevant. See the mathematical
details section below for further discussion. The prior parameterization used
by sts_sparse_linear_regression
is more suitable for inference than that
obtained by simply passing the equivalent tfd_horseshoe
prior to
sts_linear_regression
; when sparsity is desired, sts_sparse_linear_regression
will
likely yield better results.
This component does not itself include observation noise; it defines a
deterministic distribution with mass at the point
tf$matmul(design_matrix, weights)
. In practice, it should be combined with
observation noise from another component such as sts_sum
.
Mathematical Details
The basic horseshoe prior Carvalho et al. (2009) is defined as a Cauchy-normal scale mixture:
scales[i] ~ HalfCauchy(loc=0, scale=1) weights[i] ~ Normal(loc=0., scale=scales[i] * global_scale)`
The Cauchy scale parameters puts substantial mass near zero, encouraging
weights to be sparse, but their heavy tails allow weights far from zero to be
estimated without excessive shrinkage. The horseshoe can be thought of as a
continuous relaxation of a traditional 'spike-and-slab' discrete sparsity
prior, in which the latent Cauchy scale mixes between 'spike'
(scales[i] ~= 0
) and 'slab' (scales[i] >> 0
) regimes.
Following the recommendations in Piironen et al. (2017), SparseLinearRegression
implements
a horseshoe with the following adaptations:
The Cauchy prior on
scales[i]
is represented as an InverseGamma-Normal compound.The
global_scale
parameter is integrated out following aCauchy(0., scale=weights_prior_scale)
hyperprior, which is also represented as an InverseGamma-Normal compound.All compound distributions are implemented using a non-centered parameterization. The compound, non-centered representation defines the same marginal prior as the original horseshoe (up to integrating out the global scale), but allows samplers to mix more efficiently through the heavy tails; for variational inference, the compound representation implicity expands the representational power of the variational model.
Note that we do not yet implement the regularized ('Finnish') horseshoe, proposed in Piironen et al. (2017) for models with weak likelihoods, because the likelihood in STS models is typically Gaussian, where it's not clear that additional regularization is appropriate. If you need this functionality, please email tfprobability@tensorflow.org.
The full prior parameterization implemented in SparseLinearRegression
is
as follows:
Sample global_scale from Cauchy(0, scale=weights_prior_scale). global_scale_variance ~ InverseGamma(alpha=0.5, beta=0.5) global_scale_noncentered ~ HalfNormal(loc=0, scale=1) global_scale = (global_scale_noncentered * sqrt(global_scale_variance) * weights_prior_scale) Sample local_scales from Cauchy(0, 1). local_scale_variances[i] ~ InverseGamma(alpha=0.5, beta=0.5) local_scales_noncentered[i] ~ HalfNormal(loc=0, scale=1) local_scales[i] = local_scales_noncentered[i] * sqrt(local_scale_variances[i]) weights[i] ~ Normal(loc=0., scale=local_scales[i] * global_scale)
Value
an instance of StructuralTimeSeries
.
References
See Also
For usage examples see sts_fit_with_hmc()
, sts_forecast()
, sts_decompose_by_component()
.
Other sts:
sts_additive_state_space_model()
,
sts_autoregressive_state_space_model()
,
sts_autoregressive()
,
sts_constrained_seasonal_state_space_model()
,
sts_dynamic_linear_regression_state_space_model()
,
sts_dynamic_linear_regression()
,
sts_linear_regression()
,
sts_local_level_state_space_model()
,
sts_local_level()
,
sts_local_linear_trend_state_space_model()
,
sts_local_linear_trend()
,
sts_seasonal_state_space_model()
,
sts_seasonal()
,
sts_semi_local_linear_trend_state_space_model()
,
sts_semi_local_linear_trend()
,
sts_smooth_seasonal_state_space_model()
,
sts_smooth_seasonal()
,
sts_sum()