OWAFRS model¶
OWAFRS stands for Ordered Weighted Averaging Fuzzy-Rough Sets. It uses OWA weighting strategies to aggregate sorted lower and upper approximation evidence. This makes the model more flexible than strict infimum/supremum-style aggregations and useful for noisy or uncertain data.
Implementation contract¶
frsutils.core.models.OWAFRS is the dense NumPy reference implementation. It
expects a fully materialized finite fuzzy-relation matrix with values in
[0, 1], a one-dimensional label vector, an upper T-norm, a lower implicator,
and lower and upper OWA weighting strategies. The low-level relation matrix may
be asymmetric and need not have a unit diagonal because OWAFRS excludes
self-comparisons explicitly before sorting. FRsutils uses
relation[i, j] = R(x_i, x_j): row i is sorted and OWA-aggregated for sample
x_i. Transposing an asymmetric relation can therefore change the result.
The direct dense model requires at least two samples because OWAFRS excludes the self-comparison on the diagonal and then applies OWA aggregation to the remaining comparisons.
All registered OWA strategies, including exponential weights, support sample counts above 21. The exponential implementation rescales its raw geometric progression before normalization, so large OWAFRS datasets do not fail from raw weight overflow.
The public approximation API also provides exact blockwise OWAFRS execution:
from frsutils import compute_approximations
result = compute_approximations(X, y, model="owafrs", engine="blockwise")
Approximation outputs¶
frsutils reports the following public outputs:
signed_boundary = upper_approximation - lower_approximation
positive_region = lower_approximation
boundary_region remains available as a backward-compatible name for the same
signed difference. FRsutils does not clip this value, so valid OWA/component
choices can produce negative values when they do not guarantee
lower_approximation <= upper_approximation. Public output arrays are NumPy
arrays.
Backend status¶
OWAFRS supports:
- dense NumPy execution,
- exact blockwise NumPy execution,
- optional CuPy-backed similarity blocks.
OWAFRS does not currently claim GPU-resident approximation accumulators. Exact OWA aggregation requires row-wise sorting and weighted aggregation, so the current blockwise implementation keeps this aggregation path NumPy-compatible.