欧氏距离,两点间或多点间的距离表示法,定义于欧几里得空间中,
如点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为:
缺点:会将样本不同属性(即各指标或各变量量纲)之间的差别等同看待,欧氏距离适用于向量各分量的度量标准统一的情况。
标准化欧氏距离:针对简单欧氏距离的缺点的一种改进方案。先将各个分量都“标准化”到均值、方差相等。假设样本集X的数学期望或均值(mean)为m,标准差(standard deviation,方差开根)为s,X的“标准化变量”X*表示为:(X-m)/s,标准化变量的数学期望为0,方差为1;
即:标准化后的值 = ( 标准化前的值 - 分量的均值 ) / 分量的标准差。
两个n维向量的标准化欧氏距离:
将方差的倒数看成是一个权重,可以看成是一种加权欧氏距离。
Python实现:
欧氏距离:
n维空间中两个点之间的真实距离。在二维和三维空间中的欧氏距离就是两点之间的直线距离。
x = np.array([[1, 2, 3, 4],[5, 6, 7, 8]])
y = np.array([[5, 6, 7, 8],[1, 2, 3, 4]])
euclidean_distance=np.sqrt(np.sum(np.square(x-y)))
print(euclidean_distance)
标准欧氏距离:先将各个分量都先进行标准化,再求得标准化后的欧氏距离。
X = np.vstack([x,y])
sk=np.var(X,axis=0,ddof=1)
standardized_euclidean_distance=np.sqrt(((x - y) ** 2 /sk).sum())
print(standardized_euclidean_distance)
曼哈顿距离:计算两个点在标准坐标系上的绝对轴距总和。
Python实现:
x = np.array([[1, 2, 3, 4],[5, 6, 7, 8]])
y = np.array([[5, 6, 7, 8],[1, 2, 3, 4]])
manhattan_distance=np.sum(np.abs(x-y))
print(manhattan_distance)
马氏距离,一种有效的计算两个未知样本集的相似度的方法;不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关;
由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。
马氏距离还可以排除变量之间的相关性的干扰;缺点是夸大了变化微小的变量的作用。
兰氏距离:
余弦距离:⼏何中夹⾓余弦可衡量两个向量⽅向的差异;
机器学习中可衡量样本向量间的差异。
夹⾓余弦取值范围为[-1,1],余弦越⼤两个向量的夹⾓越⼩,余弦越⼩两向量的夹⾓越⼤。
当两个向量的⽅向重合时余弦取最⼤值1,当两个向量的⽅向完全相反余弦取最⼩值-1。
余弦相似度与向量的幅值⽆关,只与向量的⽅向相关。
x = np.array([1, 2, 3, 4])
y = np.array([5, 6, 7, 8])
cosine_distance=np.dot(x,y)/(np.linalg.norm(x)*np.linalg.norm(y))
print(cosine_distance)
Tanimoto系数是Cosine相似度的拓展:
汉明距离:两个等长字符串s1与s2的汉明距离为将⼀个变为另外⼀个所需要作的最⼩替换次数。
x = np.array([1., 2., 3., 4.])
y = np.array([5., 6., 7., 8.])
x=np.asarray(x,np.int32)
y=np.asarray(y,np.int32)
hamming_distance=np.mean(x!=y)
print(hamming_distance)
交叉熵:熵描述了整个系统内部样本之间的距离,或称系统内样本分布的集中程度(⼀致程度)、分散程度、混乱程度(不⼀致程度)。系统内样本分布越分散(或者说分布越平均),信息熵就越⼤。分布越有序(或者说分布越集中),信息熵就越⼩。
欧⽒距离损失经常⽤在线性回归问题(求解的是连续问题)中,⽽交叉熵损失经常⽤在逻辑回归问题(求解的是离散的分类问题)上,⽤来作为预测值和真实标签值的距离度量。
经过卷积操作后,最后⼀层出来的特征经过softmax函数后会变成⼀个概率向量,可以看作为是概率分布q, ⽽真实标签可以看作是概率分布p, 真实分布p和预测分布q的交叉熵就是求的loss损失值。
x = np.array([1., 2., 3., 4.])
label=np.array([1,0,0,1])
def softmax(x=x):
return np.exp(x)/np.sum(np.exp(x),axis=0)
loss1=-np.sum(label*np.log(softmax(x)
皮尔逊相关系数 (Pearson Correlation Coefficient)
用于计算两个定距向量间联系的紧密程度,取值[−1, 1];相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或−1(负线性相关)
集合相似度
杰卡德相似系数
两个集合A和B的交集元素在A、B的并集中所占的比例,称为两个集合的杰卡德相似系数,
用符号J(A,B)表示,,衡量两个集合的相似度。
杰卡德距离:与杰卡德相似系数相反的概念,杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
参考: