基于K近邻的分类算法研究.docx
《基于K近邻的分类算法研究.docx》由会员分享,可在线阅读,更多相关《基于K近邻的分类算法研究.docx(20页珍藏版)》请在冰豆网上搜索。
基于K近邻的分类算法研究
航空航天大学
ShenyangAerospaceUniversity
算法分析
题目:
基于K-近邻分类算法的研究
院系计算机学院
专业计算机技术
姓名
学号
指导教师
2015年1月
摘要
数据挖掘是机器学习领域广泛研究的知识领域,是将人工智能技术和数据库技术紧密结合,让计算机帮助人们从庞大的数据中智能地、自动地提取出有价值的知识模式,以满足人们不同应用的需要。
K近邻算法(KNN)是基于统计的分类方法,是数据挖掘分类算法中比较常用的一种方法。
该算法具有直观、无需先验统计知识、无师学习等特点,目前已经成为数据挖掘技术的理论和应用研究方法之一。
本文主要研究了K近邻分类算法。
首先简要地介绍了数据挖掘中的各种分类算法,详细地阐述了K近邻算法的基本原理和应用领域,其次指出了K近邻算法的计算速度慢、分类准确度不高的原因,提出了两种新的改进方法。
针对K近邻算法的计算量大的缺陷,构建了聚类算法与K近邻算法相结合的一种方法。
将聚类中的K-均值和分类中的K近邻算法有机结合。
有效地提高了分类算法的速度。
针对分类准确度的问题,提出了一种新的距离权重设定方法。
传统的KNN算法一般采用欧式距离公式度量两样本间的距离。
由于在实际样本数据集合中每一个属性对样本的贡献作用是不尽相同的,通常采用加权欧式距离公式。
本文提出一种新的计算权重的方法。
实验表明,本文提出的算法有效地提高了分类准确度。
最后,在总结全文的基础上,指出了有待进一步研究的方向。
关键词:
K近邻,聚类算法,权重,复杂度,准确度
ABSTRACT
Dataminingisawidelyfieldofmachinelearning,anditintegratestheartificialintelligencetechnologyanddatabasetechnology.Ithelpspeopleextractvaluableknowledgefromalargedataintelligentlyandautomaticallytomeetdifferentpeopleapplications.KNNisausedmethodindataminingbasedonStatistic.Thealgorithmhasbecomeoneofthewaysindataminingtheoryandapplicationbecauseofintuitive,withoutprioristatisticalknowledge,andnostudyfeatures.
Themainworksofthisthesisisknearestneighborclassificationalgorithm.First,itintroducesmainlyclassificationalgorithmsofdatamininganddescriptstheoreticalbaseandapplication.Thispaperpointsoutthereasonsofslowandlowaccuracyandproposestwoimprovedways.
InordertoovercomethedisadvantagesoftraditionalKNN,thispaperusetwoalgorithmsofclassificationandclusteringtoproposeanimprovedKNNclassificationalgorithm.Experimentsshowthatthisalgorithmcanspeedupwhenithasafeweffectsinaccuracy.
Accordingtotheproblemofclassificationaccuracy,thepaperproposesanewcalculationofweight.KNNthetraditionalmethodgenerallyusedContinentaldistanceformulameasurethedistancebetweenthetwosamples.Astheactualsampledatacollectionineveryattributeofasampleofthecontributionisnotthesame,oftenusingtheweightedContinentaldistanceformula.Thispaperpresentsacalculationofweight,thatisweightedbasedonthecharacteristicsofKNNalgorithm.AccordingtothisExperimentsonartificialdatasetsshowthatthisalgorithmcanimprovetheaccuracyofclassification.
Last,thepaperindicatesthedirectionofresearchinfuturebasedonthefull-text.
Keywords:
KNearestNeighbor,ClusteringAlgorithm,FeatureWeighted,ComplexDegree,ClassificationAccuracy.
前言
K最近邻(k-Nearest neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
该方法的思路是:
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
KNN算法中,所选择的邻居都是已经正确分类的对象。
该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。
由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
KNN算法不仅可以用于分类,还可以用于回归。
通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。
更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。
该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。
该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。
无论怎样,数量并不能影响运行结果。
可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。
目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分
1绪论
1.1选题背景和研究现状
1.1.1数据挖掘
随着数据库技术的飞速发展,人工智能领域的一个分支——机器学习的研究自20世纪50年代开始以来也取得了很大进展。
用数据库管理系统来存储数据,用机器学习的方法来分析数据,挖掘大量数据背后的知识,这两者的结合促成了数据库中的知识发现(KnowledgeDiscoveryinDatabases,简记KDD)的产生,也称作数据挖掘(DataMing,简记DM)。
数据挖掘是信息技术自然演化的结果。
信息技术的发展大致可以描述为如下的过程:
初期的是简单的数据收集和数据库的构造;后来发展到对数据的管理,包括:
数据存储、检索以及数据库事务处理;再后来发展到对数据的分析和理解,这时候出现了数据仓库技术和数据挖掘技术。
数据挖掘是涉及数据库和人工智能等学科的一门当前相当活跃的研究领域。
数据挖掘是机器学习领域广泛研究的知识领域,是将人工智能技术和数据库技术紧密结合,让计算机帮助人们从庞大的数据中智能地、自动地抽取出有价值的知识模式,以满足人们不同应用的需要[1]。
目前,数据挖掘已经成为一个具有迫切实现需要的很有前途的热点研究课题。
数据挖掘技术能从数据仓库中自动分析数据,进行归纳性推理,从中发掘出潜在的模式,或产生联想,建立新的业务模型,这是一个高级的处理过程。
高级的处理过程是指一个多步骤的处理过程,多步骤之间相互影响、反复调整,形成一种螺旋式上升过程。
数据挖掘的功能用于指定数据挖掘任务中要找的模式类型,其任务一般分为两类:
描述和预测。
描述性挖掘任务刻画数据库中数据的一般特性,预测性挖掘任务在当前数据上进行推断,以进行预测。
在实际应用中,往往根据模式的实际应用细分为以下六种:
①分类模式;②回归模式;③时间序列模式;④聚类模式;⑤关联模式;⑥序列模式。
在解决实际问题时,经常要同时使用多种模式。
分类模式和回归模式是使用最普遍的模式。
分类模式、回归模式、时间序列模式也被认为是受监督的知识,因为在建立模式前数据的结果是已知的,可以直接用来检测模式的准确性,模式的产生是在受监督的情况下进行的。
一般在建立这些模式时,使用一部分数据作为样本,用另一部分数据来检验、校正模式。
聚类模式、关联模式、序列模式则是非监督知识,因为在模式建立前模式是未知的,模式的产生不受任何监[2]。
1.1.2国外研究现状
本论文主要研究的是数据挖掘分类算法中的K近邻算法。
国外学者针对此算法做了许多研究工作。
例如文献[3]研究了计算复杂性的优化和分析方法以及如何减少计算量的做法等。
香港中文大学的WaiLam等人KNN方法和线性分类器结合,取得了较好的分类效果,在召回率接近90%时准确率超过80%[4]。
WlodzislawDuch提出了通过选取特征对加权KNN算法的研究[5]。
文献[4]提出了一种基于近邻搜索的快速K近邻分类算法——超球搜索法。
该方法通过对特征空间的预组织,使分类能在以待分样本为中心的超球进行。
超球半径由零开始逐渐增大至超球包含K个以上模式样本为止。
这一方法有效地缩小了算法搜索围,同时预组织和预分类简单明了,无需复杂的训练,不存在收敛性问题。
文献[8]研究了回归函数K-近邻估计的渐进性质,得到了回归函数的K-近邻估计的渐进正态性和它的Bootstrap统计量的相合性。
文献[5]为近邻算法建立一个有效的搜索树,提高了查询速率。
文献[6]提出了一种迭代近邻法,用以解决KNN算法在小样本库的环境下分类效果不佳的问题,在无法得到足够的定类样本时,通过检索的方法将待分样本的局部主题特征放大,进而得到足够定类的相似样本。
文献[7]分析了传统的近邻文本分类方法技术以及Web文本的特点,充分利用了Web文本的结构信息进行特征词加权,以类轴向量为核心构建分类器。
文献[8]提出了加权K近邻的方法,对训练集X的每一个样本点,给定一个临界半径,对一个待识别样本,比较其与训练集中每个样本点的加权距离。
文献[9]针对欧几里德空间的K近邻,给出了在可重构网孔机器上(RMESH)的并行算法等。
1.2研究容和目的
1.2.1研究容
近邻方法是在一组历史数据记录中寻找一个或者若干个与当前记录最相似的历史纪录的已知特征值来预测当前记录的未知或遗失特征值[9]。
近邻方法是数据挖掘分类算法中比较常用的一种方法。
K近邻算法(简称KNN)是基于统计的分类方法[15]。
KNN分类算法根据待识样本在特征空间中K个最近邻样本中的多数样本的类别来进行分类,因此具有直观、无需先验统计知识、无师学习等特点,从而成为非参数分类的一种重要方法。
大多数分类方法是基于向量空间模型的。
当前在分类方法中,对任意两个向量:
x=(x1,x2,…,xn)与x’=(x1’,x2’,…xn’)存在3种最通用的距离度量:
欧氏距离、余弦[16]和积[17]。
有两种常用的分类策略:
一种是计算待分类向量到所有训练集中的向量间的距离:
如K近邻选择K个距离最小的向量然后进行综合,以决定其类别。
另一种是用训练集中的向量构成类别向量,仅计算待分类向量到所有3类别向量的距离,选择一个距离最小的类别向量决定类别的归属。
很明显,距离计算在分类中起关键作用。
由于以上3种距离度量不涉及向量的特征之间的关系,这使得距离的计算不精确,从而影响分类的效果。
下面分3种情况说明:
①无用特征的影响:
在分类算法的向量空间模型中,向量常常是多维的。
所谓无用特征是指与类别无关的特征。
也就是各个类别中均可以出现的特征,它不代表类别的特点,必须要进行删除,否则他们将会导致距离的计算不准确,即向量间的距离远近将被无关特征的出现所影响。
②特征间关系的影响:
我们认为如果不考虑特征间的关系,距离的计算同样会存在问题。
例如在文本分类中,可分两种情况说明:
一种是同义词的影响,另一种是具有某种语义关联词的影响。
③特征间地位不平等性的影响:
特征对类别支持作用大小尽管可用权值大小来体现,但我们觉得还不够。
存在一些特征对类别具有较强的支持作用(决策特征),它们的存在可以在很大程度上决定类别的归属。
而在向量空间模型中,这种决策作用将被众多非决策特征的影响所淹没掉。
其次对于K近邻算法中,选取不同的K值对分类结果有较大的影响,也就是说,不同的K值直接决定分类结果的正确率。
如图1.1所示:
图1.1K值对分类的影响
其中具有空心方格和实心圆圈两类数据,待测数据点(问号代表)如果采用1近邻则其所属类别应该是如图所示的属于方格类,如果采用3近邻则属于圆圈类。
所以说,采用怎样的K近邻个数是分类结果正确与否的关键条件之一。
最后查找近邻的效率问题也是值得研究的一项容。
K近邻分类算法需要进行全局搜索,计算的时间复杂度大,速度慢。
当训练集数据量非常大时,寻找近邻就需要相应的提高效率算法,使得查找速度提高。
像在文中1.1.2中所述的,目前已有的一些快速K近邻分类算法,尽管在提高快速性方面作了一些改进,但是有的需要事先进行大量复杂的训练并且存在着收敛性问题,有的同样需要进行全局搜索并且对搜索顺序有较强的敏感性。
分类算法中,KNN算法是实现简单、分类效果较好的一种方法。
1.2.2研究目的
本论文主要针对KNN算法的计算速度慢,准确度不高的缺点进行改进,提出一种能在保持准确度的前提下减少搜索围、有效提高算法速度的改进方法。
虽然许多学者都在这两个方面做了大量的研究,但还存在着一些值得研究的问题。
针对KNN算法计算量大的缺点,目前提出较多的快速算法主要有分块Voronoi图方法,但是速度的改善均不是很大。
本文利用分块的策略,提出一种KNN与聚类算法相结合的改进算法,使得能够在对准确度影响不大的前提下提高算法的收敛速度。
其次针对分类准确度的问题,构造新的相似性度量或特征权重型的距离度量,以达到提高分类的准确度的目的。
最后可以尝试关于特征选择方面的研究,以达到能同时提高速度和准确度。
以上三个方面在新的算法提出之后可以通过实例验证算法的可行性并与常规分类算法进行比较,以验证算法的优越性。
2K-近邻分类算法
2.1分类算法
2.1.1数据分类
分类模式挖掘技术作为数据挖掘的重要分支将对电信、银行、保险、零售、医疗等诸多行业提供决策支持,对未来商业和人们的生活也将产生深远的影响。
数据分类(DataClassification)是数据挖掘中一项非常重要的任务,目前在商业上应用最多。
分类的目的是学会一个分类函数或者分类模型(也常常称为分类器),该模型能把数据库中的数据项映射到给定类别中的某一个。
例如:
可以建立一个分类模型,对银行贷款的安全或风险进行分类。
许多分类的方法已被机器学习、专家系统、统计学和神经生物学方面的研究者提出。
数据分类实际上就是从数据库对象中发现共性,并将数据对象分成不同类别的一个过程,可分成两步进行(图2.1)。
第一步,建立一个模型,描述预定的数据类集或概念集。
通过分析由属性描述的数据元组来构造模型。
假定每个元组属于一个预定义的类,有一个类标号属性(ClassLabelAttribute)的属性确定。
对于分类,数据元组也称为样本、实例或者对象。
为建立模型而被分析的数据元组形成训练数据集(TrainingSet)。
训练数据集中的单个元组称为训练样本,并随机的从样本集中选取。
由于预先知道每个训练样本的类标号,这个建立模型的学习过程属于有指导的学习,即模型的学习是在知道每个训练样本属于哪个类的指导下进行的。
这不同于无指导的学习(如聚类),无指导的学习中每个训练样本的类标号事先是未知的,要学习的类集合或者数量也是事先不知道,整个学习的过程是在无指导的情况下进行的。
通常,通过第一步的学习建立的模型用分类规则、决策树或数据公式的形式表示。
如给定一个顾客信用信息的数据库,通过分类算法学习得出分类规则,根据这些规则,决定顾客的信誉好坏。
即这些规则就是分类模型,可以利用这个模型对其他数据样本进行分类,同时也能对数据库的容提供更好的理解。
图2.1(a)表示一种学习过程:
在训练数据上用分类算法学习,学习模型用分类规则的形式表示。
图2.1(a)学习过程
测试数据分类规则新数据
图2.1(b)分类过程
第二步图2.1(b)表示一种分类过程:
在测试数据上评估分类规则的准确率,如果准确率可以接受,则分类规则可用于新的数据的分类。
首先要评估模型的预测准确率。
最常用的一种方法是保持(HoldOut)方法,该方法使用类标号样本测试集,这些样本随机选取,并独立于训练样本集,即测试样本集完全不同于训练样本集。
模型在测试样本集上的准确率是指被模型正确分类的测试样本的百分比。
对于每个测试样本,按照分类模型学习得出的预测类别与已知的类别标号进行比较,如果相同,则表示分类成功;不相同,表示分类不成功。
使用完全不同于训练样本集的测试样本集,是因为学习模型倾向于过分适合数据,即学习模型可能并入训练数据中某些特别的异常数据,而这些异常不出现在总体样本集中。
如果仍使用训练数据评估分类模型,则可能评估总是乐观的。
如果认为模型的准确率可以接受,就可以利用该模型对类标号未知的数据元组或对象进行分类。
如在通过分析现有顾客数据学习得到的分类规则可以预测新的顾客信誉的好坏。
分类算法具有广泛的应用,包括信誉证实、学习用户兴趣、性能预测、市场调查[21]、新闻分发[22]、分类以及医疗诊断等。
2.1.2分类方法
目前,有多种分类方法和算法,主要有统计方法、机器学习方法、神经网络方法等。
分类算法一般分为Lazy和Eager两种类型。
Lazy学习算法思想是从局部出发,推迟对训练例子的归纳过程,直到一个新的测试例子出现,例如K近邻(KNearestNeighbor)算法、局部加权回归(LocallyWeightedRegression)、基于案例的推理(Case-basedReasoning)等;而Eager学习算法则是从全局出发,在新的测试例子出现之前,由训练例子总结归纳出相似判断的目标函数,这个目标函数应用于训练数据和测试数据,例如决策树(DecisionTree)、BP(Back-Propagation)神经网络算法、径向基函数(RadialBasisFunctions)、遗传分类方法、粗糙集分类方法等。
我们将在2.3中以K近邻举例介绍Lazy算法,现以决策树为例介绍Eager方法。
归纳学习旨在从大量的经验数据中归纳和提取一般的判定规则和模式,它是机器学习最核心、最成熟的分支。
以Quinlan在1986年提出的ID3为代表决策树归纳学习算法,它是一种基于信息增益的典型自上而下的决策树归纳方法。
以决策树为知识表达形式,具有描述简单、分类速度快、计算量小的特点,能归纳出一种较“好”的决策树,且适用于大规模数据集的学习问题。
模糊ID3算法(Fuzzy-ID3)是传统ID3算法在模糊环境下的一种推广,这种算法能处理与人的思维和感觉相关的不确定性,因而应用更为广泛。
模糊ID3算法的核心是使用模糊信息熵来选择扩展属性,根据所选的属性来分割决策树中当前节点的数据,从而生成一棵决策树。
模糊决策树产生过程包括以下几个步骤:
①训练数据的模糊化。
将数据集按一定比例分成训练集和测试集,模糊化过程使用所有训练例子,根据迭代自组织的模糊聚类算法产生全局中心,并由此中心模糊化所有训练例子及测试例子。
②ID3算法是在模糊化后的所有训练例子的基础上进行。
决策树的建立过程如下:
对每一属性计算信息增益,用具有最大信息增益的属性来扩展根节点。
删除节点的空分支,对节点的每一非空分支计算属于这一分支的所有对象分到每一类的真实水平S。
若分到某一类的真实水平超过阈值β,则终止这一分支作为一个叶子(标记为当前类)。
否则考察另一个属性是否能继续分割这个分支并进一步增加信息增益。
如果能,则选择具有最大信息增益的属性作为决策节点,如果不能,则终止这一分支作为一个叶子。
在叶子节点,所有的对象以最高的真实水平属于同一类。
对于每一新生成的决策节点重复第2步,直到不能向下扩展。
决策树建立完成。
③将决策树转化为一组规则,其中每条规则是从根节点出发到叶子节点的一条路径。
④将得到的这组全局规则应用于训练例子,得到分类的训练准确率;然后将所有测试例子与规则逐一匹配,得到分类的测试准确率。
从以上二个算法中,我们可以看出Lazy和Eager这两种分类方法有本质的不同。
从计算时间的角度讲,Lazy方法的训练阶段基本不需要计算时间,但是当一个新例子到来时就需要预测目标函数值,所以测试阶段的计算量比较大。
而Eager方法则与之相反,训练阶段需要计算得到目标函数,所以训练阶段的计算量比较大;从对新例子分类的角度讲,Lazy方法总是当新例子到来时才开始预测,而Eager方法在训练阶段就完成了对所有例子目标函数的建立。
因此,它们的归纳偏好不同,Lazy方法侧重当前具体例子具体分析,而Eager方法在遇到测试例子之前就已经为其选择了对应的目标函数。
这两种分类方法哪一种更具有概括性呢?
假设在同样的假说空间中解决问题,Lazy方法明显具有更丰富的假说空间,因为它可以选择多个局部相似的组合来表示目标函数;Eager方法则在训练阶段必须确定一个全局相似。
所以通过实验对两者进行研究比较,从而可以对实际应用算法选择提供经验性结论,具有很好的实际意义。
现在广泛应用的基于统计的模型有向量空间模型、NaiveBayes概率模型、实例映射模型和支持向量机模型。
NaiveBayes模型是基于两项假设之上的一种概率分类模型。
支持向量