⑴ 请比较k近邻,决策树和朴素贝叶斯这三种分类算法之间的异同点
决策树算法主要包括id3,c45,cart等算法,生成树形决策树,而朴素贝叶斯是利用贝叶斯定律,根据先验概率求算后验概率。
如果训练集很小,那么高偏差/低方差分类器(如朴素贝叶斯分类器)要优于低偏差/高方差分类器(如k近邻分类器),因为后者容易过拟合。然而,随着训练集的增大,低偏差/高方差分类器将开始胜出(它们具有较低的渐近误差),因为高偏差分类器不足以提供准确的模型。
一些特定算法的优点:
朴素贝叶斯的优点:
超级简单,你只是在做一串计算。如果朴素贝叶斯(NB)条件独立性假设成立,相比于逻辑回归这类的判别模型,朴素贝叶斯分类器将收敛得更快,所以只需要较小的训练集。而且,即使NB假设不成立,朴素贝叶斯分类器在实践方面仍然表现很好。
如果想得到简单快捷的执行效果,这将是个好的选择。它的主要缺点是,不能学习特征之间的相互作用(比如,它不能学习出:虽然你喜欢布拉德·皮特和汤姆·克鲁斯的电影,但却不喜欢他们一起合作的电影)。
逻辑回归的优点:
有许多正则化模型的方法,不需要像在朴素贝叶斯分类器中那样担心特征间的相互关联性。与决策树和支撑向量机不同,还可以有一个很好的概率解释,并能容易地更新模型来吸收新数据(使用一个在线梯度下降方法)。
如果想要一个概率框架(比如,简单地调整分类阈值,说出什么时候是不太确定的,或者获得置信区间),或你期望未来接收更多想要快速并入模型中的训练数据,就选择逻辑回归。
决策树的优点:
易于说明和解释(对某些人来说—我不确定自己是否属于这个阵营)。它们可以很容易地处理特征间的相互作用,并且是非参数化的,所以你不用担心异常值或者数据是否线性可分(比如,决策树可以很容易地某特征x的低端是类A,中间是类B,然后高端又是类A的情况)。
一个缺点是,不支持在线学习,所以当有新样本时,你将不得不重建决策树。另一个缺点是,容易过拟合,但这也正是诸如随机森林(或提高树)之类的集成方法的切入点。另外,随机森林往往是很多分类问题的赢家(我相信通常略优于支持向量机),它们快速并且可扩展,同时你不须担心要像支持向量机那样调一堆参数,所以它们最近似乎相当受欢迎。
(1)蚂蚱优化算法与k近邻有什么关系扩展阅读:
朴素贝叶斯算法:
设每个数据样本用一个n维特征向量来描述n个属性的值,即:X={x1,x2,…,xn},假定有m个类,分别用C1, C2,…,Cm表示。给定一个未知的数据样本X(即没有类标号),若朴素贝叶斯分类法将未知的样本X分配给类Ci,则一定是
P(Ci|X)>P(Cj|X) 1≤j≤m,j≠i
根据贝叶斯定理:
由于P(X)对于所有类为常数,最大化后验概率P(Ci|X)可转化为最大化先验概率P(X|Ci)P(Ci)。如果训练数据集有许多属性和元组,计算P(X|Ci)的开销可能非常大,为此,通常假设各属性的取值互相独立,这样
先验概率P(x1|Ci),P(x2|Ci),…,P(xn|Ci)可以从训练数据集求得。
根据此方法,对一个未知类别的样本X,可以先分别计算出X属于每一个类别Ci的概率P(X|Ci)P(Ci),然后选择其中概率最大的类别作为其类别。
朴素贝叶斯算法成立的前提是各属性之间互相独立。当数据集满足这种独立性假设时,分类的准确度较高,否则可能较低。另外,该算法没有分类规则输出。
TAN算法(树增强型朴素贝叶斯算法)
TAN算法通过发现属性对之间的依赖关系来降低NB中任意属性之间独立的假设。它是在NB网络结构的基础上增加属性对之间的关联(边)来实现的。
实现方法是:用结点表示属性,用有向边表示属性之间的依赖关系,把类别属性作为根结点,其余所有属性都作为它的子节点。通常,用虚线代表NB所需的边,用实线代表新增的边。属性Ai与Aj之间的边意味着属性Ai对类别变量C的影响还取决于属性Aj的取值。
这些增加的边需满足下列条件:类别变量没有双亲结点,每个属性有一个类别变量双亲结点和最多另外一个属性作为其双亲结点。
⑵ k近邻算法的概念介绍
用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。根据这个说法,咱们来看下引自维基网络上的一幅图:
⑶ 为什么k临近算法不能处理特征很多的数据集
机器学习中常常要用到分类算法,在诸多的分类算法中有一种算法名为k-近邻算法,也称为kNN算法。
一、kNN算法的工作原理
二、适用情况
三、算法实例及讲解
---1.收集数据
---2.准备数据
---3.设计算法分析数据
---4.测试算法
一、kNN算法的工作原理
官方解释:存在一个样本数据集,也称作训练样本集,并且样本中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的新数据后,将新数据的每个特征与样本集中的数据对应的特征进行比较,然后算法提取样本集中特征最相似的数据(最近邻)的分类标签。一般来说,我们只选择样本集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数,最后,选择k个最相似的数据中出现次数最多的分类,作为新数据的分类。
我的理解:k-近邻算法就是根据“新数据的分类取决于它的邻居”进行的,比如邻居中大多数都是退伍军人,那么这个人也极有可能是退伍军人。而算法的目的就是先找出它的邻居,然后分析这几位邻居大多数的分类,极有可能就是它本省的分类。
二、适用情况
优点:精度高,对异常数据不敏感(你的类别是由邻居中的大多数决定的,一个异常邻居并不能影响太大),无数据输入假定;
缺点:计算发杂度高(需要计算新的数据点与样本集中每个数据的“距离”,以判断是否是前k个邻居),空间复杂度高(巨大的矩阵);
适用数据范围:数值型(目标变量可以从无限的数值集合中取值)和标称型(目标变量只有在有限目标集中取值)。
⑷ KNN算法,k近邻
K最近邻(k-Nearest Neighbour,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
⑸ K近邻聚类算法
推荐本书吧
Wiley - Pattern Classification, 2Ed.pdf
有中文版的但是不好找 上面很详细 还包括其他算法
⑹ k近邻算法特征值非数字
k-近邻算法采用测量不同特征值之间的距离来进行分类。
优点:精度高,对异常值不敏感,无数据输入假定。缺点:计算复杂度高、空间复杂度高。适用数据范围:数值型和分类型。原理:首先,我们必须得有一份含有分类标签的数据集,为训练数据集。比如我们要预测用户是否会流失,那么分类标签就是流失和未流失。然后有一份新的数据集,这份数据集并没有分类标签,k-近邻算法就会将新的数据集和训练数据集进行比较,从训练数据集中选出与新数据集每个数据最相近的K个数据,查看这K个数据所属标签哪类最多,比如流失,就把新数据集中的那个数据分类为流失。怎么判断是否相近呢?K-近邻是计算不同数据的距离。k-近邻算法的原理伪代码。
对未知类别属性的数据集中的每个数据点依次执行以下操作:(1)计算已知类别数据集中的点与当前点之间的距离。(2)按照距离递增次序排序。(3)选出与当前距离最近的K个点。(4)统计出K个点所属类别的频率。(5)返回K个点出现频率最高的的类别作为当前点的预测类别
⑺ 计算机学习的分类
分类;数据挖掘 分类是数据挖掘的重要任务之一,分类在实际应用中有广泛的应用,如医疗事业、信用等级等。近年来,分类方法得到了发展,本文对这些方法进行了归纳分析,总结了今后分类方法发展的方向。 1引言 分类是学会一个分类函数或分类模型,该模型能把数据库中的数据项映射到给定类别中的某一个。分类可用于提取描述重要数据类的模型或预测未来的数据趋势。分类可描述如下:输入数据,或称训练集是一条条记录组成的。每一条记录包含若干条属性,组成一个特征向量。训练集的每条记录还有一个特定的类标签与之对应。该类标签是系统的输入,通常是以往的一些经验数据。一个具体样本的形式可为样本向量:。在这里vi表示字段值,c表示类别。 分类作为数据挖掘的一个重要分支,在商业、医学、军事、体育等领域都有广泛的应用,在过去的十多年中引起很多来自不同领域学者的关注和研究。除了基本的统计分析方法外,数据挖掘技术主要有:神经网络、决策树、粗糙集、模糊集、贝叶斯网络、遗传算法、k近邻分类算法与支持向量机等。 不同的分类器有不同的特点,目前有三种分类器评价或比较尺度:1)预测准确度。预测准确度是用得最多的一种比较尺度,特别是对于预测型分类任务,目前公认的方法是10折分层交叉验证法;2)计算复杂度。计算复杂度依赖于具体的实现细节和硬件环境,空间和时间的复杂度问题将是非常重要的一个环节;3)模型描述的简洁度。模型描述越简洁越受欢迎,如采用规则表示的分类器结果就较容易理解,而神经网络方法产生的结果就难以理解。不同的算法有不同的特点,充分认识各算法的优点和存在的缺陷,掌握其适应的环境,方便研究者明确算法的改进和研究,本文主要对算法的研究现状进行分析和比较。2分类方法的发展 2.1决策树的分类方法 ID3算法是较早的决策树归纳算法。当前最有影响的决策树算法是Quinlan于1986年提出的ID3和1993年提出的C4.5。ID3选择增益值最大的属性划分训练样本,其目的是进行分裂时系统的熵最小,从而提高算法的运算速度和精确度。这种方法的优点是描述简单、分类速度快和产生的分类规则易于理解;但缺点是抗噪性差、训练正例和反例较难控制以及是非递增学习算法。C4.5是ID3的改进算法,不仅可以处理离散值属性,还能处理连续值属性,但是也不能进行增量学习。 SLIQ是一个能够处理连续及离散属性的决策树分类器。该算法针对C4.5分类算法产生的样本反复扫描和排序低效问题,采用了预排序和宽度优先两项技术。预排序技术消除了结点数据集排序,宽度优先为决策树中每个叶结点找到了最优分裂标准。这些技术结合使SLIQ能够处理大规模的数据集,并能对具有大量的类、属性与样本的数据集分类;并且该算法代价不高且生成紧凑精确的树。缺点是内存驻留数据会随着输入纪录数线性正比增大,限制了分类训练的数据量。 SPRINT方法完全不受内存的限制,并且处理速度很快,且可扩展。为了减少驻留于内存的数据量,该算法进一步改进了决策树算法的数据结构,去掉了SLIQ中需要驻留于内存的类别列表,将类别合并到每个属性列表中。但是对非分裂属性的属性列表进行分裂却比较困难,因此该算法的可扩展性较差。 2.2贝叶斯分类方法 贝叶斯分类是统计学分类方法,是利用Bayes定理来预测一个未知类别的样本可能属性,选择其可能性最大的类别作为样本的类别。朴素贝叶斯网络作为一种快速而高效的算法而受到人们的关注,但是其属性独立性并不符合现实世界,这样的假设降低了朴素贝叶斯网络的性能;但是如果考虑所有属性之间的依赖关系,使其表示依赖关系的能力增强,允许属性之间可以形成任意的有向图,由于其结构的任意性,这样使得贝叶斯网络的结构难以学习,然而,贝叶斯网络的学习是一个NP-Complete问题。 目前对于贝叶斯网络的改进主要包括了:1)基于属性选择的方法,保证选择的属性之间具有最大的属性独立性,其中代表算法是由Langley提出SBC;2)扩展朴素贝叶斯网络的结构,考虑属性之间的依赖关系,降低属性独立性假设,其中代表算法是由Friedman提出树扩展的贝叶斯网络TAN;3)基于实例的学习算法。 其中1)、2)的算法是根据训练集合构造一个分类器,是一种积极的学习算法,3)的方法是一种消极的学习算法。 2.3粗糙集分类方法 粗糙集理论是一种刻划不完整和不确定性数据的数学工具,不需要先验知识,能有效处理各种不完备,从中发现隐含的知识,并和各种分类技术相结合建立起能够对不完备数据进行分类的算法。粗糙集理论包含求取数据中最小不变集和最小规则集的理论,即约简算法,这也是粗糙集理论在分类中的主要应用。 2.4神经网络 神经网络是分类技术中重要方法之一,是大量的简单神经元按一定规则连接构成的网络系统。它能够模拟人类大脑的结构和功能,采用某种学习算法从训练样本中学习,并将获取的知识存储在网络各单元之间的连接权中。神经网络主要有前向神经网络、后向神经网络和自组织网络。目前神经网络分类算法研究较多集中在以BP为代表的神经网络上。文献提出了粒子群优化算法用于神经网络训练,在训练权值同时删除冗余连接,与BP结果比较表明算法的有效性。文献提出旋转曲面变换粒子群优化算法的神经网络,使待优化函数跳出局部极值点,提高训练权值的效率。 2.5K近邻分类算法 K近邻分类算法是最简单有效的分类方法之一,是在多维空间中找到与未知样本最近邻的K个点,并根据这K个点的类别判断未知样本的类别。但是有两个最大缺点:1)由于要存储所有的训练数据,所以对大规模数据集进行分类是低效的;2)分类的效果在很大程度上依赖于K值选择的好坏。文献提出一种有效的K近邻分类算法,利用向量方差和小波逼近系数得出两个不等式,根据这两个不等式,分类效率得到了提高。文献提出用粒子群优化算法对训练样本进行有指导的全局随机搜索,掠过大量不可能的K向量,该算法比KNN方法计算时间降低了70%。 2.6基于关联规则挖掘的分类方法 关联分类方法一般由两部组成:第一步用关联规则挖掘算法从训练数据集中挖掘出所有满足指定支持度和置信度的类关联规则,支持度用于衡量关联规则在整个数据集中的统计重要性,而置信度用于衡量关联规则的可信程度;第二步使用启发式方法从挖掘出的类关联规则中挑选出一组高质量的规则用于分类。 Agrawal等人于1993年提出了算法AIS和SETM,1994年又提出了Apriori和AprioriTid,后两个算法和前两个算法的不同之处在于:在对数据库的一次遍历中,那些候选数据项目被计数以及产生候选数据项目集的方法。但前两者方法的缺点是会导致许多不必要的数据项目集的生成和计数。由于目前日常生活中如附加邮递、目录设计、追加销售、仓储规划都用到了关联规则,因此首先要考虑关联规则的高效更新问题,D.w.cheung提出了增量式更新算法FUP,它的基本框架和Apriori是一致的;接着冯玉才等提出了两种高效的增量式更新算法IUA和PIUA,主要考虑当最小支持度和最小可信度发生变化时,当前交易数据库中关联规则的更新问题。 2.7支持向量机方法的发展 支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础之上的。根据有限样本、在模型的复杂性和学习能力之间寻求折衷,以期获得最好推广能力。它非常适合于处理非线性问题。分类问题是支持向量机最为成熟和应用最广的算法。但是由于SVM的训练时间会随着数据集的增大而增加,所以在处理大规模数据集时,SVM往往需要较长的训练时间。 文献提出了一种多分类问题的改进支持向量机,将GA和SVM相结合,构造了一种参数优化GA-SVM,该方法在多分类非平衡问题上,提高了分类正确率,也提高了学习时间。文献提出了一种新的支持向量机增量算法,提出了一种误分点回溯增量算法,先找出新增样本中误分的样本,然后在原样本集寻找距误分点最近的样本作为训练集的一部分,重新构建分类器,有效保留样本的分类,结果表明比传统的SVM有更高的分类精度。 2.8基于群的分类方法 这种方法可以看作是进化算法的一个新的分支,它模拟了生物界中蚁群、鱼群和鸟群在觅食或者逃避敌人时的行为,对基于群的分类方法研究,可以将这种方法分为两类:一类是蚁群算法,另一类称为微粒群算法。 文献提出了一种基于蚁群算法的分类规则挖掘算法,针对蚁群算法计算时间长的缺点,提出了一种变异算子,用公用数据作试验将其结果与C4.5和Ant-Miner比较,显示变异算子节省了计算时间。 PSO是进化计算的一个新的分支,它模拟了鸟群或鱼群的行为。在优化领域中,PSO可以与遗传算法相媲美。文献提出了基于粒子群优化算法的模式分类规则获取,算法用于Iris数据集进行分类规则的提取,与其他算法比较显示不仅提高了正确率,而且较少了计算时间。文献将PSO运用于分类规则提取,对PSO进行了改进,改进的算法与C4.5算法比较,试验结果表明,在预测精度和运行速度上都占优势。 由于PSO算法用于分类问题还处于初期,因此要将其运用到大规模的应用中还要大量的研究。3总结 分类是数据挖掘的主要研究内容之一,本文对分类算法进行了分析,从而便于对已有算法进行改进。未来的数据分类方法研究更多地集中在智能群分类领域,如蚁群算法、遗传算法、微粒群算法等分类研究上以及混合算法来进行分类。总之,分类方法将朝着更高级、更多样化和更加综合化的方向发展。参考文献: 邵峰晶,于忠清.数据挖掘原理与算法.中国水利水电出版社,2003. 陈文伟,黄金才.数据仓库与数据挖掘.人民邮电出版社,2004. L.Jiang,H.Zhang,Z.CaiandJ.Su,EvolutionalNaiveBayes,tsApplication,ISICA2005,pp.344-350,. Langley,P.,Sage,S,,,pp.339-406. Friedman,N.,Greiger,D.,Goldszmidt,M.,BayesianNetworkClassifiers,MachineLearning29103-130. T.Mitchell.MachineLearning.NewYork:McGraw-HillPress,1997. 曾黄麟.粗糙理论以及应用.重庆大学出版社,1996. 高海兵、高亮等.基于粒子群优化的神经网络训练算法研究.电子学报,2004,9. 熊勇,陈德钊,胡上序.基于旋转曲面变换PSO算法的神经网络用于胺类有机物毒性分类.分析化学研究报告,2006,3. 乔玉龙,潘正祥,孙圣和.一种改进的快速K近邻分类算法.电子学报,2005,6. 张国英,沙芸,江惠娜.基于粒子群优化的快速KNN分类算法.山东大学学报,2006,6. 黄景涛,马龙华,钱积新.一种用于多分类问题的改进支持向量机.浙江大学学报,2004,12. 毛建洋,黄道.一种新的支持向量机增量算法.华东理工大学学报,2006,8. 吴正龙,王儒敬等.基于蚁群算法的分类规则挖掘算法.计算机工程与应用,2004. 高亮,高海兵等.基于粒子群优化算法的模式分类规则获取.华中科技大学学报.2004,11. 延丽萍,曾建潮.利用多群体PSO生成分类规则.计算机工程与科学,2007,2.
⑻ 常用统计学方法
统计方法
统计方法是指有关收集、整理、分析和解释统计数据,并对其所反映的问题作出一定结论的方法。统计方法是一种从微观结构上来研究物质的宏观性质及其规律的独特的方法。统计方法是适用于所有学科领域的通用数据分析方法,只要有数据的地方就会用到统计方 法。随着人们对定量研究的日益重视,统计方法已被应用到自然科学和社会科学的众多领域,统计学也已发展成为由若干分支学科组成的学科体系。可以说,几乎所有的研究领域都要用到统计方法,比如政府部门、学术研究领域、日常生活中、公司或企业的生产经营管理中都要用到统计
统计方法是指有关收集、整理、分析和解释统计数据的方法。
统计方法
统计资料丰富且错综复杂,要想做到合理选用统计分析方法并非易事。对于同一个资料,若选择不同的统计分析方法处理,有时其结论是截然不同的。
正确选择统计方法的依据是:
①根据研究的目的,明确研究试验设计类型、研究因素与水平数;
②确定数据特征(是否正态分布等)和样本量大小;
③ 正确判断统计资料所对应的类型(计量、计数和等级资料),同时应根据统计方法的适宜条件进行正确的统计量值计算;
最后,还要根据专业知识与资料的实际情况,结合统计学原则,灵活地选择统计分析方法。
统计方法
统计分类
1 计量资料的统计方法
分析计量资料的统计分析方法可分为参数检验法和非参数检验法。
参数检验法主要为t检验和方差分析(ANOVA,即F检验)等,两组间均数比较时常用t检验和u检验,两组以上均数比较时常用方差分析;非参数检验法主要包括秩和检验等。t检验可分为单组设计资料的t检验、配对设计资料的t检验和成组设计资料的t检验;当两个小样本比较时要求两总体分布为正态分布且方差齐性,若不能满足以上要求,宜用非参数方法(秩和检验)。方差分析可用于两个以上样本均数的比较,应用该方法时,要求各个样本是相互独立的随机样本,各样本来自正态总体且各处理组总体方差齐性。根据设计类型不同,方差分析中又包含了多种不同的方法。对于定量资料,应根据所采用的设计类型、资料所具备的条件和分析目的,选用合适的统计分析方法,不应盲目套用t检验和单因素方差分析。
统计方法
2 计数资料的统计方法
计数资料的统计方法主要针对四格表和R×C表利用
检验进行分析。 四格表资料:组间比较用
检验或u检验,若不能满足 检验:当计数资料呈配对设计时,获得的四格表为配对四格表,其用到的检验公式和校正公式可参考书籍。 R×C表可以分为双向无序,单向有序、双向有序属性相同和双向有序属性不同四类,不同类的行列表根据其研究目的,其选择的方法也不一样,具体见表1。
3 等级资料的统计方法
等级资料(有序变量)是对性质和类别的等级进行分组,再清点每组观察单位个数所得到的资料。在临床医学资料中,常遇到一些定性指标,如临床疗效的评价、疾病的临床分期、病症严重程度的临床分级等,对这些指标常采用分成若干个等级然后分类计数的办法来解决它的量化问题,这样的资料统计上称为等级资料。
⑼ k近邻算法精确度的提高有什么科学性,先进性和独特之处
K近邻(k-Nearest Neighbour,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
K-近邻法就是一种基于文本特征向量空间模型表示的文本分类方法,有很多优点,算法简单,易于实现,分类精度较高。
⑽ k近邻算法如何做回归分析
有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。也就是说,现在, 我们不知道中间那个绿色的数据是从属于哪一类(蓝色小正方形or红色小三角形),下面,我们就要解决这个问题:给这个绿色的圆分类。我们常说,物以类聚,人以群分,判别一个人是一个什么样品质特征的人,常常可以从他/她身边的朋友入手,所谓观其友,而识其人。我们不是要判别上图中那个绿色的圆是属于哪一类数据么,好说,从它的邻居下手。但一次性看多少个邻居呢?从上图中,你还能看到:
如果K=3,绿色圆点的最近的3个邻居是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。 如果K=5,绿色圆点的最近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。 于此我们看到,当无法判定当前待分类点是从属于已知分类中的哪一类时,我们可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类。这就是K近邻算法的核心思想。
KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN 算法本身简单有效,它是一种 lazy-learning 算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。KNN 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么 KNN 的分类时间复杂度为O(n)。
KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
K 近邻算法使用的模型实际上对应于对特征空间的划分。K 值的选择,距离度量和分类决策规则是该算法的三个基本要素: K 值的选择会对算法的结果产生重大影响。K值较小意味着只有与输入实例较近的训练实例才会对预测结果起作用,但容易发生过拟合;如果 K 值较大,优点是可以减少学习的估计误差,但缺点是学习的近似误差增大,这时与输入实例较远的训练实例也会对预测起作用,是预测发生错误。在实际应用中,K 值一般选择一个较小的数值,通常采用交叉验证的方法来选择最优的 K 值。随着训练实例数目趋向于无穷和 K=1 时,误差率不会超过贝叶斯误差率的2倍,如果K也趋向于无穷,则误差率趋向于贝叶斯误差率。 该算法中的分类决策规则往往是多数表决,即由输入实例的 K 个最临近的训练实例中的多数类决定输入实例的类别 距离度量一般采用 Lp 距离,当p=2时,即为欧氏距离,在度量之前,应该将每个属性的值规范化,这样有助于防止具有较大初始值域的属性比具有较小初始值域的属性的权重过大。 KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成反比。该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。 该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
实现 K 近邻算法时,主要考虑的问题是如何对训练数据进行快速 K 近邻搜索,这在特征空间维数大及训练数据容量大时非常必要。