Gower's distance

In statistics, Gower's distance between two mixed-type objects is a similarity measure that can handle different types of data within the same dataset and is particularly useful in cluster analysis or other multivariate statistical techniques. Data can be binary, ordinal, or continuous variables. It works by normalizing the differences between each pair of variables and then computing a weighted average of these differences. The distance was defined in 1971 by Gower and it takes values between 0 and 1 with smaller values indicating lower similarity.

Definition
For two objects $$i$$ and $$j$$ having $$p$$ descriptors, the similarity $$S$$ is defined as: $$S_{ij} = \frac{\sum_{k=1}^pw_{ijk}s_{ijk}}{\sum_{k=1}^pw_{ijk}},$$

where the $$w_{ijk}$$ are non-negative weights usually set to $$1$$ and $$s_{ijk}$$ is the similarity between the two objects regarding their $$k$$-th variable. If the variable is binary or ordinal, the values of $$s_{ijk}$$ are 0 or 1, with 1 denoting equality. If the variable is continuous, $$s_{ijk} = 1- \frac{|x_i-x_j|}{R_k}$$ with $$R_k$$ being the range of $$k$$-th variable and thus ensuring $$0\leq s_{ijk}\leq 1$$. As a result, the overall similarity $$S_{ij}$$ between two objects is the weighted average of the similarities calculated for all their descriptors.

In its original exposition, the distance does not treat ordinal variables in a special manner. In the 1990s, first Kaufman and Rousseeuw and later Podani suggested extensions where the ordering of an ordinal feature is used. For example, Podani obtains relative rank differences as $$s_{ijk} = 1- \frac{|r_i-r_j|}{\max{\{r\}}- \min{\{r\}}}$$ with $$r$$ being the ranks corresponding to the ordered categories of the $$k$$-th variable.

Software implementations
Many programming languages and statistical packages, such as R, Python, etc., include implementations of Gower's distance.