ExFairness.Utils (ExFairness v0.5.1)
View SourceUtility functions for ExFairness computations.
Provides core numerical operations for fairness metrics using Nx tensors. All functions in this module are optimized for GPU acceleration via Nx.Defn.
Summary
Functions
Creates a binary mask for a specific group value.
Counts the number of samples in a specific group.
Computes positive prediction rates for both groups.
Computes the positive prediction rate for a masked subset of predictions.
Functions
@spec create_group_mask(Nx.Tensor.t(), number()) :: Nx.Tensor.t()
Creates a binary mask for a specific group value.
Parameters
sensitive_attr- Tensor of sensitive attribute valuesgroup_value- The group value to create a mask for (typically 0 or 1)
Returns
A binary mask tensor where 1 indicates membership in the specified group.
Examples
iex> sensitive_attr = Nx.tensor([0, 0, 1, 1, 0, 1])
iex> mask = ExFairness.Utils.create_group_mask(sensitive_attr, 0)
iex> Nx.to_flat_list(mask)
[1, 1, 0, 0, 1, 0]
@spec group_count(Nx.Tensor.t(), number()) :: Nx.Tensor.t()
Counts the number of samples in a specific group.
Parameters
sensitive_attr- Tensor of sensitive attribute valuesgroup_value- The group value to count (typically 0 or 1)
Returns
A scalar tensor containing the count of samples in the group.
Examples
iex> sensitive_attr = Nx.tensor([0, 0, 1, 1, 0, 1])
iex> count = ExFairness.Utils.group_count(sensitive_attr, 0)
iex> Nx.to_number(count)
3
@spec group_positive_rates(Nx.Tensor.t(), Nx.Tensor.t()) :: {Nx.Tensor.t(), Nx.Tensor.t()}
Computes positive prediction rates for both groups.
Parameters
predictions- Binary predictions tensorsensitive_attr- Binary sensitive attribute tensor
Returns
A tuple {rate_group_0, rate_group_1} of positive prediction rates.
Examples
iex> predictions = Nx.tensor([1, 0, 1, 1, 0, 1])
iex> sensitive_attr = Nx.tensor([0, 0, 0, 1, 1, 1])
iex> {rate_0, rate_1} = ExFairness.Utils.group_positive_rates(predictions, sensitive_attr)
iex> r0 = Nx.to_number(rate_0) |> Float.round(2)
iex> r1 = Nx.to_number(rate_1) |> Float.round(2)
iex> {r0, r1}
{0.67, 0.67}
@spec positive_rate(Nx.Tensor.t(), Nx.Tensor.t()) :: Nx.Tensor.t()
Computes the positive prediction rate for a masked subset of predictions.
Parameters
predictions- Binary predictions tensor (0 or 1)mask- Binary mask tensor indicating which samples to include
Returns
A scalar tensor containing the positive prediction rate (between 0 and 1).
Examples
iex> predictions = Nx.tensor([1, 0, 1, 1, 0, 1, 0, 1])
iex> mask = Nx.tensor([1, 1, 1, 1, 0, 0, 0, 0])
iex> rate = ExFairness.Utils.positive_rate(predictions, mask)
iex> Nx.to_number(rate)
0.75