9
votes

Mesures de distance de similarité

vecteurs comme celui-ci xxx

besoin de calculer la similitude entre eux. Distance de Hamming entre v1 et v2 est 4 et entre v1 et v3 est également 4. mais parce que je suis intéressé dans les groupes de '1' qui sont ensemble pour moi v2 est beaucoup plus similaire à v1 alors v3 est.

Y a-t-il des métriques de distance qui peuvent capturer cela dans les données?

Les données représentent l'occupation de la maison à temps, c'est pourquoi il est important pour moi. '1' signifie occupé, "0" signifie non occupé.


4 commentaires

Donc quelle est la question ?


désolé, déjà édité, s'il y a des mesures de distance pouvant capturer cette


Je suis intéressé par les groupes de '1' qui sont ensemble . Pourriez-vous expliquer ce que vous entendez par là? 1 et 2 sont plus similiaires à cause du même montant de groupes?


Bien essentiellement oui, 1 et 2 sont plus similaires il y a la même quantité de groupes. Parce que v2 est essentiellement vecteur v1 uniquement avec le groupe premier groupe de "1" étant "plus large". v3 est un vecteur presque vide


5 Réponses :


0
votes

Je pense que vous pouvez simplement prendre la moyenne des valeurs dans chaque ensemble. Par exemple, v1 ici aura une moyenne 0,4545 , moyenne de v2 est 0,6363 et moyenne de v3 est 0,0909 . Si les seules valeurs possibles dans l'ensemble sont 0 et 1, les ensembles avec des valeurs égales ou presque égales serviront votre objectif.


3 commentaires

C'est en fait une bonne idée, le problème que j'ai, c'est que je dois mélanger les deux métriques en quelque sorte ensemble. Parce que les vecteurs 0 0 1 1 et 1 1 0 0 Souléderaient avec la moyenne renvoient les deux 0,5 et avec mes métriques 4 que tous sont déplacés. Est-il possible de combiner ces deux mesures qui produisent chacune une moitié de la valeur finale? Ou est-ce trop imprévisible?


Qu'en est-il de l'écart type? Ça va aider?


D'une certaine manière, je suppose que si la distribution ci-dessous était gaussienne. Mais si je prends à nouveau le 0 0 1 1 et 1 1 0 0 Exemple the std aura les mêmes résultats. Je sais comment vous le pensez, mais je devrais alors devoir le premier regroupement, il crée des moyens des grappes, puis comparez les moyens et STD de chaque groupe. Mais si une telle solution compliquée rend plus différente.



8
votes

On dirait comme si vous avez besoin Similarité de cosinus forte> Mesure: xxx pré>

v1 * v2 code> est le produit DOT entre v1 code> et v2 code>: p>

from math import sqrt

def dot(v1, v2):
    return sum(x*y for x, y in zip(v1, v2))

def length(v):
    return sqrt(dot(v, v))

def sim(v1, v2): 
    return dot(v1, v2) / (length(v1) * length(v2))


7 commentaires

Je crois que cela devrait être dist = 1 - sim et non 1 / sim


@Thagnisk.: Les deux vont fonctionner. L'idée est que la distance est en quelque sorte inverse de la similitude, de sorte que toute fonction inverse (et strictement monotone) devrait fonctionner et vous pouvez sélectionner une fonction concrète en fonction de votre interprétation concrète de "distance".


Merci. Ça a du sens. J'apprécierais que si vous envisagez alors de jeter un coup d'œil à cette question: Stackoverflow.com/questions/25181104/...


Si j'ai plus de trois vecteurs, comme si je souhaite vérifier V4 est différent de V1, V2 et V3, puis-je appliquer votre réponse?


La similarité de cosinus est une mesure de distance par paire, vous pouvez donc l'utiliser à n'importe quel nombre de vecteurs aussi longtemps que vous considérez leurs paires (par exemple, v4 vs v1 , v4 < / Code> vs v2 , etc.). Si vous voulez une mesure qui fonctionne avec 3 vecteurs ou plus en même temps , vous devriez être plus précis sur les propriétés souhaitables de cette mesure. Par exemple. Vous pouvez vouloir une distance moyenne de V4 à partir de v1 , v2 et v3 et c'est aussi simple que (dist (V4, V1) + dist (v4, v2) + dist (v4, v3)) / 3 . Donc, tout dépend de ce que vous voulez réaliser exactement.


Une raison pour laquelle votre fonction de longueur ne tient pas compte du SQRT? | v | = sqrt (v_1 ^ 2 + v_2 ^ 2 + ...) = / = v_1 ^ 2 + v_2 ^ 2 + ...


Vous venez de recevoir un badge pour la vigilance :) J'ai édité le code, merci.



4
votes

Il y a littéralement des centaines de fonctions de distance, y compris des mesures de distance pour ensembles , tels que les dés et Jaccard.

Vous voudrez peut-être obtenir le livre "Dictionnaire des fonctions de distance", c'est assez bon.


3 commentaires

Regarda le titre et ne l'a pas trouvé. Vous pourriez fournir votre auteur, ISBN, titre exact s'il vous plaît?


Premier résultat sur Google Books. Isbn: 9780080465548


Le livre est une excellente référence. Il a été mis à jour et renommé encyclopédie des distances: link.springer .com / livre / 10.1007 / 978-3-662-52844-0



1
votes

Case 1: Si la position de celles de la série est pertinente, alors:

Je recommande une distance de gauchissement du temps dynamique (DTW). En application de données de la série temporelle, il s'est avéré incroyablement utile.

Pour vérifier si cela peut être appliqué à votre problème, j'ai utilisé le code présenté ici: https://jeremykun.com/2012/07/25/dynamique-time-warping/ xxx

comme vous le voyez, D12 est le plus bas, donc V1 et V2 sont les plus simples. Des informations complémentaires sur les DTW peuvent être trouvées n'importe où dans ce forum et pour les documents de recherche, je recommande n'importe quoi de Eamonn Keogh < / a>.

Case 2: La position de celles n'est pas pertinente:

Je suis tout simplement d'accord sur Deepu pour avoir pris la moyenne comme caractéristique.


0 commentaires

-1
votes

Il existe un site Web introduisant les différents types de méthodes de similarité de vecteur

http: // dataaspirant.com/2015/04/11/five- plus-popular-sImilarity-Measures-Implementatation-in-python/

Je pense que cela vous aidera à décider quelle similitude vous devriez utiliser

.

.

Expliquer brièvement le lien ci-dessus, il existe cinq mesures de similitude populaire entre les vecteurs

  1. distance euclidienne - simplement la distance absolue entre les vecteurs

  2. Cosine - Diplôme de cosinus (Theta) Différence entre les vecteurs

  3. manhattan - la somme des différences absolues de leurs coordonnées cartésiennes, par exemple

    dans un plan avec P1 à (x1, y1) et p2 à (x2, y2). Distance de Manhattan = | x1 - x2 | + | Y1 - Y2 |

    1. Minkowski - forme métrique généralisée de distance euclidienne et distance de Manhattan

    2. Jaccard - Similarité entre les objets. Ainsi, chaque élément dans un ensemble sera comparé à un autre ensemble et trouve sa différence

      .

      Avec le mot-clé ci-dessus, vous pouvez google pour plus d'explications. Je espère que ça vous aiderait


0 commentaires