class_docstr: A class that implements parametric inference for Hawkes processes
  with parametrisation of the kernels as sum of Gaussian basis functions
  and a mix of Lasso and group-lasso regularization
  
  Hawkes processes are point processes defined by the intensity:
  
  .. math::
      \forall i \in [1 \dots D], \quad
      \lambda_i(t) = \mu_i + \sum_{j=1}^D
      \sum_{t_k^j < t} \phi_{ij}(t - t_k^j)
  
  where
  
  * :math:`D` is the number of nodes
  * :math:`\mu_i` are the baseline intensities
  * :math:`\phi_{ij}` are the kernels
  * :math:`t_k^j` are the timestamps of all events of node :math:`j`
  
  and with an parametrisation of the kernels as sum of Gaussian basis 
  functions
  
  .. math::
      \phi_{ij}(t) = \sum_{m=1}^M \alpha^{ij}_m f (t - t_m), \quad
      f(t) = (2 \pi \sigma^2)^{-1} \exp(- t^2 / (2 \sigma^2))
  
  In our implementation we denote:
  
  * Integer :math:`D` by the attribute `n_nodes`
  * Vector :math:`\mu \in \mathbb{R}^{D}` by the attribute
    `baseline`
  * Vector :math:`(t_m) \in \mathbb{R}^{M}` by the variable
    `means_gaussians`
  * Number :math:`\sigma` by the variable `std_gaussian`
  * Tensor 
    :math:`A = (\alpha^{ij}_m)_{ijm} \in \mathbb{R}^{D \times D \times M}`
    by the attribute `amplitudes`
  
  Parameters
  ----------
  max_mean_gaussian : `float`
      The mean of the last Gaussian basis function. This can be considered
      a proxy of the kernel support.
  
  n_gaussians : `int`
      The number of Gaussian basis functions used to approximate each kernel.
  
  step_size : `float`
      The step-size used in the optimization for the EM algorithm.
  
  C : `float`, default=1e3
      Level of penalization
  
  lasso_grouplasso_ratio : `float`, default=0.5
      Ratio of Lasso-Nuclear regularization mixing parameter with
      0 <= ratio <= 1.
  
      * For ratio = 0 this is Group-Lasso regularization
      * For ratio = 1 this is lasso (L1) regularization
      * For 0 < ratio < 1, the regularization is a linear combination
        of Lasso and Group-Lasso.
  
  max_iter : `int`, default=50
      Maximum number of iterations of the solving algorithm
  
  tol : `float`, default=1e-5
      The tolerance of the solving algorithm (iterations stop when the
      stopping criterion is below it). If not reached it does ``max_iter``
      iterations
  
  n_threads : `int`, default=1
      Number of threads used for parallel computation.
  
  verbose : `bool`, default=False
      If `True`, we verbose things
  
      * if `int <= 0`: the number of physical cores available on the CPU
      * otherwise the desired number of threads
  
  print_every : `int`, default=10
      Print history information when ``n_iter`` (iteration number) is
      a multiple of ``print_every``
  
  record_every : `int`, default=10
      Record history information when ``n_iter`` (iteration number) is
      a multiple of ``record_every``
  
  Other Parameters
  ----------------
  approx : `int`, default=0 (read-only)
      Level of approximation used for computing exponential functions
  
      * if 0: no approximation
      * if 1: a fast approximated exponential function is used
  
  em_max_iter : `int`, default=30
      Maximum number of loop for inner em algorithm.
  
  em_tol : `float`, default=None
      Tolerance of loop for inner em algorithm. If relative difference of
      baseline and adjacency goes bellow this tolerance, em inner loop
      will stop.
      If None, it will be set given a heuristic which look at last
  
  Attributes
  ----------
  n_nodes : `int`
      Number of nodes / components in the Hawkes model
      
  baseline : `np.array`, shape=(n_nodes,)
      Inferred baseline of each component's intensity
  
  amplitudes : `np.ndarray`, shape=(n_nodes, n_nodes, n_gaussians)
      Inferred adjacency matrix
      
  means_gaussians : `np.array`, shape=(n_gaussians,)
      The means of the Gaussian basis functions.
  
  std_gaussian : `float`
      The standard deviation of each Gaussian basis function.
  
  References
  ----------
  Xu, Farajtabar, and Zha (2016, June) in ICML,
  `Learning Granger Causality for Hawkes Processes`_.
  
  .. _Learning Granger Causality for Hawkes Processes: http://jmlr.org/proceedings/papers/v48/xuc16.pdf
class_docstr_tok: ["A","class","that","implements","parametric","inference","for","Hawkes","processes","with","parametrisation","of","the","kernels","as","sum","of","Gaussian","basis","functions","and","a","mix","of","Lasso","and","group-lasso","regularization","Hawkes","processes","are","point","processes","defined","by","the","intensity",":","..","math",":",":","\\forall","i","\\in","[","1","\\dots","D","]",",","\\quad","\\lambda_i","(","t",")","=","\\mu_i","+","\\sum_","{","j=1","}","^D","\\sum_","{","t_k^j","<","t","}","\\phi_","{","ij","}","(","t","-","t_k^j",")","where","*",":","math",":","`","D","`","is","the","number","of","nodes","*",":","math",":","`","\\mu_i","`","are","the","baseline","intensities","*",":","math",":","`","\\phi_","{","ij","}","`","are","the","kernels","*",":","math",":","`","t_k^j","`","are","the","timestamps","of","all","events","of","node",":","math",":","`","j","`","and","with","an","parametrisation","of","the","kernels","as","sum","of","Gaussian","basis","functions","..","math",":",":","\\phi_","{","ij","}","(","t",")","=","\\sum_","{","m=1","}","^M","\\alpha^","{","ij","}","_m","f","(","t","-","t_m",")",",","\\quad","f","(","t",")","=","(","2","\\pi","\\sigma^2",")","^","{","-1","}","\\exp","(","-","t^2","\/","(","2","\\sigma^2",")",")","In","our","implementation","we","denote",":","*","Integer",":","math",":","`","D","`","by","the","attribute","`","n_nodes","`","*","Vector",":","math",":","`","\\mu","\\in","\\mathbb","{","R","}","^","{","D","}","`","by","the","attribute","`","baseline","`","*","Vector",":","math",":","`","(","t_m",")","\\in","\\mathbb","{","R","}","^","{","M","}","`","by","the","variable","`","means_gaussians","`","*","Number",":","math",":","`","\\sigma","`","by","the","variable","`","std_gaussian","`","*","Tensor",":","math",":","`","A","=","(","\\alpha^","{","ij","}","_m",")","_","{","ijm","}","\\in","\\mathbb","{","R","}","^","{","D","\\times","D","\\times","M","}","`","by","the","attribute","`","amplitudes","`","Parameters","--","--","--","--","--","max_mean_gaussian",":","`","float","`","The","mean","of","the","last","Gaussian","basis","function",".","This","can","be","considered","a","proxy","of","the","kernel","support",".","n_gaussians",":","`","int","`","The","number","of","Gaussian","basis","functions","used","to","approximate","each","kernel",".","step_size",":","`","float","`","The","step-size","used","in","the","optimization","for","the","EM","algorithm",".","C",":","`","float","`",",","default=1e3","Level","of","penalization","lasso_grouplasso_ratio",":","`","float","`",",","default=0.5","Ratio","of","Lasso-Nuclear","regularization","mixing","parameter","with","0","<","=","ratio","<","=","1",".","*","For","ratio","=","0","this","is","Group-Lasso","regularization","*","For","ratio","=","1","this","is","lasso","(","L1",")","regularization","*","For","0","<","ratio","<","1",",","the","regularization","is","a","linear","combination","of","Lasso","and","Group-Lasso",".","max_iter",":","`","int","`",",","default=50","Maximum","number","of","iterations","of","the","solving","algorithm","tol",":","`","float","`",",","default=1e-5","The","tolerance","of","the","solving","algorithm","(","iterations","stop","when","the","stopping","criterion","is","below","it",")",".","If","not","reached","it","does","``","max_iter","``","iterations","n_threads",":","`","int","`",",","default=1","Number","of","threads","used","for","parallel","computation",".","verbose",":","`","bool","`",",","default=False","If","`","True","`",",","we","verbose","things","*","if","`","int","<","=","0","`",":","the","number","of","physical","cores","available","on","the","CPU","*","otherwise","the","desired","number","of","threads","print_every",":","`","int","`",",","default=10","Print","history","information","when","``","n_iter","``","(","iteration","number",")","is","a","multiple","of","``","print_every","``","record_every",":","`","int","`",",","default=10","Record","history","information","when","``","n_iter","``","(","iteration","number",")","is","a","multiple","of","``","record_every","``","Other","Parameters","--","--","--","--","--","--","--","--","approx",":","`","int","`",",","default=0","(","read-only",")","Level","of","approximation","used","for","computing","exponential","functions","*","if","0",":","no","approximation","*","if","1",":","a","fast","approximated","exponential","function","is","used","em_max_iter",":","`","int","`",",","default=30","Maximum","number","of","loop","for","inner","em","algorithm",".","em_tol",":","`","float","`",",","default=None","Tolerance","of","loop","for","inner","em","algorithm",".","If","relative","difference","of","baseline","and","adjacency","goes","bellow","this","tolerance",",","em","inner","loop","will","stop",".","If","None",",","it","will","be","set","given","a","heuristic","which","look","at","last","Attributes","--","--","--","--","--","n_nodes",":","`","int","`","Number","of","nodes","\/","components","in","the","Hawkes","model","baseline",":","`","np.array","`",",","shape=","(","n_nodes",",",")","Inferred","baseline","of","each","component","'s","intensity","amplitudes",":","`","np.ndarray","`",",","shape=","(","n_nodes",",","n_nodes",",","n_gaussians",")","Inferred","adjacency","matrix","means_gaussians",":","`","np.array","`",",","shape=","(","n_gaussians",",",")","The","means","of","the","Gaussian","basis","functions",".","std_gaussian",":","`","float","`","The","standard","deviation","of","each","Gaussian","basis","function",".","References","--","--","--","--","--","Xu",",","Farajtabar",",","and","Zha","(","2016",",","June",")","in","ICML",",","`","Learning","Granger","Causality","for","Hawkes","Processes","`","_",".","..","_Learning","Granger","Causality","for","Hawkes","Processes",":","http",":","\/\/jmlr.org\/proceedings\/papers\/v48\/xuc16.pdf"]
code: def __init__(
      self,
      max_mean_gaussian,
      n_gaussians=5,
      step_size=1e-7,
      C=1e3,
      lasso_grouplasso_ratio=0.5,
      max_iter=50,
      tol=1e-5,
      n_threads=1,
      verbose=False,
      print_every=10,
      record_every=10,
      approx=0,
      em_max_iter=30,
      em_tol=None,
  ):
      LearnerHawkesNoParam.__init__(
          self,
          verbose=verbose,
          max_iter=max_iter,
          print_every=print_every,
          tol=tol,
          n_threads=n_threads,
          record_every=record_every,
      )
      self.baseline = None
      self.amplitudes = None
  
      self.n_gaussians = n_gaussians
      self.max_mean_gaussian = max_mean_gaussian
      self.step_size = step_size
  
      strength_lasso = lasso_grouplasso_ratio / C
      strength_grouplasso = (1.0 - lasso_grouplasso_ratio) / C
  
      self.em_max_iter = em_max_iter
      self.em_tol = em_tol
  
      self._learner = _HawkesSumGaussians(
          n_gaussians,
          max_mean_gaussian,
          step_size,
          strength_lasso,
          strength_grouplasso,
          em_max_iter,
          n_threads,
          approx,
      )
  
      self.verbose = verbose
  
      self.history.print_order += ["rel_baseline", "rel_amplitudes"]
  
imports: import math
  import numpy
  from scipy.stats import norm
  from tick.hawkes.inference.base import LearnerHawkesNoParam
  from tick.hawkes.inference.build.hawkes_inference import HawkesSumGaussians
  from tick.solver.base.utils import relative_distance
label_desc: Use image node_id 1 to create a new HawkesSumGaussians object from inherited base classes: LearnerHawkesNoParam with example: obj = HawkesSumGaussians(max_mean_gaussian, n_gaussians, step_size, C, lasso_grouplasso_ratio, max_iter, tol, n_threads, verbose, print_every, record_every, approx, em_max_iter, em_tol)