简单理解机器学习中的L1距离,L2距离,L-Inf距离

Overview

这三个东西的话,都是用来算相似度的,用更准确的说法应该叫 ∣ ∣ L ∣ ∣ 1 ||L||_1 L1 ∣ ∣ L ∣ ∣ 2 ||L||_2 L2 ∣ ∣ L ∣ ∣ ∞ ||L||_{\infty} L,即数值分析中的1-范数、2-范数、无穷范数。接下来为了方便描述起见仅以二维空间下的两点 A ( x 1 , y 1 ) A(x_1,y_1) A(x1,y1) B ( x 2 , y 2 ) B(x_2,y_2) B(x2,y2)为例。


L1距离

曼哈顿距离,可以简单理解为只能横着走或竖着走: d 1 = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ d_1=|x_1-x_2|+|y_1-y_2| d1=x1x2+y1y2


L2距离

欧氏距离,也是我们平时最常用的,两点之间的直线距离: d 2 = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 {d_2} = \sqrt {{{({x_1} - {x_2})}^2} + {{({y_1} - {y_2})}^2}} d2=(x1x2)2+(y1y2)2


L-Inf距离

切比雪夫距离,可以理解为国际象棋中国王的走子法,有八个方向可以移动: d ∞ = max ⁡ ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) {d_\infty } = \max (|{x_1} - {x_2}|,|{y_1} - {y_2}|) d=max(x1x2,y1y2)


Summary

考虑这三种距离,距原点 ( 0 , 0 ) (0,0) (0,0)为1的所有点构成的集合如下:
在这里插入图片描述

### 回答1: 在Matlab中,normalize函数用于将向量或矩阵归一化为单位长度或单位范数。normalize函数的语法如下: 1. 对于向量: normVec = normalize(vec) 其中,vec为要归一化的向量,normalize函数将vec归一化为单位长度,并返回归一化后的向量normVec。 2. 对于矩阵: normMat = normalize(mat,dim) 其中,mat为要归一化的矩阵,dim为指定的维度,可以是12。当dim=1时,normalize函数将每一列归一化为单位长度;当dim=2时,normalize函数将每一行归一化为单位长度。normalize函数将归一化后的矩阵返回为normMat。 需要注意的是,normalize函数默认使用2-范数进行归一化,即将向量或矩阵的每个元素平方和开根号后除以该向量或矩阵的2-范数。如果需要使用其他范数进行归一化,可以在函数中指定p值,如下所示: normVec = normalize(vec,p) normMat = normalize(mat,dim,p) 其中,p为指定的范数值,可以是12Inf或其他正实数。当p=1时,normalize函数将向量或矩阵归一化为1-范数;当p=Inf时,normalize函数将向量或矩阵归一化为无穷范数。 ### 回答2: 在Matlab中,normalize函数的作用是将输入向量或矩阵归一化(normalize)成单位长度(norm为1),从而方便进行后续的计算或处理。 normalize函数的语法为: Y = normalize(X,dim,p) 其中,X为输入向量或矩阵;dim表示指定哪个维度(1表示列,2表示行)进行归一化,默认值为2;p表示要使用的范数的幂次,取值为12Infinfinity),分别对应L1范数、L2范数和L∞范数,其默认值为2。 若p为1,则函数使用L1范数,即对每个元素的绝对值求和,而对于二维输入,此时的normalize等效于对每列进行缩放,使其L1范数为1,也就是说X的每列元素绝对值和为1。例如: X = [1 2; 3 4; 5 6]; Y = normalize(X,1,1) 则得到结果Y: Y = 0.1667 0.2857 0.5000 0.4286 0.8333 0.5714 若p为2,则函数使用L2范数,即对每个元素的平方求和,而对于二维输入,此时的normalize等效于对每列进行缩放,使其L2范数为1,也就是说X的每列元素平方和为1。例如: X = [1 2; 3 4; 5 6]; Y = normalize(X,1,2) 则得到结果Y: Y = 0.1690 0.2843 0.5071 0.4730 0.8452 0.6617 若p为Inf,则函数使用L∞范数,即对每个元素的绝对值取最大值,而对于二维输入,此时的normalize等效于对每列进行缩放,使其L∞范数为1,也就是说X的每列元素绝对值最大值为1。例如: X = [1 2; 3 4; 5 6]; Y = normalize(X,1,Inf) 则得到结果Y: Y = 0.2000 0.3333 0.6000 0.4444 1.0000 0.5556 实际上,normalize函数还支持很多其他用法和选项,例如可用于多维矩阵、可指定输出数据类型、可指定输出的标准偏差等等,详情可以参见官方文档。归一化是很多数学、机器学习、图像处理等领域常用的操作,正是由于其方便快捷,normalize函数才受到了广泛的关注和应用。 ### 回答3: 在Matlab中,normalize函数是用于将向量或矩阵进行归一化处理的函数。归一化(也称为标准化)是指将数据缩放到一个固定的范围,以消除量纲单位和尺度差异的影响。一般来说,归一化可以使得数据更易于比较和分析,并且有助于提高分类和回归模型的准确性。 normalize函数的语法如下: - y = normalize(x):对向量x进行标准化处理,返回标准化后的向量y,其中y的长度等于x的长度。 - X2 = normalize(X1,dim):对矩阵X1沿指定维度dim(1表示列,2表示行)进行标准化处理,返回标准化后的矩阵X2。 normalize函数有三个输入参数: - x:需要进行标准化处理的向量或矩阵。 - dim:进行标准化处理的维度,可以是1(列)或2(行),默认为1- p:标准化方式,可以设置为’norm’(默认值)或’zscore’。’norm’是将向量或矩阵按照范数(即向量的长度)进行标准化处理,’zscore’是将向量或矩阵进行零均值标准化处理。 一般来说,在进行数据分析和建立模型时,常常需要对数据进行归一化处理,使得不同特征的取值范围和量级保持一致,避免出现偏差或变量之间的相关性被夸大。因此,normalize函数是Matlab中非常常用的函数之一,能够简单、高效地实现数据的归一化处理。当然,在实际应用中,需要根据具体的问题和数据特征选择合适的标准化方法和参数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值