tfp.glm.ExponentialFamily

View source on GitHub

Class ExponentialFamily

Specifies a mean-value parameterized exponential family.

Subclasses implement exponential-family distribution properties (e.g., log_prob, variance) as a function of a real-value which is transformed via some link function to be interpreted as the distribution's mean. The distribution is parameterized by this mean, i.e., "mean-value parametrized."

Subclasses are typically used to specify a Generalized Linear Model (GLM). A GLM is a generalization of linear regression which enables efficient fitting of log-likelihood losses beyond just assuming Normal noise. See tfp.glm.fit for more details.

Subclasses must implement _call, _log_prob, and _is_canonical. In context of tfp.glm.fit, these functions are used to find the best fitting weights for given model matrix ("X") and responses ("Y").

__init__

View source

__init__(name=None)

Creates the ExponentialFamily.

Args:

  • name: Python str used as TF namescope for ops created by member functions. Default value: None (i.e., the subclass name).

Properties

is_canonical

Returns True when variance(r) == grad_mean(r) for all r.

name

Returns TF namescope prefixed to ops created by member functions.

Methods

__call__

View source

__call__(
    predicted_linear_response,
    name=None
)

Computes mean(r), var(mean), d/dr mean(r) for linear response, r.

Here mean and var are the mean and variance of the sufficient statistic, which may not be the same as the mean and variance of the random variable itself. If the distribution's density has the form

p_Y(y) = h(y) Exp[dot(theta, T(y)) - A]

where theta and A are constants and h and T are known functions, then mean and var are the mean and variance of T(Y). In practice, often T(Y) := Y and in that case the distinction doesn't matter.

Args:

  • predicted_linear_response: float-like Tensor corresponding to tf.matmul(model_matrix, weights).
  • name: Python str used as TF namescope for ops created by member functions. Default value: None (i.e., 'call').

Returns:

  • mean: Tensor with shape and dtype of predicted_linear_response representing the distribution prescribed mean, given the prescribed linear-response to mean mapping.
  • variance: Tensor with shape and dtype of predicted_linear_response representing the distribution prescribed variance, given the prescribed linear-response to mean mapping.
  • grad_mean: Tensor with shape and dtype of predicted_linear_response representing the gradient of the mean with respect to the linear-response and given the prescribed linear-response to mean mapping.

log_prob

View source

log_prob(
    response,
    predicted_linear_response,
    name=None
)

Computes D(param=mean(r)).log_prob(response) for linear response, r.

Args:

  • response: float-like Tensor representing observed ("actual") responses.
  • predicted_linear_response: float-like Tensor corresponding to tf.matmul(model_matrix, weights).
  • name: Python str used as TF namescope for ops created by member functions. Default value: None (i.e., 'log_prob').

Returns:

  • log_prob: Tensor with shape and dtype of predicted_linear_response representing the distribution prescribed log-probability of the observed responses.