继续讲解!KNN 是一种简单的分类算法,其核心思想是通过计算待分类样本与训练样本的距离,找到距离最近的 K 个样本,然后根据这 K 个样本的类别进行投票,决定待分类样本的类别。之前看了KNN算法的仿真程序,该程序用的是欧式距离进行分类判决的标准,还能用其他距离进行度量分类吗?比如使用曼哈顿距离、余弦相似度这两个距离度量方法。本文下半部分给出了相关的算法程序,并进行性能比较。先来看看这几种距离度量方法的差异!
曼哈顿距离、余弦相似度和欧式距离也是常见的距离度量方法,在分类算法中有不同的应用场景和效果。它们的差异可以从以下几个方面进行比较:
适用场景:
曼哈顿距离:适合于问题中每个维度的差异需要平等处理,且数据中的各个维度具有相同的权重时,例如一些离散数据或交通网络问题。
余弦相似度:常用于文本数据分析、推荐系统等领域,尤其适合当关注的是向量的方向而非大小时。适用于高维稀疏数据,例如TF-IDF特征向量。
欧式距离:广泛应用于几何空间中的点间距离计算,适用于各个维度具有相同的度量单位,并且数据点之间的绝对差异对分类任务有影响时。
敏感性差异:
曼哈顿距离:对数据的尺度变化较为敏感。如果数据的某个维度变化较大,曼哈顿距离会倾向于该维度,从而导致对某些维度的过度强调。
余弦相似度:不受数据大小的影响,只考虑数据间的相对方向,常用于文本分析中,不关注数据的绝对大小。
欧式距离:对数据的尺度变化非常敏感,尺度不同的特征可能影响最终的分类结果。
计算复杂度:
曼哈顿距离和欧式距离的计算复杂度基本相同,都是O(n)(n为特征维度的数量),因为它们直接对每个维度进行处理。
余弦相似度需要计算向量的点积和模长,计算过程稍复杂,但对稀疏数据更有效。
看一下使用曼哈顿距离进行分类的程序示例!