机器学习笔记之KNN

KNN概述

k 近邻算法(k-Nearest Neighbour algorithm),又称为KNN算法,是数据挖掘技术中原理最简单的算法。KNN
的工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻
近的k个实例,如果这k个实例的多数属于某个类别,那么新数据就属于这个类别。可以简单理解为:由那些离X最
近的k个点来投票决定X归为哪一类。

k 近邻算法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。k 近邻算法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻算法不具有显式的学习过程。

k 近邻算法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。 k值的选择、距离度量以及分类决策规则是k近邻算法的三个基本要素。

一句话总结:近朱者赤近墨者黑!

KNN 原理

KNN 工作原理

假设有一个带有标签的样本数据集(训练样本集),其中包含每条数据与所属分类的对应关系。
输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较。
计算新数据与样本数据集中每条数据的距离。
对求得的所有距离进行排序(从小到大,越小表示越相似)。
取前 k (k 一般小于等于 20 )个样本数据对应的分类标签。
求 k 个数据中出现次数最多的分类标签作为新数据的分类。

KNN 通俗理解

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

KNN 算法步骤

(1) 计算已知类别数据集中的点与当前点之间的距离;
(2) 按照距离递增次序排序;
(3) 选取与当前点距离最小的k个点;
(4) 确定前k个点所在类别的出现频率;
(5) 返回前k个点出现频率最高的类别作为当前点的预测类别。

算法总结

|k-近邻|
|:-|:-
|算法功能 |分类(核心),回归
|算法类型 |有监督学习 - 惰性学习,距离类模型
|数据输入 |包含数据标签y,且特征空间中至少包含k个训练样本(k>=1) 特征空间中各个特征的量纲需统一,若不统一则需要进行归一化处理 自定义的超参数k (k>=1)
|模型输出 | 在KNN分类中,输出是标签中的某个类别 在KNN回归中,输出是对象的属性值,该值是距离输入的数据最近的k个训练样本标签的平均值

优点

简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归
可用于数值型数据和离散型数据
无数据输入假定
适合对稀有事件进行分类

缺点

计算复杂性高;空间复杂性高;
计算量太大,所以一般数值很大的时候不用这个,但是单个样本又不能太少,否则容易发生误分。
样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少)
可理解性比较差,无法给出数据的内在含义

参考

ApacheCN

打赏

请我喝杯咖啡吧~

支付宝
微信