Maison > Article > Périphériques technologiques > Dix méthodes de mesure de distance couramment utilisées en apprentissage automatique
La métrique de distance est la base des algorithmes d'apprentissage supervisé et non supervisé, y compris le k-voisin le plus proche, la machine à vecteurs de support et le clustering k-means, etc.
Le choix de la métrique de distance affecte nos résultats d'apprentissage automatique, il est donc important de déterminer quelle métrique est la mieux adaptée au problème. Par conséquent, nous devons être prudents lorsque nous décidons quelle méthode de mesure utiliser. Mais avant de prendre une décision, nous devons comprendre comment fonctionne la mesure de distance et quelles mesures nous pouvons choisir.
Cet article présentera brièvement les méthodes de mesure de distance couramment utilisées, comment elles fonctionnent, comment les calculer en Python et quand les utiliser. Cela approfondit les connaissances et la compréhension et améliore les algorithmes et les résultats d’apprentissage automatique.
Avant d’approfondir les différentes mesures de distance, ayons d’abord une idée générale de leur fonctionnement et de la manière de choisir la mesure appropriée.
La métrique de distance est utilisée pour calculer la différence entre deux objets dans un espace problématique donné, c'est-à-dire les caractéristiques de l'ensemble de données. Cette distance peut ensuite être utilisée pour déterminer la similarité entre les entités : plus la distance est petite, plus les entités sont similaires.
Pour la mesure de distance, nous pouvons choisir entre la mesure de distance géométrique et la mesure de distance statistique. La mesure de distance à choisir dépend du type de données. Les entités peuvent être de différents types de données (par exemple, valeurs réelles, valeurs booléennes, valeurs catégorielles), et les données peuvent être multidimensionnelles ou constituées de données géospatiales.
La distance euclidienne mesure la distance la plus courte entre deux vecteurs à valeur réelle. En raison de son caractère intuitif, de sa simplicité d'utilisation et de ses bons résultats dans de nombreux cas d'utilisation, il s'agit de la métrique de distance la plus couramment utilisée et de la métrique de distance par défaut pour de nombreuses applications.
La distance euclidienne peut aussi être appelée norme l2, et sa méthode de calcul est la suivante :
Le code Python est le suivant
from scipy.spatial import distance distance.euclidean(vector_1, vector_2)
La distance euclidienne présente deux inconvénients principaux. Premièrement, les mesures de distance ne fonctionnent pas avec des données de dimensions supérieures à l’espace 2D ou 3D. Deuxièmement, si nous ne normalisons pas et/ou ne normalisons pas les caractéristiques, les distances peuvent être faussées par unités.
La distance de Manhattan est également appelée distance en taxi ou en pâté de maisons, car la distance entre deux vecteurs à valeur réelle est calculée sur la base du fait qu'une personne ne peut se déplacer qu'à angle droit. Cette mesure de distance est souvent utilisée pour les attributs discrets et binaires afin d'obtenir de véritables chemins.
La distance de Manhattan est basée sur la norme l1, et la formule de calcul est :
Le code Python est le suivant
from scipy.spatial import distance distance.cityblock(vector_1, vector_2)
La distance de Manhattan présente deux inconvénients principaux. Elle n’est pas aussi intuitive que la distance euclidienne dans un espace de grande dimension et ne montre pas non plus le chemin le plus court possible. Même si cela ne pose pas de problème, nous devons être conscients qu’il ne s’agit pas de la distance la plus courte.
La distance de Chebyshev est également appelée distance en damier car c'est la distance maximale dans n'importe quelle dimension entre deux vecteurs à valeur réelle. Il est couramment utilisé dans la logistique d’entrepôt, où le chemin le plus long détermine le temps nécessaire pour se rendre d’un point à un autre.
La distance de Chebyshev est calculée selon la norme l -infini :
Le code Python est le suivant
from scipy.spatial import distance distance.chebyshev(vector_1, vector_2)
La distance de Chebyshev n'a que des cas d'utilisation très spécifiques et est donc rarement utilisée.
La distance de Minkowski est la forme généralisée de la mesure de distance ci-dessus. Il peut être utilisé pour les mêmes cas d’utilisation tout en offrant une grande flexibilité. Nous pouvons choisir la valeur p pour trouver la mesure de distance la plus appropriée.
La méthode de calcul de la distance de Minkowski est la suivante :
Le code Python est le suivant
from scipy.spatial import distance distance.minkowski(vector_1, vector_2, p)
Étant donné que la distance de Minkowski représente différentes mesures de distance, elle présente les mêmes principaux inconvénients qu'eux, comme dans les grandes dimensions. Problèmes avec l'espace et la dépendance à l'égard d'unités caractéristiques. De plus, la flexibilité des valeurs p peut également être un inconvénient, car elle peut réduire l'efficacité des calculs puisque plusieurs calculs sont nécessaires pour trouver la valeur p correcte.
La similarité cosinus est une mesure de direction. Sa taille est déterminée par le cosinus entre deux vecteurs et ignore la taille du vecteur. La similarité cosinusoïdale est souvent utilisée dans les grandes dimensions où la taille des données n'a pas d'importance, par exemple dans les systèmes de recommandation ou l'analyse de texte.
余弦相似度可以介于-1(相反方向)和1(相同方向)之间,计算方法为:
余弦相似度常用于范围在0到1之间的正空间中。余弦距离就是用1减去余弦相似度,位于0(相似值)和1(不同值)之间。
Python代码如下
from scipy.spatial import distance distance.cosine(vector_1, vector_2)
余弦距离的主要缺点是它不考虑大小而只考虑向量的方向。因此,没有充分考虑到值的差异。
半正矢距离测量的是球面上两点之间的最短距离。因此常用于导航,其中经度和纬度和曲率对计算都有影响。
半正矢距离的公式如下:
其中r为球面半径,φ和λ为经度和纬度。
Python代码如下
from sklearn.metrics.pairwise import haversine_distances haversine_distances([vector_1, vector_2])
半正矢距离的主要缺点是假设是一个球体,而这种情况很少出现。
汉明距离衡量两个二进制向量或字符串之间的差异。
对向量按元素进行比较,并对差异的数量进行平均。如果两个向量相同,得到的距离是0之间,如果两个向量完全不同,得到的距离是1。
Python代码如下
from scipy.spatial import distance distance.hamming(vector_1, vector_2)
汉明距离有两个主要缺点。距离测量只能比较相同长度的向量,它不能给出差异的大小。所以当差异的大小很重要时,不建议使用汉明距离。
统计距离测量可用于假设检验、拟合优度检验、分类任务或异常值检测。
Jaccard指数用于确定两个样本集之间的相似性。它反映了与整个数据集相比存在多少一对一匹配。Jaccard指数通常用于二进制数据比如图像识别的深度学习模型的预测与标记数据进行比较,或者根据单词的重叠来比较文档中的文本模式。
Jaccard距离的计算方法为:
Python代码如下
from scipy.spatial import distance distance.jaccard(vector_1, vector_2)
Jaccard指数和距离的主要缺点是,它受到数据规模的强烈影响,即每个项目的权重与数据集的规模成反比。
Sörensen-Dice指数类似于Jaccard指数,它可以衡量的是样本集的相似性和多样性。该指数更直观,因为它计算重叠的百分比。Sörensen-Dice索引常用于图像分割和文本相似度分析。
计算公式如下:
Python代码如下
from scipy.spatial import distance distance.dice(vector_1, vector_2)
它的主要缺点也是受数据集大小的影响很大。
动态时间规整是测量两个不同长度时间序列之间距离的一种重要方法。可以用于所有时间序列数据的用例,如语音识别或异常检测。
为什么我们需要一个为时间序列进行距离测量的度量呢?如果时间序列长度不同或失真,则上述面说到的其他距离测量无法确定良好的相似性。比如欧几里得距离计算每个时间步长的两个时间序列之间的距离。但是如果两个时间序列的形状相同但在时间上发生了偏移,那么尽管时间序列非常相似,但欧几里得距离会表现出很大的差异。
动态时间规整通过使用多对一或一对多映射来最小化两个时间序列之间的总距离来避免这个问题。当搜索最佳对齐时,这会产生更直观的相似性度量。通过动态规划找到一条弯曲的路径最小化距离,该路径必须满足以下条件:
我们可以使用 Python 中的 fastdtw 包:
from scipy.spatial.distance import euclidean from fastdtw import fastdtw distance, path = fastdtw(timeseries_1, timeseries_2, dist=euclidean)
动态时间规整的一个主要缺点是与其他距离测量方法相比,它的计算工作量相对较高。
在这篇文章中,简要介绍了十种常用的距离测量方法。本文中已经展示了它们是如何工作的,如何在Python中实现它们,以及经常使用它们解决什么问题。如果你认为我错过了一个重要的距离测量,请留言告诉我。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!