4: Metrics#
Understanding Metrics#
Metrics are the way to measure the (dis)similarity between two modles, classes, or samples. There are various metrics that have been implemented for representational similarity analysis. The growing list of supported metrics are:
Metric |
Map |
---|---|
braycurtis |
modelwise_classical, samplewise_classical |
canberra |
modelwise_classical, samplewise_classical |
chebyshev |
modelwise_classical, samplewise_classical |
cityblock |
modelwise_classical, samplewise_classical |
correlation |
modelwise_classical, samplewise_classical |
cosine |
modelwise_classical, samplewise_classical |
dice |
modelwise_classical, samplewise_classical |
euclidean |
modelwise_classical, samplewise_classical |
hamming |
modelwise_classical, samplewise_classical |
jaccard |
modelwise_classical, samplewise_classical |
jensenshannon |
modelwise_classical, samplewise_classical |
kulczynski1 |
modelwise_classical, samplewise_classical |
mahalanobis |
modelwise_classical, samplewise_classical |
matching |
modelwise_classical, samplewise_classical |
minkowski |
modelwise_classical, samplewise_classical |
rogerstanimoto |
modelwise_classical, samplewise_classical |
russellrao |
modelwise_classical, samplewise_classical |
seuclidean |
modelwise_classical, samplewise_classical |
sokalmichener |
modelwise_classical, samplewise_classical |
sokalsneath |
modelwise_classical, samplewise_classical |
sqeuclidean |
modelwise_classical, samplewise_classical |
yule |
modelwise_classical, samplewise_classical |
esm |
netrep_esm |
gsm |
netrep_gsm |
Notice:
The modelwise_classical metrics are the same as the samplewise_classical metrics but averaged over samples.
The
netrep_esm
andnetrep_gsm
metrics are only available for modelwise measurements.
Metrics and Shapes#
Metric implementations are specific to spaces. Only certain metrics are available in certain spaces. The above table shows the mapping of the metric to the respective space.
Similarly, metrics are also restricted to work only on shapes recognized by the spaces.
reminder: the shapes are:
Space |
Shape |
---|---|
model |
(n_model, n_samples, n_features) |
class |
(n_class, n_samples, n_features) |
sample |
(n_samples, n_features) |
For example, the euclidean
metric is available in the modelwise_classical
and samplewise_classical
spaces and can accept both (n_samples, n_features) and (n_model, n_samples, n_features). However, The netrep_esm
and netrep_gsm
metrics are only available in the modelwise_classical
space and can only accept (n_model, n_samples, n_features) shape.
Making our own Metrics#
Template 1: Simple pairwise metric#
import numpy as np
import itertools
from tqdm import tqdm
class custom_metric_example:
def __init__(self) -> None:
pass
def measure(self, data):
n_data = len(data)
distances = np.zeros((n_data, n_data))
for i,j in tqdm(itertools.combinations(range(n_data), 2), total = n_data * (n_data - 1) / 2):
x1, y1 = data[i]
x2, y2 = data[j]
# For example, this just subtracts the samples
distances[i, j] = x1 - x2
distances += distances.T
# return the distance matrix
return distances
Notes to remember#
The
measure
function takes in a list of data and returns a distance matrix. And it is a mandatory function.The
__init__
function is optional. It can be used to initialize any variables that are required for the metric.The
measure
function returns a square distance matrix of shape (n_data, n_data). The diagonal elements are ignored/ assumed 0. The upper triangular elements are used to fill the lower triangular elements. The distance matrix is symmetric.