class_docstr: An implementation of `"BigClam" <http://infolab.stanford.edu/~crucis/pubs/paper-nmfagm.pdf>`_
  from the WSDM '13 paper "Overlapping Community Detection at Scale: A Non-negative Matrix
  Factorization Approach". The procedure uses gradient ascent to create an embedding which is
  used for deciding the node-cluster affiliations.
  
  Args:
      dimensions (int): Number of embedding dimensions. Default 8.
      iterations (int): Number of training iterations. Default 50.
      learning_rate (float): Gradient ascent learning rate. Default is 0.005.
      seed (int): Random seed value. Default is 42.
class_docstr_tok: ["An","implementation","of","`","``","BigClam","''","<","http",":","\/\/infolab.stanford.edu\/~crucis\/pubs\/paper-nmfagm.pdf",">","`","_","from","the","WSDM","'13","paper","``","Overlapping","Community","Detection","at","Scale",":","A","Non-negative","Matrix","Factorization","Approach","''",".","The","procedure","uses","gradient","ascent","to","create","an","embedding","which","is","used","for","deciding","the","node-cluster","affiliations",".","Args",":","dimensions","(","int",")",":","Number","of","embedding","dimensions",".","Default","8.","iterations","(","int",")",":","Number","of","training","iterations",".","Default","50.","learning_rate","(","float",")",":","Gradient","ascent","learning","rate",".","Default","is","0.005.","seed","(","int",")",":","Random","seed","value",".","Default","is","42","."]
docstr: Calculating the feature gradient.
  
  Arg types:
      * **node_feature** *(Numpy array)* - The node representation.
      * **neb_features** *(Numpy array)* - The representation of node neighbours.
docstr_tok: ["Calculating","the","feature","gradient",".","Arg","types",":","*","*","*","node_feature","*","*","*","(","Numpy","array",")","*","-","The","node","representation",".","*","*","*","neb_features","*","*","*","(","Numpy","array",")","*","-","The","representation","of","node","neighbours","."]
code: def _calculate_gradient(self, node_feature, neb_features):
      """
      Calculating the feature gradient.
  
      Arg types:
          * **node_feature** *(Numpy array)* - The node representation.
          * **neb_features** *(Numpy array)* - The representation of node neighbours.
      """
      raw_scores = node_feature.dot(neb_features.T)
      raw_scores = np.clip(raw_scores, -15, 15)
      scores = np.exp(-raw_scores) / (1 - np.exp(-raw_scores))
      scores = scores.reshape(-1, 1)
      neb_grad = np.sum(scores * neb_features, axis=0)
      without_grad = (
          self._global_features
          - node_feature
          - np.sum(neb_features, axis=0)
      )
      grad = neb_grad - without_grad
      return grad
  
file_path: karateclub/karateclub/community_detection/overlapping/bigclam.py
imports: import random
  import community
  import numpy
  import networkx
  from typing import Dict
  from karateclub.estimator import Estimator
label_desc: Use image node_id 3 for calling the BigClam obj's underlying member method code with example usage: obj._calculate_gradient(node_feature, neb_features) and returns: grad