Curse of Dimensionality


Euclidean

Euclidean Distance Formula
Magnitude-sensitive Scale-dependent Dimensional-sensitivity
Convergence Inconsistency


Cosine

Cosine Similarity Formula
Direction-focused Magnitude-agnostic Convergence in high dimensions Biased

Performance

Performance 1
Performance 2

Compact Vectorization optimizes latency of the existing function 'DIEM_Stat' by around 46.50%
Compact Optimized getDIEM optimizes latency of the existing function 'getDIEM' by 34.27%

Quick Start

Python Installation & Usage
# Install DIEM
pip install diemsim

# Import library
from diemsim import DIEM

# Sample data
N = 12
maxV = 1
minV = 0
n_iter = int(1e5)

S1 = np.random.rand(N) * (maxV - minV) + minV
S2 = np.random.rand(N) * (maxV - minV) + minV

# Initialize DIEM
diem = DIEM( N=N, maxV=maxV, minV=minV, n_iter=n_iter )

# Compute DIEM value
value = diem.sim( S1, S2 )

print( "Output Value: ", value )

# Indexwise DIEM computation
print( "Output Value: ", diem.sim( [S1, S2], [S3, S4] ) )

# All Pair DIEM computation
print( "Output Value: ", diem.sim( [S1, S2], [S3, S4], how="all_pair" ) )

# Compute normalized DIEM value using 'DIEM.norm_sim'
print( "Output Value: ", diem.norm_sim( S1, S2 ) )

Reference

The DIEM metric was proposed in the following research work:

Federico Tessari, Kunpeng Yao, Neville Hogan. "Surpassing Cosine Similarity for Multidimensional Comparisons: Dimension Insensitive Euclidean Metric." arXiv preprint arXiv:2407.08623, 2025. [View on arXiv]



Contributors

Boddu Sri Pavan
Chandrasheker Thummanagoti

We welcome contributions from the community!