class_docstr: LinUCB, disjoint variant.
  
  Although it works, as of yet it is too slow to realistically be used in practice.
  
  The way this works is that each arm is assigned a `linear_model.BayesianLinearRegression`
  instance. This instance is updated every time the arm is pulled. The context is used as
  features for the regression. The reward is used as the target. The posterior distribution
  is used to compute the upper confidence bound. The arm with the highest upper confidence
  bound is pulled.
  
  Parameters
  ----------
  alpha
      Parameter used in each Bayesian linear regression.
  beta
      Parameter used in each Bayesian linear regression.
  smoothing
      Parameter used in each Bayesian linear regression.
  reward_obj
      The reward object used to measure the performance of each arm.
  burn_in
      The number of time steps during which each arm is pulled once.
  seed
      Random number generator seed for reproducibility.
  
  References
  ----------
  [^1]: [A Contextual-Bandit Approach to Personalized News Article Recommendation](https://arxiv.org/abs/1003.0146)
  [^2:] [Contextual Bandits Analysis of LinUCB Disjoint Algorithm with Dataset](https://kfoofw.github.io/contextual-bandits-linear-ucb-disjoint/)
docstr: Rewrite update function
docstr_tok: ["Rewrite","update","function"]
code: def update(self, arm_id, context, *reward_args, **reward_kwargs):
      """Rewrite update function"""
      super().update(arm_id, None, *reward_args, **reward_kwargs)
      reward = reward_args[0]
      self._bayes_lin_regs[arm_id].learn_one(x=context, y=reward)
  
file_path: river/river/bandit/lin_ucb.py
imports: from __future__ import annotations
  import collections
  import functools
  import random
  from river import bandit, linear_model
label_desc: Use image node_id 3 for calling the LinUCBDisjoint obj's underlying member method code with example usage: obj.update(arm_id, context) without return types