Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Interpretml Interpret TweedieDevianceRegressionObjective

From Leeroopedia
Revision as of 15:18, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Interpretml_Interpret_TweedieDevianceRegressionObjective.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Knowledge Sources
Domains Machine_Learning, EBM_Core
Last Updated 2026-02-07 12:00 GMT

Overview

Implements the Tweedie deviance regression objective function for modeling data with combined discrete and continuous distributions, parameterized by variance power.

Description

The TweedieDevianceRegressionObjective.hpp defines the TweedieDevianceRegressionObjective struct, which implements Tweedie distribution deviance loss with a log link function. The Tweedie distribution is a family that includes Poisson (variance_power=1) and Gamma (variance_power=2) as special cases. This implementation currently supports variance_power strictly between 1.0 and 2.0, corresponding to compound Poisson-Gamma distributions. The loss function involves two exponential terms: exp((1-p)*score) and exp((2-p)*score), where p is the variance_power. The gradient uses FusedNegateMultiplyAdd for efficiency. Pre-computed member variables store derived constants: m_variancePowerParamSub1 (1-p), m_variancePowerParamSub2 (2-p), m_negInverseVariancePowerParamSub1 (-1/(1-p)), and m_inverseVariancePowerParamSub2 (1/(2-p)). FinishMetric multiplies by 2.0 for standard deviance scaling.

Usage

Used when the user specifies the "tweedie_deviance" objective with a variance_power parameter for modeling data that has a mix of exact zeros and positive continuous values, such as insurance claims data.

Code Reference

Source Location

  • Repository: Interpretml_Interpret
  • File: shared/libebm/compute/objectives/TweedieDevianceRegressionObjective.hpp

Signature

template<typename TFloat> struct TweedieDevianceRegressionObjective : RegressionObjective {
   OBJECTIVE_BOILERPLATE(TweedieDevianceRegressionObjective, MINIMIZE_METRIC,
       Objective_Other, Link_log, true)

   TFloat m_variancePowerParamSub1;
   TFloat m_variancePowerParamSub2;
   TFloat m_negInverseVariancePowerParamSub1;
   TFloat m_inverseVariancePowerParamSub2;

   inline TweedieDevianceRegressionObjective(const Config& config, double variancePower);
   inline bool CheckRegressionTarget(const double target) const noexcept;
   inline double FinishMetric(const double metricSum) const noexcept;  // 2.0 * metricSum

   GPU_DEVICE inline TFloat CalcMetric(const TFloat& score, const TFloat& target) const noexcept;
   GPU_DEVICE inline TFloat CalcGradient(const TFloat& score, const TFloat& target) const noexcept;
   GPU_DEVICE inline GradientHessian<TFloat> CalcGradientHessian(
       const TFloat& score, const TFloat& target) const noexcept;
};

I/O Contract

Parameter Constraint
variancePower Must be strictly between 1.0 and 2.0
target Must be non-negative, non-NaN, non-infinite
Method Formula
CalcGradient -target * exp((1-p)*score) + exp((2-p)*score)
CalcGradientHessian hessian = -(1-p)*target*exp((1-p)*score) + (2-p)*exp((2-p)*score)

Usage Examples

# Called internally via native bindings
from interpret.glassbox import ExplainableBoostingRegressor
ebm = ExplainableBoostingRegressor(objective="tweedie_deviance")
ebm.fit(X, y)  # Uses TweedieDevianceRegressionObjective for mixed distributions

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment