class_docstr: Predefined generic distribution class to use for customization distribution.
  
  The class has four methods:
      - link: link function transforms the probability of response variable to a continuous scale that is unbounded
      - init: computes numerator and denominator of the initial value.
      - gradient: computes (Negative half) Gradient of deviance function at predicted value for an actual response
      - gamma: computes numerator and denominator of terminal node estimate
  
  For customization a loss function, the gradient and gamma methods are important.
  
  To customize a special type of problem we recommend you to inherit from predefined classes:
      - CustomDistributionGaussian - for regression problems
      - CustomDistributionBernoulli - for 2-class classification problems
      - CustomDistributionMultinomial - for n-class classification problems
docstr: (Negative half) Gradient of deviance function at predicted value f, for actual response y.
  Important fot customization of a loss function.
  
  :param y: actual response
  :param f: predicted response in link space including offset
  :return: gradient
docstr_tok: ["(","Negative","half",")","Gradient","of","deviance","function","at","predicted","value","f",",","for","actual","response","y",".","Important","fot","customization","of","a","loss","function",".",":","param","y",":","actual","response",":","param","f",":","predicted","response","in","link","space","including","offset",":","return",":","gradient"]
code: def gradient(self, y, f, l=None):
      """
      (Negative half) Gradient of deviance function at predicted value f, for actual response y.
      Important fot customization of a loss function.
  
      :param y: actual response
      :param f: predicted response in link space including offset
      :return: gradient
      """
      return 0
  
label_desc: Use image node_id 3 for calling the CustomDistributionGeneric obj's underlying member method code with example usage: obj.gradient(y, f, l) and returns: int