COMP 9417 T2_2021 Lesson5

Pg: 45-End


由于下面要学KNN,素以教授先介绍了各种距离的测算方法并且之间的比较。


k最近邻(KNN)算法是有监督的机器学习算法,可用于解决***分类和回归***问题。算法的具体方式后面会讲(按照老师PPT顺序来)。

课中说了下面的距离公式不用会推导,但是要理解:


Minkowski distance,曼哈顿距离,欧氏距离


在这里插入图片描述
Minkowski distance其实不是描述两个点之间的距离,而是表示Distance metric。 两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)。比如我们要知道两个城市的距离,由于我们只能在向量空间中计算Minkowski距离,因为“在一个空间中,距离可以表示为一个有长度的向量。”

如果我们拿一张地图,我们会看到城市之间的距离是赋范向量空间,因为我们可以在地图上画一个连接两个城市的向量。我们可以组合多个向量来创建一条连接两个以上城市的路线。这种向量有长度,没有向量有负长度。这种限制也得到了满足,因为如果我们在地图上的城市之间画一条线,我们就可以测量它的长度。那么Minkowski距离-要求向量0的长度为零,其他向量的长度都是正数。如果我们看一张地图,这是显而易见的。从一个城市到同一个城市的距离是零,向量乘以一个正数可以改变它的长度而不改变它的方向我们向北走了50公里。如果我们在同一个方向再行驶50公里,我们最终将向北行驶100公里。方向不变。

结合公式,Minkowski distance是一个基础,曼达顿距离就是p=1的情况是所有坐标的绝对差之和。对于我们的例子来说,这是一个完美的距离度量。当我们可以使用一个城市的地图时,我们可以告诉人们应该向北走两个路口,然后左转,再走三个路口。他们总共要走五个街区,也就是从起点到终点的曼哈顿距离。
在这里插入图片描述
如果我们再看一看用于解释曼哈顿距离的城市街区示例,我们会发现,行进路径由两条直线组成。当我们画另一条连接起点和终点的直线时,我们就得到了一个三角形。在这种情况下,可以使用勾股定理计算点之间的距离。
在这里插入图片描述
所以我们知道了基于 Minkowski distance, p是一个参量, p p选取不同的值,表示不同的距离:
p = 1 时,表示曼哈顿距离;
p = 2 时,表示欧式距离;
p → ∞ 时,表示切比雪夫距离

切比雪夫距离
在这里插入图片描述

这是Minkowski距离的极端情况。当我们使用无穷大作为参数p的值时,我们最终得到一个度量,它将距离定义为坐标之间的最大绝对差。一个例子:在仓库中,如果使用龙门吊,位置之间的距离可以表示为切比雪夫距离,因为龙门吊总是以相同的速度同时在两个轴上移动。

然后他提到了L0正则,前面我们学过了L1和L2。L0范数实际上不是一个范数。它是基数函数,其定义形式为L0-norm。因为其中存在零次幂和零次方。显然,任何x> 0都将变为1。L0范数的一个很好的实用示例是当具有两个向量(用户名和密码)时给出Nishant Shukla的示例。 如果向量的L0范数等于0,则登录成功。 否则,如果L0范数为1,则意味着用户名或密码不正确,但都不正确。 最后,如果L0规范为2,则意味着用户名和密码都不正确。

汉明距离:两个字符串中具有相同符号的位置数。仅为长度相等的字符串定义。
距离(‘abcdd’,‘abbcd’)=3
Levenshtein距离:将字符串a转换为字符串b所需的最小插入、删除和替换次数。

在这里插入图片描述
距离度量(Distance Metrics)

点与自身之间的距离为零:Dis(x,x) =0;
所有其他距离都大于零:如果x notequale y,则Dis(x,y)>0;
个距离是对称的:Dis(y,x) =Dis(x,y) ;
连接不能缩短距离:Dis(x, z) Dis(x,y) + Dis(y,z).

后面讲到了mean, medoids的一些。
Kmeans算法是一种迭代算法,它尝试将数据集划分为K个定义的不同非重叠子组(群集),其中每个数据点仅属于一个组。 它尝试使群集内的数据点尽可能相似,同时还要使群集尽可能不同(远)。 它将数据点分配给群集,以使数据点和群集质心(属于该群集的所有数据点的算术平均值)之间的平方距离之和最小。 群集内的变化越少,同一群集内的数据点越齐(相似)。

kmeans算法的工作方式如下:

指定集群数K。
通过首先对数据集进行混洗,然后为质心随机选择K个数据点而不进行替换来初始化质心。
不断进行迭代,直到质心没有变化为止。 也就是说,将数据点分配给群集的过程没有改变。
计算数据点和所有质心之间的平方距离之和。

将每个数据点分配给最近的群集(质心 Centroids)。

通过取属于每个群集的所有数据点的平均值,计算群集的新质心。

K-Medoids(中心点)算法不选用平均值,转而采用 簇中位置最中心的对象,即中心点(medoids) 作为参照点,算法步骤也和 K-means 类似,其实质上是对 K-means算法的改进和优化。k-mediods 每次选取的质心,必须是样本点,而 k-means每次选取的质心可以是样本点之外的点,就好比中位数和平均值的区别。


Pg62之前的弄明白其实也就知道了KNN,Kmean这些算法了。


由于可以是分类或者回归,这里先讲分类- KNN算法。

在分类变量的情况下,必须使用Hamming距离。 当数据集中存在数字变量和分类变量时,它还会提出0到1之间的数字变量标准化的问题。

步骤
KNN算法
1.加载数据

2.将K初始化为您选择的邻居数

3.对于数据中的每个示例:

3.1根据数据计算查询示例与当前示例之间的距离。
3.2将示例的距离和索引添加到有序集合中

4.按距离对从最小到最大(按升序)的距离和索引的有序集合进行排序

5.从排序的集合中选择前K个条目

6.获取所选K条目的标签

7.如果回归,则返回K标签的均值
在这里插入图片描述

8.如果分类,则返回K标签的模式

不同的特征往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果。归一化的具体作用是归纳统一样本的统计分布性。归一化在0~1之间是统计的概率分布。

什么时候用:
特征少,数据多,无解释性模型。

优点
该算法简单易实现。
无需构建模型,调整多个参数或进行其他假设。
该算法是通用的。 它可以用于分类,回归和搜索。

缺点
随着示例和/或预测变量/独立变量的增加,该算法变得明显变慢。维度诅咒,Noise问题
在这里插入图片描述

加权KNN
weight = 1 / (distance + const)

完全一样或非常接近的权重会很大甚至无穷大。基于这样的原因,在距离求倒数时,在距离上加一个常量const。

交叉验证找到合适的K。

纬度诅咒的缺点:
如果我们的特征比观察的要多,那么我们的模型可能会有大规模过度拟合的风险——这通常会导致糟糕的样本外性能。
当我们有太多的特征时,观察结果就更难聚集,太多的维度会导致数据集中的每个观察结果看起来都与其他观察结果等距。由于聚类使用欧几里得距离等距离测量来量化观测之间的相似性,并且无法形成有意义的集群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值