EmpiricalMinCost#

class empulse.metrics.EmpiricalMinCost[source]#

Strategy for the Empirical Minimum Cost metric.

The cost phrasing of EmpiricalMaxProfit: it walks the same ranking and reports the value at the same optimal cutoff negated, as a cost to minimize rather than a profit to maximize. Which of the two you use is a presentation choice – models train identically on either, because they optimize _loss, which removes the sign difference.

See also

EmpiricalMaxProfit : The profit phrasing of the same metric.

build(tp_benefit, tn_benefit, fp_cost, fn_cost)#

Build the metric strategy.

property capabilities#

The set of Capability members this strategy supports.

Combines _capabilities with whatever optimal_threshold, optimal_rate, logit_objective, gradient_boost_objective and prepare_boost_objective this strategy overrides – see _capabilities_from_overrides. A caller should use this instead of isinstance(strategy, SomeConcreteStrategy) or calling a method and catching NotImplementedError.

gradient_boost_objective(y_true, y_score, **parameters)#

Compute the gradient of the metric with respect to gradient boosting instances.

Parameters:
y_truearray-like of shape (n_samples,)

The ground truth labels.

y_scorearray-like of shape (n_samples,)

The predicted labels, probabilities, or decision scores (based on the chosen metric).

**parametersfloat or array-like of shape (n_samples,)

The parameter values for the costs and benefits defined in the metric. If any parameter is a stochastic variable, you should pass values for their distribution parameters. You can set the parameter values for either the symbol names or their aliases.

  • If float, the same value is used for all samples (class-dependent).

  • If array-like, the values are used for each sample (instance-dependent).

Returns:
gradientNDArray of shape (n_samples,)

The gradient of the metric loss with respect to the gradient boosting weights.

hessianNDArray of shape (n_samples,)

The hessian of the metric loss with respect to the gradient boosting weights.

logit_objective(features, y_true, C, l1_ratio, fit_intercept, **parameters)#

Compute the logit loss and its gradient with respect to the logistic regression weights.

Parameters:
featuresNDArray of shape (n_samples, n_features)

The features of the samples.

y_trueNDArray of shape (n_samples,)

The ground truth labels.

Cfloat

Regularization strength parameter. Smaller values specify stronger regularization.

l1_ratiofloat

The Elastic-Net mixing parameter, with range 0 <= l1_ratio <= 1. l1_ratio=0 corresponds to L2 penalty, l1_ratio=1 to L1 penalty.

fit_interceptbool

Specifies if an intercept should be included in the model.

**parametersfloat or NDArray of shape (n_samples,)

The parameter values for the costs and benefits defined in the metric. If any parameter is a stochastic variable, you should pass values for their distribution parameters. You can set the parameter values for either the symbol names or their aliases.

  • If float, the same value is used for all samples (class-dependent).

  • If array-like, the values are used for each sample (instance-dependent).

Returns:
logistic_objectiveLogitObjective

A class that implements the logit loss and its gradient.

optimal_rate(y_true, y_score, **parameters)#

Compute the fraction of samples that should be targeted (predicted positive) to maximize profit.

Parameters:
y_truearray-like of shape (n_samples,)

The ground truth labels.

y_scorearray-like of shape (n_samples,)

The predicted labels, probabilities, or decision scores used to rank the samples.

**parametersfloat or array-like of shape (n_samples,)

The parameter values for the costs and benefits defined in the metric.

  • If float, the same value is used for all samples (class-dependent).

  • If array-like, the values are used for each sample (instance-dependent).

Returns:
optimal_ratefloat

The optimal predicted positive rate.

optimal_threshold(y_true, y_score, **parameters)#

Compute the score threshold above which a sample should be targeted to maximize profit.

Parameters:
y_truearray-like of shape (n_samples,)

The ground truth labels.

y_scorearray-like of shape (n_samples,)

The predicted labels, probabilities, or decision scores used to rank the samples.

**parametersfloat or array-like of shape (n_samples,)

The parameter values for the costs and benefits defined in the metric.

  • If float, the same value is used for all samples (class-dependent).

  • If array-like, the values are used for each sample (instance-dependent).

Returns:
optimal_thresholdfloat

The optimal classification threshold.

prepare_boost_objective(y_true, **parameters)#

Compute the gradient’s constant term of the metric wrt gradient boost.

Parameters:
y_trueNDArray of shape (n_samples,)

The ground truth labels.

**parametersfloat or NDArray of shape (n_samples,)

The parameter values for the costs and benefits defined in the metric. If any parameter is a stochastic variable, you should pass values for their distribution parameters. You can set the parameter values for either the symbol names or their aliases.

  • If float, the same value is used for all samples (class-dependent).

  • If array-like, the values are used for each sample (instance-dependent).

Returns:
gradient_constNDArray of shape (n_samples, n_features)

The constant term of the gradient.

property requires_dynamic_boost_objective#

Whether gradients must be recomputed from the metric each boosting round.

Deprecated since version Use: Capability.PRECOMPUTED_BOOST_OBJECTIVE not in strategy.capabilities instead.

True for strategies whose per-sample loss is not linear in the predicted probability (e.g. LogCost) or that need the current round’s scores to locate a threshold (e.g. MaxProfit); such strategies cannot use the precomputed constant returned by prepare_boost_objective.

score(y_true, y_score, **parameters)[source]#

Compute the empirical minimum cost score.

Parameters:
y_truearray-like of shape (n_samples,)

The ground truth labels.

y_scorearray-like of shape (n_samples,)

The predicted labels, probabilities, or decision scores (based on the chosen metric).

**parametersfloat or array-like of shape (n_samples,)

The parameter values for the costs and benefits defined in the metric. If any parameter is a stochastic variable, you should pass values for their distribution parameters. You can set the parameter values for either the symbol names or their aliases.

  • If float, the same value is used for all samples (class-dependent).

  • If array-like, the values are used for each sample (instance-dependent).

Returns:
scorefloat

The empirical minimum cost score.

to_latex(tp_benefit, tn_benefit, fp_cost, fn_cost)[source]#

Return the LaTeX representation of the metric.