Pas encore de compte ?
Une mesure de similarité est une métrique qui mesure la distance entre deux chaînes de caractères.
Elle intervient dans la recherche approximative ou la comparaison de chaînes.
Le choix des mesures de distance est une étape critique du regroupement qui définit comment la similarité de deux éléments x et y est calculée et comment elles influencent la forme des clusters.
Les méthodes classiques pour les mesures de distance sont les distances euclidiennes et de Manhattan.
Distance Euclidienne
Distance Manhattan
Où x et y sont deux vecteurs de longueur n.
La distance euclidienne entre deux points dans l'espace euclidien est la longueur d'un segment de ligne entre les deux points.
Elle peut être calculée à partir des coordonnées cartésiennes des points à l'aide du théorème de Pythagore, elle est parfois appelée distance de Pythagore.
La distance de Manhattan est une métrique de distance entre deux points dans un espace vectoriel de dimension N.
La distance de Manhattan est la somme des longueurs des projections du segment de droite entre les points sur les axes de coordonnées.
En termes simples, c'est la somme de la différence absolue entre les mesures dans toutes les dimensions de deux points.
Distance de corrélation de Pearson
La corrélation de Pearson mesure le degré d'une relation linéaire entre deux profils.
Distance de corrélation cosinus d'Eisen
C'est un cas particulier de la corrélation de Pearson avec x¯ et y¯ tous deux remplacés par zéro.
Distance de corrélation de Spearman
La méthode de corrélation de Spearman calcule la corrélation entre le rang de x et le rang y des variables.
où x′i = rank(xi) et y′i = rank(y).
Distance de corrélation de Kendall
La méthode de corrélation de Kendall mesure la correspondance entre le classement des variables x et y.
Le nombre total d'appariements possibles de x avec y observations est n(n−1) / 2, où n est la taille de x et y.
Commencez par classer les paires par les valeurs x.
Si x et y sont corrélés, alors ils auraient les mêmes ordres de classement relatifs.
Maintenant, pour chaque yi, comptez le nombre de yj > yi paires concordantes (c) et le nombre de yj < yi paires discordantes (d).
Où :
nc : nombre total de paires concordantes
nd : nombre total de paires discordantes
n : dimension de x et y
L'analyse de corrélation de Pearson est la méthode la plus couramment utilisée.
Elle est également connue sous le nom de corrélation paramétrique qui dépend de la distribution des données.
Les corrélations de Kendall et Spearman ne sont pas paramétriques et sont utilisées pour effectuer une analyse de corrélation basée sur les rangs.
Distance de Minkowski
La distance de Minkowski est une métrique dans un espace vectoriel normé qui peut être considérée comme une généralisation à la fois de la distance euclidienne et de la distance de Manhattan.
Distance de Tchebychev
C'est le cas extrême de la distance de Minkowski.
Lorsque nous utilisons l'infini comme valeur du paramètre p, nous nous retrouvons avec une métrique qui définit la distance comme la différence absolue maximale entre les coordonnées.
Testé sous Anaconda et Python 3.7
import math def Cosine(vec1, vec2) : result = InnerProduct(vec1,vec2) / (VectorSize(vec1) * VectorSize(vec2)) return result def VectorSize(vec) : return math.sqrt(sum(math.pow(v,2) for v in vec)) def InnerProduct(vec1, vec2) : return sum(v1*v2 for v1,v2 in zip(vec1,vec2)) def Euclidean(vec1, vec2) : return math.sqrt(sum(math.pow((v1-v2),2) for v1,v2 in zip(vec1, vec2))) def Theta(vec1, vec2) : return math.acos(Cosine(vec1,vec2)) + math.radians(10) def Triangle(vec1, vec2) : theta = math.radians(Theta(vec1,vec2)) return (VectorSize(vec1) * VectorSize(vec2) * math.sin(theta)) / 2 def Magnitude_Difference(vec1, vec2) : return abs(VectorSize(vec1) - VectorSize(vec2)) def Sector(vec1, vec2) : ED = Euclidean(vec1, vec2) MD = Magnitude_Difference(vec1, vec2) theta = Theta(vec1, vec2) return math.pi * math.pow((ED+MD),2) * theta/360 def TS_SS(vec1, vec2) : return Triangle(vec1, vec2) * Sector(vec1, vec2) vec1 = [2,5] vec2 = [2,10] print('Vect 1 = ', vec1) print('Vect 2 = ', vec2, '\n') print('Cosine = ', Cosine(vec1,vec2), '\n') print('InnerProduct = ', InnerProduct(vec1, vec2), '\n') print('Euclidean = ', Euclidean(vec1,vec2), '\n') print('Theta = ', Theta(vec1, vec2), '\n') print('Triangle = ', Triangle(vec1, vec2), '\n') print('Magnitude_Difference = ', Magnitude_Difference(vec1, vec2), '\n') print('Sector = ', Sector(vec1, vec2), '\n') print('TS_SS = ', TS_SS(vec1,vec2), '\n')
Vector_Similarity
Copyright (c) 2017 KimJunho
Vect 1 = [2, 5]
Vect 2 = [2, 10]
Cosine = 0.9832820049844603
InnerProduct = 54
Euclidean = 5.0
Theta = 0.35764374246191644
Triangle = 0.17140001320519763
Magnitude_Difference = 4.812874220051065
Sector = 0.300531823876711
TS_SS = 0.0515111585810504
Inconvénients du cosinus
Inconvénients euclidiens
Similitude de zone de triangle (TS)
Similitude de zone du secteur (SS)
TS-SS
Resultats
Dans le plus grand ensemble de données, TS-SS surpasse le cosinus avec une différence significative, tandis que dans d'autres ensembles de données, le TS-SS surpasse légèrement le cosinus.
Par conséquent, le meilleur résultat significatif de TS-SS dans le plus grand ensemble de données justifie la robustesse et la fiabilité du modèle pour les mégadonnées et les données du monde réel où la variété des documents/textes est élevée.
Bienvenu, je m’appelle Eric Soupet et je suis l'administrateur du site elodees.com. elodees.com est un état de l'art de l'Intelligence Artificielle et se veut collaboratif, vous pouvez dès à présent proposer du contenu tels que des articles, des événements, des tutoriels, ... alors n'hésitez pas !
Crédit des images de la plate-forme : Pixabay - Pixabay License | Pexels - Pexels License