Similarity and Dissimilarity Measures in Information Science



Information Science offers with discovering patterns in a big assortment of knowledge. For that, we have to evaluate, type, and cluster numerous information factors throughout the unstructured information. Similarity and dissimilarity measures are essential in information science, to match and quantify how comparable the information factors are. On this article, we are going to discover the several types of distance measures utilized in information science.

Similarity and Dissimilarity Measures in Data Science


  • Perceive using distance measures in information science.
  • Be taught the several types of similarity and dissimilarity measures utilized in information science.
  • Learn to implement greater than 10 totally different distance measures in information science.

Vector Distance Measures in Information Science

Let’s start by studying in regards to the totally different vector distance measures we use in information science.

Euclidean Distance

That is based mostly on the Pythagorean theorem. For 2 two-dimension it may be calculated as d = ((v1-u1)^2  + (v2-u2)^2)^0.5

This formulation could be represented as ||u – v||2

import scipy.spatial.distance as distance

distance.euclidean([1, 0, 0], [0, 1, 0])
# returns 1.4142

distance.euclidean([1, 5, 0], [7, 3, 4])
# returns 7.4833

Minkovski Distance

It is a extra generalized measure for calculating distances, which could be represented by ||u – v||p. By various the worth of p, we will get hold of totally different distances.

For p=1, Metropolis block (Manhattan) distance, for p=2, Eucleadian distance, when p=infinity, chebyshev distance

distance.minkowski([1, 5, 0], [7, 3, 4], p=2)
>>> 7.4833

distance.minkowski([1, 5, 0], [7, 3, 4], p=1)
>>> 12

distance.minkowski([1, 5, 0], [7, 3, 4], p=100)
>>> 6
Vector based distance measures in Data Science

Statistical Similarity in Information Science

Statistically similarity in information science is usually measured utilizing Pearson Correlation.

Pearson Correlation

It measures the linear relationship between two vectors.

correlation coefficient
import scipy
scipy.stats.pearsonr([1, 5, 0], [7, 3, 4])[0]
>>> -0.544

Different correlation metrics for several types of variables are mentioned right here.

The metrics talked about above are efficient for measuring the gap between numerical values. Nevertheless, with regards to textual content, we make use of totally different methods to calculate the gap.

To calculate textual content distance metrics we will set up the required libraries by

'pip set up textdistance[extras]'

Edit-based Distance Measures in Information Science

Now let’s have a look at some edit-based distance measures utilized in information science.

Hamming Distance

It measures the variety of differing characters between two strings of equal size.

We are able to add prefixes if we wish to calculate for unequal-length strings.

textdistance.hamming('collection', 'serene')
>>> 3

textdistance.hamming('AGCTTAG', 'ATCTTAG')
>>> 1

textdistance.hamming.normalized_distance('AGCTTAG', 'ATCTTAG')
>>> 0.1428

Levenshtein Distance

It’s calculated based mostly on what number of corrections are wanted to transform one string to a different. The allowed corrections are insertion, deletion, and substitution.

textdistance.levenshtein('genomics', 'genetics')
>>> 2

textdistance.levenshtein('datamining', 'dataanalysis')
>>> 8


It additionally consists of the transposition of two adjoining characters along with the corrections from Levenshtein distance.

textdistance.levenshtein('algorithm', 'algortihm')
>>> 2

textdistance.damerau_levenshtein('algorithm', 'algortihm')
>>> 1

Jaro-Winkler Distance

The formulation to measure that is Jaro-Winkler=Jaro+(l×p×(1−Jaro)), the place
l=size of the frequent prefix (as much as 4 characters)
p=scaling issue, usually 0.1

Jaro = 1/3 ​(∣s1∣/m​ + ∣s2∣/m​ + (m−t)/m​), the place
Si is the size of the string
m is the variety of matching characters inside max(∣s1∣,∣s2∣)/2 – 1
t is the variety of transpositions.

For instance, within the strings “MARTHA” and “MARHTA”, “T” and “H” are transpositions

textdistance.jaro_winkler('datamining', 'dataanalysis')
>>> 0.6444

textdistance.jaro_winkler('datamining', 'dataanalysis')
>>> 0.8833

Token-based Distance Measures in Information Science

Let me introduce you to some token-based distance measures in information science.

Jaccard Index

This measures similarity between two strings by dividing the variety of characters frequent to each by the overall variety of strings in each (Intersection over union).

textdistance.jaccard('genomics', 'genetics')
>>> 0.6

textdistance.jaccard('datamining', 'dataanalysis')
>>> 0.375

# The outcomes are similarity fraction between phrases.

Sørensen–Cube Coefficient

measures similarity between two units by dividing twice the scale of their intersection by the scale of their union.

textdistance.sorensen_dice('genomics', 'genetics')
>>> 0.75

textdistance.sorensen_dice('datamining', 'dataanalysis')
>>> 0.5454

Tversky Index

It is sort of a generalization of the Sørensen–Cube coefficient and the Jaccard index.

Tversky Index(A,B)=∣A∩B∣​ / ∣A∩B∣+α∣A−B∣+β∣B−A∣

When alpha and beta are 1, it’s the similar as Jaccard index. When they’re 0.5 every, it similar as Sørensen–Cube coefficient. We are able to change these values relying on how a lot weightage to offer for mismatches from A and B, respectively.

textdistance.Tversky(ks=[1,1]).similarity('datamining', 'dataanalysis')
>>> 0.375

textdistance.Tversky(ks=[0.5,0.5]).similarity('datamining', 'dataanalysis')
>>> 0.5454

Cosine Similarity

This measures the cosine of the angle between two non-zero vectors in a multidimensional area. cosine_similarity = A⋅B / ∣∣A∣∣×∣∣B∣​, A.B is the dot product, ∣∣A∣∣ and ∣∣B∣are the magnitudes.

textdistance.cosine('AGCTTAG', 'ATCTTAG')
>>> 0.8571

textdistance.cosine('datamining', 'dataanalysis')
>>> 0.5477

Sequence-based Distance Measures in Information Science

We have now now come to the final part of this text the place we are going to discover a few of the generally used sequence-based distance measures.

Longest Frequent Subsequence

That is the longest subsequence frequent to each strings, the place we will get the subsequence by deleting zero or extra characters with out altering the order of the remaining characters.

textdistance.lcsseq('datamining', 'dataanalysis')
>>> 'datani'

textdistance.lcsseq('genomics is research of genome', 'genetics is research of genes')
>>> 'genics is research of gene'

Longest Frequent Substring

That is the longest substring frequent to each strings, the place we will get a substring in a contiguous sequence of characters inside a string.

textdistance.lcsstr('datamining', 'dataanalysis')
>>> 'information'

textdistance.lcsstr('genomics is research of genome', 'genetics is research of genes')
>>> 'ics is research of gen'

Ratcliff-Obershelp Similarity

A measure of similarity between two strings based mostly on the idea of matching subsequences. It calculates the similarity by discovering the longest matching substring between the 2 strings after which recursively discovering matching substrings within the non-matching segments. Non-matching segments are taken from the left and proper elements of the string after dividing the unique strings by the matching substring.

Similarity = 2×M​ / ∣S1∣+∣S2∣


String 1: datamining, String 2: dataanalysis

Longest matching substring: ‘information’, Remaining segments: ‘mining’ and ‘evaluation’ each on proper aspect.

Examine mining and evaluation, Longest matching substring: ‘n’, Remaining segments: ‘mi’ and ‘a’ on left aspect, ‘ing’ and ‘alysis’ on proper aspect. There aren’t any additional matching substrings.

So, 2*5 / (10+12) = 0.4545

textdistance.ratcliff_obershelp('datamining', 'dataanalysis')
>>> 0.4545

textdistance.ratcliff_obershelp('genomics is research of genome', 'genetics is research of genes')
>>> 0.8679

These are a few of the generally used similarity and distance metrics in information science. A number of others embrace Smith-Waterman based mostly on dynamic programming, compression-based normalized compression distance, phonetic algorithms just like the match ranking method, and many others.

Be taught extra about these similarity measures right here.


Similarity and dissimilarity measures are essential in Information Science for duties like clustering and classification. This text explored numerous metrics: Euclidean and Minkowski distances for numerical information, Pearson correlation for statistical relationships, Hamming and Levenshtein distances for textual content, and superior strategies like Jaro-Winkler, Tversky index, and Ratcliff-Obershelp similarity for nuanced comparisons, enhancing analytical capabilities.

Continuously Requested Questions

Q1. What’s the Euclidean distance and the way is it utilized in Information Science?

A. Euclidean distance is a measure of the straight-line distance between two factors in a multidimensional area, generally utilized in clustering and classification duties to match numerical information factors.

Q2. How does the Levenshtein distance differ from the Hamming distance?

A. Levenshtein distance measures the variety of insertions, deletions, and substitutions wanted to rework one string into one other, whereas Hamming distance solely counts character substitutions and requires the strings to be of equal size.

Q3. What’s the goal of the Jaro-Winkler distance?

A. Jaro-Winkler distance measures the similarity between two strings, giving larger scores to strings with matching prefixes. It’s notably helpful for evaluating names and different textual content information with frequent prefixes.

This fall. When ought to I take advantage of Cosine Similarity in textual content evaluation?

A. Cosine Similarity is good for evaluating doc vectors in high-dimensional areas, akin to in data retrieval, textual content mining, and clustering duties, the place the orientation of vectors (quite than their magnitude) is essential.

Q5. What are token-based similarity measures and why are they essential?

A. Token-based similarity measures, like Jaccard index and Sørensen-Cube coefficient, evaluate the units of tokens (phrases or characters) in strings. They’re essential for duties the place the presence and frequency of particular parts are essential, akin to in textual content evaluation and doc comparability.