SoftwareCore-Norm

OPEN SOFTWARE · EXPERIMENTAL METHOD

Core-Norm

A two-coordinate normalization method for numeric features. It keeps the ordinary part of a value bounded in a central coordinate and stores only the extra tail magnitude in a separate residual coordinate—so extremes cannot dominate the main scale, yet their magnitude can still be recovered.

Python · scikit-learnBrowser analysisBaseline comparisonGitHub-backed evidence

THE IDEA FIRST

One original feature becomes two easy-to-interpret coordinates.

You should not have to read the equations before understanding the representation. For each original value x, Core-Norm returns C and R.

x

Original value

The measurement in its original units—for example 226.6 W/m², 8.2 kW, or 31.4 °C.

C

Central coordinate

Where is this value relative to the usual range? C is always between −1 and +1. Values inside the learned central region move smoothly between those limits. Once a value reaches the learned tail boundary, C stays at −1 or +1.

Think: position inside the normal working range.

R

Residual coordinate

How far beyond the central boundary did the value go? R is exactly 0 for non-tail observations. For a tail observation it stores the signed excess magnitude in a compressed range between −1 and +1.

Think: extra distance after the central coordinate has saturated.

Why two coordinates?

If Core-Norm clipped an extreme value at C = +1 and stopped there, different extremes would become indistinguishable. R prevents that information loss. The pair (C, R) is the Core-Norm representation.

A 30-SECOND EXAMPLE

Two values can share C = 1 but remain different because R keeps the excess.

Suppose the fitted feature has median m = 100, upper scale s⁺ = 30, and transition threshold τ = 2.5.

Worked Core-Norm example
Raw xuCentral CResidual RInterpretation
1451.50.600Inside the central region. No excess tail information is needed.
1752.51.000Exactly at the upper tail boundary.
226.554.2181.00≈ 0.50Central position is saturated, but R records how far beyond the boundary the value lies.

FORMULA, STEP BY STEP

Every symbol has one job.

The formulas below use statistics fitted from the training data only. Each equation is followed by a plain-language meaning so the mathematics and purpose stay connected.

1

Find the robust centre

m = Q0.50(x)

m is the median of one training feature. Q0.50 means the 50th percentile. Half of the training values lie below it and half above it.

Purpose: define a centre that is less sensitive to a few extreme observations than the arithmetic mean.

2

Measure lower and upper spread separately

s = m − Q0.25(x)   ·   s+ = Q0.75(x) − m

Q0.25 and Q0.75 are the first and third quartiles. s describes spread below the median; s+ describes spread above it.

Purpose: allow a skewed feature to have different scaling below and above its centre.

3

Convert x into an asymmetric robust distance

u = (x − m)/(s + ε),   if x < mu = (x − m)/(s+ + ε),   if x ≥ m

u is the signed distance from the median measured in the appropriate lower or upper robust scale. ε is a very small positive constant used only to prevent division by zero when a feature has almost no spread.

Purpose: put different features onto a comparable robust distance scale without assuming symmetry.

4

Learn where the tail begins

τ = clip(Qq(|u|), τmin, τmax)

|u| is the absolute robust distance. Qq is a high training quantile; the default is q = 0.95. clip(a, L, U) restricts a to the interval [L, U]. Defaults are τmin = 1.5 and τmax = 3.0.

Purpose: choose a data-dependent transition point while preventing that boundary itself from becoming arbitrarily large.

5

Create the central coordinate C

C = clip(u/τ, −1, 1)

C is the main bounded coordinate. If |u| < τ, C moves proportionally with u. If u exceeds the learned boundary, C stays at −1 or +1.

Purpose: stop very large raw magnitudes from creating arbitrarily large main coordinates.

6

Store only the excess in R

d = max(|u| − τ, 0)R = sign(u) · ln(1 + d) / [1 + ln(1 + d)]

d is the amount by which |u| exceeds τ. It is 0 inside the central region. sign(u) is −1 for a lower-tail value, 0 at the centre, and +1 for an upper-tail value. ln is the natural logarithm.

Purpose: preserve tail direction and magnitude, but compress increasingly extreme distances into a bounded residual coordinate R ∈ (−1, 1).

7

Recover the original value

If R = 0:   u = τCIf R ≠ 0:   u = sign(R)[τ + exp(|R|/(1−|R|)) − 1]
x = m + u(s + ε) for u < 0;    x = m + u(s+ + ε) for u ≥ 0

The residual mapping has a closed-form inverse. The stored fitted statistics m, s, s+, τ are enough to reconstruct x; the original training rows are not needed.

Purpose: keep the full two-coordinate representation numerically invertible.

Symbol guide — open for a compact reference
xone original numeric value
Qpp-th quantile from the training feature
mmedian, Q0.50
s, s+lower and upper robust scales
εsmall numerical-stability constant
usigned asymmetric robust distance
qhigh quantile used to estimate the tail boundary
τlearned transition threshold
Cbounded central coordinate, [−1, 1]
ddistance beyond the transition threshold
Rbounded residual coordinate, (−1, 1)
sign(·)direction: negative, zero, or positive

UPLOAD & ANALYZE

Use your own CSV—not just the repository fixtures.

The analysis runs locally in your browser. It detects numeric columns, reports distribution diagnostics, runs Core-Norm, compares several established scalers on the same fitted rows, verifies the inverse, and lets you export the transformed data and fitted state.

Your CSV stays on this device.The Core-Norm upload analyzer does not send the file to the website server or GitHub. Repository evidence below is fetched separately.

1 · Load and configure

Choose a CSV or use the weather/energy example.

Numeric features to analyze

Load data to detect numeric features.

Use less than 100% to simulate fitting on training data and transforming later/unseen rows.

70%

No data loaded.

2 · Analysis report

Diagnostics first; transformed coordinates and downloads remain available below.

Ready for a CSVAfter loading data, this panel will explain the feature distributions and compare scaling behavior.

METHOD COMPARISON

Compare Core-Norm with the other techniques in the archived benchmark.

This view summarizes the public result CSVs—not a manually typed table. Choose the task, corruption condition, and model. The ranking updates from the archived runs fetched from GitHub.

Loading the archived comparison from GitHub…

Loading comparisonThe table will include Core-Norm, Z-score, Min-Max, RobustScaler, Winsorized Z-score, Yeo-Johnson, Quantile-Normal, and no scaling.

The comparison averages matching archived dataset × seed × model evaluations. The reduced Core-Norm ablation is excluded from this headline comparison and remains available in the full run explorer below. Clean and failure cases are deliberately selectable so the page does not imply universal superiority.

LIVE DATASET VERIFICATION

Fetch a public dataset, verify its hash, and run Core-Norm in this browser.

This checks a different claim from predictive performance: bounded coordinates and numerical invertibility. The CSV is fetched directly from the public Core-Norm repository, its SHA-256 is checked against the repository manifest, and the transform/inverse is computed on this device.

12,150archived evaluations
6,804classification runs
5,346regression runs
public datasets passing ledger

Choose a repository dataset

Loading the GitHub dataset manifest…

public dataset files are available. Canonical scikit-learn datasets are identified separately from deterministic synthetic replay fixtures.

Waiting for the GitHub manifest.

Verification result

Bounds and inverse error are computed locally from the fetched CSV.

Run a repository datasetYou will see hash verification, C/R bounds, inverse error, and example transformed coordinates.

FULL BENCHMARK EXPLORER

Inspect every saved test run.

Use this when the summary comparison is not enough. Load the complete archived CSV directly from GitHub and filter the recorded rows by dataset, condition, method, model, and seed.

Results on GitHub ↗

Choose a task to load its full archived result file from GitHub.

0 matching runs
Filtered mean metric: Includes clean, corruption, missingness, drift, row anomalies, and combined stress.
Full run ledger not loaded yetUse the buttons above to fetch the public result CSV.
Page 0 of 0

The archived benchmark is preliminary development evidence, not a universal superiority claim. Negative cases remain visible in the same result files. Synthetic live-verification files are deterministic replay fixtures because the original exploratory matrices were not archived; canonical scikit-learn datasets are the same source datasets named in the archived tables.

INTERACTION & ACCESSIBILITY

Designed so the method can be understood before it is trusted.

The interface uses progressive disclosure, explicit labels, keyboard-visible focus, text-plus-color status cues, readable mathematical typography, responsive tables, and plain-language explanations alongside formulas. It is designed toward accessible web interaction patterns; this is not presented as a formal accessibility certification.

Recognition over recall

Central and residual are defined next to the first place they appear, with a worked example and a compact symbol reference.

Immediate feedback

Upload, GitHub verification, comparison loading, and inverse checks all expose clear status messages rather than silently changing the page.

Evidence separated by claim

Your-data diagnostics, mathematical verification, and predictive benchmark performance are kept in separate sections to reduce interpretation errors.

SOURCE & REPRODUCIBILITY

Inspect the implementation behind the interface.

The public repository contains the Python implementation, tests, archived benchmark rows, dataset manifests, live-verification ledger, CI workflows, derivation, limitations, and citation metadata.