机器学习(一)---k-近邻算法

K-近邻算法简要

简单来说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。(即近朱者赤,近墨者黑)

  1. k-近邻算法原理
  2. k-近邻算法的三要素
  3. k-近邻算法的基本流程
  4. k-近邻算法优缺点
  5. k-近邻算法的适用数据范围

k-近邻算法原理

存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的进行比较,然后算法提取样本集中最相似数据(最近邻)的分类标签。一般来说,只选择样本数据集中前k个最相似的数据,通常k值是不大于20的整数。最后选择k个最相似数据中出现次数最多的分类(物以类聚,人以群分),作为新数据的分类。

k-近邻算法的三要素

k值的选择,距离度量和分类决策规是该算法的三个基本要素

  1. K 值的选择会对算法的结果产生重大影响。K值较小意味着只有与输入实例较近的训练实例才会对预测结果起作用,但容易发生过拟合;如果 K 值较大,优点是可以减少学习的估计误差,但缺点是学习的近似误差增大,这时与输入实例较远的训练实例也会对预测起作用,使预测发生错误。在实际应用中,K 值一般选择一个较小的数值,通常采用交叉验证的方法来选择最优的 K 值。随着训练实例数目趋向于无穷和 K=1 时,误差率不会超过贝叶斯误差率的2倍,如果K也趋向于无穷,则误差率趋向于贝叶斯误差率。(
  2. 该算法中的分类决策规则往往是多数表决,即由输入实例的 K 个最临近的训练实例中的多数类决定输入实例的类别
  3. 距离度量一般采用 Lp 距离,当p=2时,即为欧氏距离,在度量之前,应该将每个属性的值规范化,这样有助于防止具有较大初始值域的属性比具有较小初始值域的属性的权重过大。

估计误差与近似误差

估计误差度量的是预测结果与最优结果的相近程度。估计误差主要包含四个部分:系统误差、随机误差、过失误差、精密度和精确度。就K-近邻算法来讲,如果K值比较小,那么例如像噪点,错误的数据,不恰当的度量标准以及数据本身的缺陷等,都会很大程度上影响最终的结果,而如果K值比较大,那么以上缺陷就会尽可能的平均,从而减小对最终结果的影响。

近似误差是度量与最优误差之间的相似程度。就K近邻算法来讲,K值越小,那么与目标点相近的点的标签对于其目标点的影响也就越大,其标签的一致性就越高,这样近似误差就会变小。

k-近邻算法的基本流程

Step 1:计算出k个最近邻样本点

Step 1.1:计算目标样本到训练集每个样本之间的距离:d(x,y)=||x-y||2

Step 1.2:对距离排序

Step 1.3:距离最近的k个样本即邻居

Step 2:投票表示目标样本属于哪个类别

k-近邻算法优缺点

优点:精度高、对异常值不敏感、无数据输入假定,适用于多分类问题

缺点:计算复杂度高、空间复杂度高,KNN是一种消极学习方法、lazy-learning算法。

k-近邻算法适用数据范围

适用数据范围:数值型和标称型

在准备数据时,处理不同取值范围的特征值时,通常采用的方法是将数值归一化。比如将取值范围处理为(0,1),即newvalue=(oldvalue-min)/(max-min)

猜你喜欢

转载自blog.csdn.net/qq_40934293/article/details/82796083