fadin.solver.FaDIn¶
- class fadin.solver.FaDIn(n_dim, kernel, init='random', optim_mask=None, kernel_length=1, delta=0.01, optim='RMSprop', params_optim={}, max_iter=2000, ztzG_approx=True, log=False, grad_kernel=None, tol=0.0001, random_state=None)¶
Define the FaDIn framework for estimated Hawkes processes.
The framework is detailed in:
Guillaume Staerman, Cédric Allain, Alexandre Gramfort, Thomas Moreau FaDIn: Fast Discretized Inference for Hawkes Processes with General Parametric Kernels https://arxiv.org/abs/2210.04635
FaDIn minimizes the discretized L2 loss of Hawkes processes defined by the intensity as a convolution between the kernel \(\phi_{ij}\) and the sum of Dirac functions \(z_i := \sum_{t^i_n \in \mathscr{F}^i_T} \delta_{t^i_n}\) located at the event occurrences \(t^i_n\):
\[\forall i \in [1 \dots p], \quad \lambda_i(t) = \mu_i + \sum_{j=1}^p \phi_{ij} * z_j(t), \quad t \in [0, T]\]where
\(p\) is the dimension of the process
\(\mu_i\) are the baseline intensities
\(\phi_{ij}\) are the kernels
\(z_j(t)\) are the activation vector on the discretized grid.
- Parameters:
- n_dimint
Dimension of the underlying Hawkes process.
- kernelstr or callable
Either define a kernel in
{'raised_cosine' | 'truncated_gaussian' | 'truncated_exponential'}
or a custom kernel.- init: `str` or `dict`, default=’random’
Initialization strategy of the parameters of the Hawkes process. If set to ‘random’, the parameters are initialized randomly. If set to ‘moment_matching_max’, the parameters are initialized using the moment matching method with max mode. If set to ‘moment_matching_mean’, the parameters are initialized using the moment matching method with mean mode. Otherwise, the parameters are initialized using the given dictionary, , which must contain the following keys: - ‘baseline’: tensor, shape (n_dim,): Initial baseline - ‘alpha’: tensor, shape (n_dim, n_dim): Initial alpha - ‘kernel’: list of tensors of shape (n_dim, n_dim):
Initial kernel parameters.
- optim_mask: `dict` of `tensor` or `None`, default=`None`.
Dictionary containing the masks for the optimization of the parameters of the Hawkes process. If set to None, all parameters are optimized. The dictionary must contain the following keys: - ‘baseline’: tensor of shape (n_dim,), or None.
Tensor of same shape as the baseline vector, with values in (0, 1). baseline coordinates where then tensor is equal to 0 will not be optimized. If set to None, all coordinates of baseline will be optimized.
- ‘alpha’: tensor of shape (n_dim, n_dim), or None.
Tensor of same shape as the alpha tensor, with values in (0, 1). alpha coordinates and kernel parameters where alpha_mask = 0 will not be optimized. If set to None, all coordinates of alpha and kernel parameters will be optimized.
- kernel_lengthfloat, default=1.
Length of kernels in the Hawkes process.
- deltafloat, default=0.01
Step size of the discretization grid.
- optimstr in
{'RMSprop' | 'Adam' | 'GD'}
, default=’RMSprop’ The algorithms used to optimize the Hawkes processes parameters.
- step_sizefloat, default=1e-3
Learning rate of the chosen optimization algorithm.
- max_iterint, default=1000
Maximum number of iterations during fit.
- ztzG_approxboolean, default=True
If ztzG_approx is false, compute the true ztzG precomputation constant that is the computational bottleneck of FaDIn. if ztzG_approx is true, ztzG is approximated with Toeplitz matrix not taking into account edge effects.
- logboolean, default=False
Record the loss values during the optimization.
- grad_kernelNone or callable, default=None
If kernel in
{'raised_cosine'| 'truncated_gaussian' | 'truncated_exponential'}
the gradient function is implemented. If kernel is custom, the custom gradient must be given.- tolfloat, default=1e-5
The tolerance of the solver (iterations stop when the stopping criterion is below it). If not reached the solver does ‘max_iter’ iterations.
- random_stateint, RandomState instance or None, default=None
Set the torch seed to ‘random_state’.
- Attributes:
- param_baselinetensor, shape (n_dim)
Baseline parameter of the Hawkes process.
- param_alphatensor, shape (n_dim, n_dim)
Weight parameter of the Hawkes process.
- param_kernellist of tensor
list containing tensor array of kernels parameters. The size of the list varies depending the number of parameters. The shape of each tensor is (n_dim, n_dim).
- v_losstensor, shape (n_iter)
If log=True, compute the loss accross iterations. If no early stopping, n_iter is equal to max_iter.
Methods
compute_gradient
(solver, events_grid, ...)Updates gradients for optimizer iteration of FaDIn solver, with l2 loss and precomputations.
fit
(events, end_time)Learn the parameters of the Hawkes processes on a discrete grid.
- __init__(n_dim, kernel, init='random', optim_mask=None, kernel_length=1, delta=0.01, optim='RMSprop', params_optim={}, max_iter=2000, ztzG_approx=True, log=False, grad_kernel=None, tol=0.0001, random_state=None)¶
Methods
__init__
(n_dim, kernel[, init, optim_mask, ...])compute_gradient
(solver, events_grid, ...)Updates gradients for optimizer iteration of FaDIn solver, with l2 loss and precomputations.
fit
(events, end_time)Learn the parameters of the Hawkes processes on a discrete grid.
Attributes
precomputations