K近邻分类的算法实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
K近邻分类的算法实现
K近邻(KNN)法的输入为实例的特征向量,对应于特征空间的点;输入为实例的类别,可以取多类。K近邻法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此K近邻不具有显式的学习过程。K近邻法实际上是利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。
1.1 选题背景
现如今,数据的爆炸式增长、广泛可用和巨大数量使得我们的时代成为真正的数据时代。急需功能强大和通用的工具,以便从这些海量数据中发现有价值的信息,把这些数据转化成有组织的知识。这种需求导致了数据挖掘的诞生。这个领域是年轻的、动态变化的、生机勃勃的。数据挖掘已经并且将继续在我们从数据时代大步跨入信息时代的历程中作出贡献。
K近邻方法是20世纪50年代早期首次引进的。当给定大量数据集时,该方法是计算密集的,直到20世纪60年代计算能力大大增强之后才流行起来。此后它广泛用于模式识别领域。
K近邻分类法是基于类比学习,即通过将给定的检验元组与它相似的训练元组进行比较来学习。训练元组用n个属性描述。每个元组代表n维空间的一个点。这样,所有的训练元组都存放在n维模式空间中。当给定一个未知元组时,k近邻分类法搜索模式空间,找出最接近元组的k个训练元组。这k个训练元组即为该元组的k个“最近邻”。
1.2 研究现状
国内外学者为此算法在实际生活中更好地应用做出了许多努力。例如对k近邻方法的不足做出的一些改进如文献[2],[7],[8],[9],[10]等等。在其他领域的应用如文献[5]将K近邻算法改进为非线性分类算法,以达到分类动态心电图波形的目的。文献[6]在KNN算法的基础上提出了图像自动分类模型。在生物学上,K近邻方法也得到了广泛地应用,有文献利用蛋白质相互作用网络,提出
了一种基于K 近邻的蛋白质功能的注释方法,该方法使得蛋白质的功能能够得到更有效的预测[4]。还有很多其他领域的一些应用,显示了机器学习在21世纪越来越重要的作用。
本论文主要研究实现K 近邻分类算法,体会在如今大数据时代机器学习的意义,为今后进一步学习数据挖掘打下基础。
第二章 k 近邻模型和算法
2.1 K 近邻模型
K 近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素
—-距离度量、k 值得选择和分类规则决定。
2.1.1 模型
K 近邻法中,当训练集、距离度量(如欧式距离)、k 值及分类决策规则(如多数表决)确定后,对于任何一个新的输入实例,它所属的类唯一确定。这相当于根据上述要素将特征空间划分为一些子空间,确定子空间里的每个点所述的类。这一事实从最近邻算法中可以看得很清楚。
特征空间中,对每个实例点i x
,距离该点比其他店更近的所有点组成一个区域,叫做单元。每个训练实例点拥有一个单元,所有训练实例点的单元构成对特
征空间的一个划分。最近邻法将实例i x 的类i y
作为其单元中所有点的类标记。这样,每个单元的实例点的类别时确定的。下图是二维特征空间划分的一个例子。
2.1.2 距离度量
特征空间中两个实例点的距离是两个点相似程度的反映。K 近邻模型的特征空间一般是n 维实数向量空间Rn 。使用的距离是欧式距离,但也可以是其他距离,如更一般的Lp 或闽科夫斯基距离。
设特征空间χ是n 维实数向量空间n R ,i x ,,),,,(,)
()
2()
1(T
n i i i i j x x x x x =∈χ ,),,,()
()2()1(T n j j j j x x x x =j
i x x ,的距离定义为P L
p
n
l p
l j l
i j i p x x x x L 11),(⎪
⎭⎫ ⎝⎛-=∑=
这里1≥p 。当2=p 时,称为欧式距离,即
2
1
122,⎪⎭⎫
⎝⎛-=∑=n
l l j
l i j i x x x x L )(
当时,称为曼哈顿距离,即
∑=-=n
l l
j l
i j i x x x x L 1
1,)
(
1=p
当∞=p 时,它是各个距离坐标的最大值,即
l j
l i l
j i x x x x L -=∞max ),(
2.1.3 K 值的选择
k 值的选择会对k 近邻法的结果产生重大影响。
如果选择较小的k 值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,只有与输入实例较近的(相似的)训练实例才会对预测结果起作用。但缺点是“学习”的估计误差会增大,预测结果会对近邻的实例点非常敏感。如果近邻的实例点恰巧是噪声,预测就会出错。换句话说,k 值得减小就意味着整体模型变得复杂,容易发生过拟合。
如果选择较大的k 值,就相当于用较大邻域中的训练实例进行预测。其优点是可以减少学习的估计误差。但缺点是学习的近似误差会增大。这时与输入实例较远的(不相似的)训练实例也会对预测起作用,是预测发生错误。K 值得增大就意味着整体的模型变得简单。
如果k=N ,那么无论输入实例是什么,都将简单的预测它属于在训练实例中最多的类。这时,模型过于简单,完全忽略训练实例中的大量有用信息,是不可取的。
2.1.4 分类决策规则
K 近邻法中的分类决策规则往往是多数表决,即由输入实例的k 个邻近的训练实例中的多数类决定输入实例的类。
多数表决规则有如下解释:如果分类的损失函数为0-1损失函数,分类函数为
}
,,,{:21k n c c c R f →
那么误分类的概率是
))((1))((X f Y P X f Y P =-=≠
对给定的实例χ∈x ,其最近邻的k 个训练实例点构成集合)(x N K 。如果涵盖)(x N K 的区域的类别是
j
c 那么误分类概率是
∑∑∈∈=-=≠)
()()(1
1)(1x N x j i x N x j i K i K i c y I k c y I k