class_docstr: Higher-Order Factorization Machine for regression.
  
  The model equation is defined as:
  
  $$\hat{y}(x) = w_{0} + \sum_{j=1}^{p} w_{j} x_{j}  + \sum_{l=2}^{d} \sum_{j_1=1}^{p} \cdots \sum_{j_l=j_{l-1}+1}^{p} \left(\prod_{j'=1}^{l} x_{j_{j'}} \right) \left(\sum_{f=1}^{k_l} \prod_{j'=1}^{l} v_{j_{j'}, f}^{(l)} \right)$$
  
  For more efficiency, this model automatically one-hot encodes strings features considering
  them as categorical variables.
  
  Parameters
  ----------
  degree
      Polynomial degree or model order.
  n_factors
      Dimensionality of the factorization or number of latent factors.
  weight_optimizer
      The sequential optimizer used for updating the feature weights. Note thatthe intercept is
      handled separately.
  latent_optimizer
      The sequential optimizer used for updating the latent factors.
  int_weight_optimizer
      The sequential optimizer used for updating the field pairs interaction weights.
  loss
      The loss function to optimize for.
  sample_normalization
      Whether to divide each element of `x` by `x`'s L2-norm.
  l1_weight
      Amount of L1 regularization used to push weights towards 0.
  l2_weight
      Amount of L2 regularization used to push weights towards 0.
  l1_latent
      Amount of L1 regularization used to push latent weights towards 0.
  l2_latent
      Amount of L2 regularization used to push latent weights towards 0.
  intercept
      Initial intercept value.
  intercept_lr
      Learning rate scheduler used for updating the intercept. An instance of
      `optim.schedulers.Constant` is used if a `float` is passed. No intercept will be used
      if this is set to 0.
  weight_initializer
      Weights initialization scheme. Defaults to `optim.initializers.Zeros()`.
  latent_initializer
      Latent factors initialization scheme. Defaults to
      `optim.initializers.Normal(mu=.0, sigma=.1, random_state=self.random_state)`.
  clip_gradient
      Clips the absolute value of each gradient value.
  seed
      Randomization seed used for reproducibility.
  
  Attributes
  ----------
  weights
      The current weights assigned to the features.
  latents
      The current latent weights assigned to the features.
  
  Examples
  --------
  
  >>> from river import facto
  
  >>> dataset = (
  ...     ({'user': 'Alice', 'item': 'Superman', 'time': .12}, 8),
  ...     ({'user': 'Alice', 'item': 'Terminator', 'time': .13}, 9),
  ...     ({'user': 'Alice', 'item': 'Star Wars', 'time': .14}, 8),
  ...     ({'user': 'Alice', 'item': 'Notting Hill', 'time': .15}, 2),
  ...     ({'user': 'Alice', 'item': 'Harry Potter ', 'time': .16}, 5),
  ...     ({'user': 'Bob', 'item': 'Superman', 'time': .13}, 8),
  ...     ({'user': 'Bob', 'item': 'Terminator', 'time': .12}, 9),
  ...     ({'user': 'Bob', 'item': 'Star Wars', 'time': .16}, 8),
  ...     ({'user': 'Bob', 'item': 'Notting Hill', 'time': .10}, 2)
  ... )
  
  >>> model = facto.HOFMRegressor(
  ...     degree=3,
  ...     n_factors=10,
  ...     intercept=5,
  ...     seed=42,
  ... )
  
  >>> for x, y in dataset:
  ...     model.learn_one(x, y)
  
  >>> model.predict_one({'user': 'Bob', 'item': 'Harry Potter', 'time': .14})
  5.311745
  
  >>> report = model.debug_one({'user': 'Bob', 'item': 'Harry Potter', 'time': .14})
  
  >>> print(report)
  Name                                  Value      Weight     Contribution
                            Intercept    1.00000    5.23495        5.23495
                             user_Bob    1.00000    0.11436        0.11436
                                 time    0.14000    0.03185        0.00446
                      user_Bob - time    0.14000    0.00884        0.00124
  user_Bob - item_Harry Potter - time    0.14000    0.00117        0.00016
                    item_Harry Potter    1.00000    0.00000        0.00000
             item_Harry Potter - time    0.14000   -0.00695       -0.00097
         user_Bob - item_Harry Potter    1.00000   -0.04246       -0.04246
  
  References
  ----------
  [^1]: [Rendle, S., 2010, December. Factorization machines. In 2010 IEEE International Conference on Data Mining (pp. 995-1000). IEEE.](https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf)
class_docstr_tok: ["Higher-Order","Factorization","Machine","for","regression",".","The","model","equation","is","defined","as",":","$","$","\\hat","{","y","}","(","x",")","=","w_","{","0","}","+","\\sum_","{","j=1","}","^","{","p","}","w_","{","j","}","x_","{","j","}","+","\\sum_","{","l=2","}","^","{","d","}","\\sum_","{","j_1=1","}","^","{","p","}","\\cdots","\\sum_","{","j_l=j_","{","l-1","}","+1","}","^","{","p","}","\\left","(","\\prod_","{","j'=1","}","^","{","l","}","x_","{","j_","{","j","'","}","}","\\right",")","\\left","(","\\sum_","{","f=1","}","^","{","k_l","}","\\prod_","{","j'=1","}","^","{","l","}","v_","{","j_","{","j","'","}",",","f","}","^","{","(","l",")","}","\\right",")","$","$","For","more","efficiency",",","this","model","automatically","one-hot","encodes","strings","features","considering","them","as","categorical","variables",".","Parameters","--","--","--","--","--","degree","Polynomial","degree","or","model","order",".","n_factors","Dimensionality","of","the","factorization","or","number","of","latent","factors",".","weight_optimizer","The","sequential","optimizer","used","for","updating","the","feature","weights",".","Note","thatthe","intercept","is","handled","separately",".","latent_optimizer","The","sequential","optimizer","used","for","updating","the","latent","factors",".","int_weight_optimizer","The","sequential","optimizer","used","for","updating","the","field","pairs","interaction","weights",".","loss","The","loss","function","to","optimize","for",".","sample_normalization","Whether","to","divide","each","element","of","`","x","`","by","`","x","`","'s","L2-norm",".","l1_weight","Amount","of","L1","regularization","used","to","push","weights","towards","0.","l2_weight","Amount","of","L2","regularization","used","to","push","weights","towards","0.","l1_latent","Amount","of","L1","regularization","used","to","push","latent","weights","towards","0.","l2_latent","Amount","of","L2","regularization","used","to","push","latent","weights","towards","0.","intercept","Initial","intercept","value",".","intercept_lr","Learning","rate","scheduler","used","for","updating","the","intercept",".","An","instance","of","`","optim.schedulers.Constant","`","is","used","if","a","`","float","`","is","passed",".","No","intercept","will","be","used","if","this","is","set","to","0.","weight_initializer","Weights","initialization","scheme",".","Defaults","to","`","optim.initializers.Zeros","(",")","`",".","latent_initializer","Latent","factors","initialization","scheme",".","Defaults","to","`","optim.initializers.Normal","(","mu=.0",",","sigma=.1",",","random_state=self.random_state",")","`",".","clip_gradient","Clips","the","absolute","value","of","each","gradient","value",".","seed","Randomization","seed","used","for","reproducibility",".","Attributes","--","--","--","--","--","weights","The","current","weights","assigned","to","the","features",".","latents","The","current","latent","weights","assigned","to","the","features",".","Examples","--","--","--","--",">",">",">","from","river","import","facto",">",">",">","dataset","=","(","...","(","{","'user","'",":","'Alice","'",",","'item","'",":","'Superman","'",",","'time","'",":",".12","}",",","8",")",",","...","(","{","'user","'",":","'Alice","'",",","'item","'",":","'Terminator","'",",","'time","'",":",".13","}",",","9",")",",","...","(","{","'user","'",":","'Alice","'",",","'item","'",":","'Star","Wars","'",",","'time","'",":",".14","}",",","8",")",",","...","(","{","'user","'",":","'Alice","'",",","'item","'",":","'Notting","Hill","'",",","'time","'",":",".15","}",",","2",")",",","...","(","{","'user","'",":","'Alice","'",",","'item","'",":","'Harry","Potter","'",",","'time","'",":",".16","}",",","5",")",",","...","(","{","'user","'",":","'Bob","'",",","'item","'",":","'Superman","'",",","'time","'",":",".13","}",",","8",")",",","...","(","{","'user","'",":","'Bob","'",",","'item","'",":","'Terminator","'",",","'time","'",":",".12","}",",","9",")",",","...","(","{","'user","'",":","'Bob","'",",","'item","'",":","'Star","Wars","'",",","'time","'",":",".16","}",",","8",")",",","...","(","{","'user","'",":","'Bob","'",",","'item","'",":","'Notting","Hill","'",",","'time","'",":",".10","}",",","2",")","...",")",">",">",">","model","=","facto.HOFMRegressor","(","...","degree=3",",","...","n_factors=10",",","...","intercept=5",",","...","seed=42",",","...",")",">",">",">","for","x",",","y","in","dataset",":","...","model.learn_one","(","x",",","y",")",">",">",">","model.predict_one","(","{","'user","'",":","'Bob","'",",","'item","'",":","'Harry","Potter","'",",","'time","'",":",".14","}",")","5.311745",">",">",">","report","=","model.debug_one","(","{","'user","'",":","'Bob","'",",","'item","'",":","'Harry","Potter","'",",","'time","'",":",".14","}",")",">",">",">","print","(","report",")","Name","Value","Weight","Contribution","Intercept","1.00000","5.23495","5.23495","user_Bob","1.00000","0.11436","0.11436","time","0.14000","0.03185","0.00446","user_Bob","-","time","0.14000","0.00884","0.00124","user_Bob","-","item_Harry","Potter","-","time","0.14000","0.00117","0.00016","item_Harry","Potter","1.00000","0.00000","0.00000","item_Harry","Potter","-","time","0.14000","-0.00695","-0.00097","user_Bob","-","item_Harry","Potter","1.00000","-0.04246","-0.04246","References","--","--","--","--","--","[","^1","]",":","[","Rendle",",","S.",",","2010",",","December",".","Factorization","machines",".","In","2010","IEEE","International","Conference","on","Data","Mining","(","pp",".","995-1000",")",".","IEEE",".","]","(","https",":","\/\/www.csie.ntu.edu.tw\/~b97053\/paper\/Rendle2010FM.pdf",")"]
code: def __init__(
      self,
      degree=3,
      n_factors=10,
      weight_optimizer: optim.base.Optimizer | None = None,
      latent_optimizer: optim.base.Optimizer | None = None,
      loss: optim.losses.RegressionLoss | None = None,
      sample_normalization=False,
      l1_weight=0.0,
      l2_weight=0.0,
      l1_latent=0.0,
      l2_latent=0.0,
      intercept=0.0,
      intercept_lr: optim.base.Scheduler | float = 0.01,
      weight_initializer: optim.initializers.Initializer | None = None,
      latent_initializer: optim.initializers.Initializer | None = None,
      clip_gradient=1e12,
      seed: int | None = None,
  ):
      super().__init__(
          degree=degree,
          n_factors=n_factors,
          weight_optimizer=weight_optimizer,
          latent_optimizer=latent_optimizer,
          loss=optim.losses.Squared() if loss is None else loss,
          sample_normalization=sample_normalization,
          l1_weight=l1_weight,
          l2_weight=l2_weight,
          l1_latent=l1_latent,
          l2_latent=l2_latent,
          intercept=intercept,
          intercept_lr=intercept_lr,
          weight_initializer=weight_initializer,
          latent_initializer=latent_initializer,
          clip_gradient=clip_gradient,
          seed=seed,
      )
  
imports: from __future__ import annotations
  import collections
  import functools
  import itertools
  import numpy
  from river import base, optim, utils
  from .base import BaseFM
label_desc: Use image node_id 1 to create a new HOFMRegressor object from inherited base classes: HOFM, base with example: obj = HOFMRegressor(degree, n_factors, weight_optimizer, latent_optimizer, loss, sample_normalization, l1_weight, l2_weight, l1_latent, l2_latent, intercept, intercept_lr, weight_initializer, latent_initializer, clip_gradient, seed)