mpa#

empulse.metrics.mpa(y_true, y_score, *, contribution=8000, contact_cost=50, sales_cost=500, direct_selling=1, commission=0.1, check_input=True)[source]#

Maximum Profit measure for customer Acquisition (MPA).

MPA presumes a situation where leads are targeted either directly or indirectly. Directly targeted leads are contacted and handled by the internal sales team. Indirectly targeted leads are contacted and then referred to intermediaries, which receive a commission. The company gains a contribution from a successful acquisition.

See also

mpa_score : to only return the EMPA score.

empa : for a stochastic version of this metric.

Parameters:
y_truearray-like of shape (n_samples,)

Binary target values (‘acquisition’: 1, ‘no acquisition’: 0).

y_scorearray-like of shape (n_samples,)

Target scores, can either be probability estimates or non-thresholded decision values.

contributionfloat, default=7000

Average contribution of a new customer (contribution 0).

sales_costfloat, default=500

Average sale conversion cost of targeted leads handled by the company (sales_cost 0).

contact_costfloat, default=50

Average contact cost of targeted leads (contact_cost 0).

direct_sellingfloat, default=1

Fraction of leads sold to directly (0 direct_selling 1). direct_selling = 0 for indirect channel. direct_selling = 1 for direct channel.

commissionfloat, default=0.1

Fraction of contribution paid to the intermediaries (0 commission 1).

Note

The commission is only relevant when there is an indirect channel (direct_selling < 1).

check_inputbool, default=True

Perform input validation. Turning off improves performance, useful when using this metric as a loss function.

Returns:
mpafloat

Maximum Profit measure for customer Acquisition

thresholdfloat

Fraction of the leads that should be targeted to maximize profit

Examples

>>> from empulse.metrics import mpa
>>>
>>> y_true = [0, 1, 0, 1, 0, 1, 0, 1]
>>> y_score = [0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.8, 0.9]
>>> mpa(y_true, y_score)
(3706.25, 0.875)