机器学习算法系列(一)

机器学习算法之–K近邻法

1、算法原理

1.1 核心思想

给定一个训练数据集,对于新输入的实例,在训练数据集中找到与该实例最近的k个实例,这k个实例的多数属于某个类,就将该输入实例划分为某个类

通俗来说,就是未标记的样本类别,由距离其最近的k个邻居投票决定,少数服从多数

1.2 伪代码

x_train: 已标记样本;x_test:待标记样本

  • 遍历X_train中所有样本,计算每个样本与X_test的距离,将距离保存在Distance数组中;
  • 将Distance数组排序,取距离最近的k个点,记为x_knn;
  • 在x_knn中统计每个类别的个数;
  • 待标记样本类别=x_knn中样本个数组多的那个类别。

1.3 优缺点

优点:准确性高,对异常值与噪声有较高的容忍度。
缺点:计算量大,内存需求大。

2、算法模型

k近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素构成——距离度量,k值选择和分类决策规则来决定。

2.1 距离度量

一般使用欧氏距离
当然除了欧式距离之外还可以采用 曼哈顿距离 等其他计算法,但要注意的是,由不同的距离度量所确定的最近邻点是不同的。

2.2 k值选择

k值的选择会对算法结果产生重大影响

  • k值越小,就相当于用较小的邻域中的训练实例来进行预测,只有与输入实例较近的训练实例,才会对预测结果起作用,学习的近似误差会越小,模型方差越大;换句话说,k值的减小就意味着整体模型变得复杂,k值太小时容易发生过拟合
  • k值越大,就相当于用较大邻域中的实例进行预测,模型偏差越大,对于噪声数据越不敏感;也就是k值的增大就意味着整体模型变得简单,k值太大时容易发生欠拟合

一般采取交叉验证法来选取合适的k值

2.3 分类决策规则

K近邻法中的分类规则往往是多数表决,也就是输入实例的k个邻近的训练实例中,多数类决定输入类。

3、算法优化

该算法实现最简单的就是线性扫描,也就是基于其基本思想。意味着要计算输入实例与每个训练实例的距离。当训练集很大时,时间复杂度非常高。

为了提高搜索效率,可考虑使用特殊的结构来存储训练数据,以减少计算距离的次数。如:K-D Tree、Ball Tree。

  • K-D Tree:基本思想:将距离信息存储在一棵树中(若A、B两点距离很远,而B、C又很近,则A与C也必定离得很远,可以根据该理念来实当避免大部分不必要的搜索,从而减少搜索的计算量)

  • Ball Tree是在kd树的基础上进一步优化之后的方法

以上就是关于k近邻算法的相关分享,喜欢的伙伴点个赞,关注一下呗~
若以上有任何不妥之处,欢迎各位不吝赐教!

你可能感兴趣的:(机器学习,机器学习,算法,人工智能)