class_docstr: Alternating Least Squares
  
  A Recommendation Model based off the algorithms described in the paper 'Collaborative
  Filtering for Implicit Feedback Datasets' with performance optimizations described in
  'Applications of the Conjugate Gradient Method for Implicit Feedback Collaborative
  Filtering.'
  
  Parameters
  ----------
  factors : int, optional
      The number of latent factors to compute
  regularization : float, optional
      The regularization factor to use
  alpha : float, optional
      The weight to give to positive examples.
  dtype : data-type, optional
      Specifies whether to use 16 bit or 32 bit floating point factors
  iterations : int, optional
      The number of ALS iterations to use when fitting data
  calculate_training_loss : bool, optional
      Whether to log out the training loss at each iteration
  random_state : int, RandomState or None, optional
      The random state for seeding the initial item and user factors.
      Default is None.
  
  Attributes
  ----------
  item_factors : ndarray
      Array of latent factors for each item in the training set
  user_factors : ndarray
      Array of latent factors for each user in the training set
code: def solver(self):
      if self._solver is None:
          self._solver = implicit.gpu.LeastSquaresSolver()
      return self._solver
  
imports: import logging
  import time
  import numpy
  from tqdm.auto import tqdm
  import implicit.gpu
  from implicit.gpu.matrix_factorization_base import MatrixFactorizationBase, check_random_state
  from implicit.utils import check_csr
label_desc: Use image node_id 7 for calling the AlternatingLeastSquares obj's underlying member method code with example usage: obj.solver() and returns: self