飘逸的海龟 · Python ...· 4 月前 · |
侠义非凡的甘蔗 · mysql服务器后台运行sql文件。 - ...· 1 年前 · |
爱看书的钥匙 · java迷宫游戏程序 ...· 1 年前 · |
淡定的炒饭 · Qt怎样生成随机数-百度经验· 1 年前 · |
酒量小的小虾米 · Redis 哈希(Hash) | 菜鸟教程· 1 年前 · |
曲线相似度计算方法用于衡量两个或多个曲线之间的相似程度,不同的曲线相似度计算方法适用于不同的数据类型和应用场景。
选择合适的曲线相似度计算方法取决于数据的性质、应用场景以及相似性的定义方式。有些方法适用于时间序列数据,有些则适用于图像、形状等不同类型的数据。了解每种方法的特点和适用场景,可以在具体应用中选择合适的计算方法来衡量曲线之间的相似性。
欧几里德距离(Euclidean Distance)
:
特点:简单易懂,计算方法直观。
适用场景:适用于曲线样本数相同的情况,当曲线具有明显的平移和缩放变换时表现较好。
动态时间规整(Dynamic Time Warping,DTW)
:
特点:考虑了时间轴的变化,能够捕捉曲线的形状相似性。对于时间轴缩放和平移具有一定的容忍性。
适用场景:适用于曲线在时间上存在变换、平移、扭曲等情况,比如语音识别、时间序列数据分析等。
余弦相似度(Cosine Similarity)
:
特点:忽略了曲线的振幅,只关注其方向。适用于振幅不重要的情况。
适用场景:文本分类、推荐系统中用户兴趣相似性等。
皮尔逊相关系数(Pearson Correlation Coefficient)
:
特点:衡量线性相关性,取值范围在-1到1之间。
适用场景:适用于评估两个变量之间的线性关系,不仅限于时间序列数据。
曼哈顿距离(Manhattan Distance)
:
特点:考虑了各维度之间的差异,适用于具有多维度的曲线数据。
适用场景:图像识别、多维时间序列分析等。
动态核相关(Dynamic Kernel Correlation,DKC)
:
特点:将时间序列映射到高维特征空间中,计算相关性。可以捕获非线性关系。
适用场景:适用于非线性关系较为复杂的时间序列数据。
平均绝对误差(Mean Absolute Error,MAE)
:
特点:衡量实际值和预测值之间的差异。
适用场景:用于衡量预测模型的精度,例如回归模型的性能评估。
欧几里德距离(Euclidean Distance)
:
计算两个向量(或曲线)之间的欧几里德距离,即两点之间的直线距离。
计算公式:
\text{DTW}(i, j) = |x[i] - y[j]| + \min(\text{DTW}(i-1, j), \text{DTW}(i, j-1), \text{DTW}(i-1, j-1))
DTW
(
i
,
j
)
=
∣
x
[
i
]
−
y
[
j
]
∣
+
min
(
DTW
(
i
−
1
,
j
)
,
DTW
(
i
,
j
−
1
)
,
DTW
(
i
−
1
,
j
−
1
)
)
余弦相似度(Cosine Similarity)
:
衡量两个向量(或曲线)之间的夹角,而不考虑振幅。
计算公式:
\text{Cosine Similarity} = \frac{\sum_{i=1}^{n} x_i \cdot y_i}{\sqrt{\sum_{i=1}^{n} x_i^2} \cdot \sqrt{\sum_{i=1}^{n} y_i^2}}
Cosine Similarity
=
∑
i
=
1
n
x
i
2
⋅
∑
i
=
1
n
y
i
2
∑
i
=
1
n
x
i
⋅
y
i
皮尔逊相关系数(Pearson Correlation Coefficient)
:
衡量两个变量之间的线性关系程度。
计算公式:
\text{Pearson Correlation} = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n} (x_i - \bar{x})^2} \cdot \sqrt{\sum_{i=1}^{n} (y_i - \bar{y})^2}}
Pearson Correlation
=
∑
i
=
1
n
(
x
i
−
x
ˉ
)
2
⋅
∑
i
=
1
n
(
y
i
−
y
ˉ
)
2
∑
i
=
1
n
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
曼哈顿距离(Manhattan Distance)
:
计算两个向量(或曲线)之间的绝对差值之和。
计算公式:
MAE
=
n
1
i
=
1
∑
n
∣
x
i
−
y
i
∣
只是给出了一个简化实例,没使用任何外部库,仅使用标准库中的基本数学函数。对于一些方法,如动态时间规整(DTW)和动态核相关(DKC),需要进行更详细的数学计算。
import numpy as np
# 欧氏距离
euclidean_distance = np.sqrt(np.sum((x - y)**2))
# 动态时间规整(DTW)
def dtw_distance(x, y):
n, m = len(x), len(y)
dtw_matrix = np.zeros((n + 1, m + 1))
for i in range(1, n + 1):
for j in range(1, m + 1):
cost = abs(x[i - 1] - y[j - 1])
dtw_matrix[i, j] = cost + min(dtw_matrix[i - 1, j], dtw_matrix[i, j - 1], dtw_matrix[i - 1, j - 1])
return dtw_matrix[n, m]
# 余弦相似度
cosine_similarity = np.dot(x, y) / (np.linalg.norm(x) * np.linalg.norm(y))
# 皮尔逊相关系数
pearson_correlation = np.corrcoef(x, y)[0, 1]
# 曼哈顿距离
manhattan_distance = np.sum(np.abs(x - y))
# 动态核相关(DKC)
def dkc_distance(x, y):
sigma = 1.0 # 高斯核的带宽
k_x = np.exp(-np.sum((x - x)**2) / (2 * sigma**2))
k_y = np.exp(-np.sum((y - y)**2) / (2 * sigma**2))
dkc_distance = np.dot(k_x, k_y)
return dkc_distance
# 平均绝对误差(MAE)
mae = np.mean(np.abs(x - y))
print("MAE:", mae)
1. 什么条件下两条曲线最相似
那肯定是在定义域[a, b]中,两条曲线完全重合。用数学语言
∀x∈[a,b],f1(x)=f2(x)\forall x \isin [a, b], f_1(x) =f_2(x)∀x∈[a,b],f1(x)=f2(x)或者∀x∈[a,b],f1(x)−f2(x)=0(1)\forall x \isin [a, b], f_1(x) -f_2(x)=0 \tag{1}∀x∈[a,b],f1(x)−f2(x)=0(1) 然而,∀\forall∀符号是不利于我们计算的,因.
时间序列相似性属于曲线相似性/曲线匹配(curve matching)领域的内容,在这一领域,有许多有用的方法,但是国内的博客上鲜有这方面的内容,因此我选取了几种常用的方法进行一下综述性的阐述。衡量相似性之前,我们首先定义“相似”。正常情况下,我们认为x,y,z是形状相似的,在这三条曲线中,我们认为y,z是最相似的两条曲线(因为y,z的距离最近)。ok,那我们先来看看寻常意义上的相似:距离最近且形...
2. 基于形状的方法
衡量两条曲线f1(x,y)f_1(x,y)f1(x,y)与f2(x,y)f_2(x,y)f2(x,y)的相似度,从传统特征工程的角度来讲,思路无外乎是设计不同的特征空间,将曲线映射到特征空间里面再进行相似度的对比,这种相似度的对比实际上就是在特征空间里面的欧式距离了。目前而言,常用的设计思路主要是出于两个方面设计,一个是从...
便于计算的离散距离求解
Alt, Helmut, and Michael Godau. “Computing the Fréchet distance between two polygonal curves.” International Journal of Computational Geometry &am
曲线相似性计算,如果两条之间存在直接影响,更要关注特征的连续性,如果两条受同一条影响,更要关注特征的离散最大性。
设xn为A的波动数据序列,yn为B的波动数据序列,其中n=1…N。A与B的相关系数可以通过如下公式计算:
本文内容来自知乎:医小咖里面有许多关于医学统计方法,非常实用,转载以方便查阅多图实例:教你绘制ROC曲线 在选择诊断试验时,许多研究者会在灵敏度和特异度之间进行艰难的取舍。那么,是否可以综合考虑灵敏度和特异度的特点,根据一个指标评价诊断试验的准确性呢?Lusted于1971年提出受试者工作特征曲线(receiver operating characteristic curve...
对于初学者,从David G.Lowe的论文到实现,有许多鸿沟,本文帮你跨越。
1、SIFT综述
尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe在1999年所发表,20
而寻找图像特征点,我们要先知道一个概念,就是“图像尺度空间”。
平时生活中,用人眼去看一张照片时,随着观测距离的增加,图像会逐渐变得模糊。那么计算机在“看”一张照片时,会从不同的“尺度”去观测照片,尺度越大,图像越模糊。
那么这里的“尺度”就是二维高斯函数当中的σ值,一张照片与二维高斯...