KNN算法总结Word下载.docx
- 文档编号:18195166
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:10
- 大小:26.11KB
KNN算法总结Word下载.docx
《KNN算法总结Word下载.docx》由会员分享,可在线阅读,更多相关《KNN算法总结Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
图电影分类
图中横坐标表示一部电影中的打斗统计个数,纵坐标表示接吻次数。
我们要对图中的问号这部电影进行分类,其他几部电影的统计数据和类别如表所示:
表
Movietitle
#ofkicks
#ofkisses
Typeofmovie
CaliforniaMan
3
104
Romance
He’sNotReallyintoDudes
2
100
BeautifulWoman
1
81
KevinLongblade
101
10
Action
RoboSlayer3000
99
5
AmpedII
98
?
18
90
Unknown
从表中可以看出有三部电影的类别是Romance,有三部电影的类别是Action,那如何判断问号表示的这部电影的类别?
根据KNN原理,我们需要在图所示的坐标系中计算问号到所有其他电影之间的距离。
计算出的欧式距离如表所示:
Distancetomovie“?
”
由于我们的标签只有两类,那假设我们选K=6/2=3,由于前三个距离最近的电影都是Romance,那么问号表示的电影被判定为Romance。
的应用
KNN算法不仅可以用于分类,还可以用于回归。
通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性[3]。
更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。
(1)文本分类:
文本分类主要应用于信息检索,机器翻译,自动文摘,信息过滤,邮件分类等任务。
文本分类在搜索引擎中也有着大量的使用,网页分类/分层技术是检索系统的一项关键技术,搜索引擎需要研究如何对网页进行分类、分层,对不同类别的网页采用差异化的存储和处理,以保证在有限的硬件资源下,提供给用户一个高效的检索系统,同时提供给用户相关、丰富的检索结果。
在搜索引擎中,文本分类主要有这些用途:
相关性排序会根据不同的网页类型做相应的排序规则;
根据网页是索引页面还是信息页面,下载调度时会做不同的调度策略;
在做页面信息抽取时,会根据页面分类的结果做不同的抽取策略;
在做检索意图识别的时候,会根据用户所点击的url所属的类别来推断检索串的类别。
(2)回归:
通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。
更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。
(3)可以使用knn算法做到比较通用的现有用户产品推荐,基于用户的最近邻(长得最像的用户)买了什么产品来推荐是种介于电子商务网站和sns网站之间的精确营销。
只需要定期(例如每月)维护更新最近邻表就可以,基于最近邻表做搜索推荐可以很实时[4]。
KNN的核心思想
K-NN可以说是一种最直接的用来分类未知数据的方法。
基本通过下面这张图跟文字说明就可以明白K-NN的思想是什么
图
简单来说,K-NN可以看成:
有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。
kNN算法的核心思想是如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。
该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别[5]。
kNN方法在类别决策时,只与极少量的相邻样本有关。
由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。
算法步骤
初始化距离为最大值
计算未知样本和每个训练样本的距离dist
得到目前K个最临近样本中的最大距离maxdist
如果dist小于maxdist,则将该训练样本作为K-最近邻样本
重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完
统计K-最近邻样本中每个类标号出现的次数
选择出现频率最大的类标号作为未知样本的类标号
2K值的选择
交叉验证(Cross-validation)
交叉验证(Cross-validation)主要用于建模应用中,例如PCR、PLS回归建模中。
在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。
这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。
把每个样本的预报误差平方加和,称为PRESS(predictedErrorSumofSquares)。
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。
交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。
这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
K值的选择
K近邻规则可以被看作是另一种从样本中估计后验概率P(wi|x)的方法。
为了得到可高的估计必须是的K值越大越好。
另一方面,又希望又希望x的K个近邻x距离x1越近越好,因为这样才能保证P(wi|x1)尽可能逼近P(wi|x)。
在选取K值的时候,就不得不做出某种折衷。
只有当n趋近于无穷大时,才能保证K近邻规则几乎是最优的分类规则。
K值的选择:
需要消除K值过低,预测目标容易产生变动性,同时高k值时,预测目标有过平滑现象。
推定k值的有益途径是通过有效参数的数目这个概念。
有效参数的数目是和k值相关的,大致等于n/k,其中,n是这个训练数据集中实例的数目。
确定K的值:
通过实验确定。
进行若干次实验,取分类误差率最小的k值。
KNN算法的分类效果很大程度上依赖于k值的选取,以往人们都是根据个人经验来定。
k值选择过小,得到的近邻数过少,会降低分类精度;
而如果k值过大,容易造成噪声数据增加而降低分类准确率。
最极端的情况下,参数k取数据库中所有样本的个数,则新样本的分类结果为全局最优解,否则分类结果为局部最优解。
所以,参数k是全局最优解和局部最优解的一个折衷。
针对k值选择问题,文献[6]提出了根据上下文动态调整k值的选择。
中科院的STan提出了一种适应性的KNN改进算法[7],对样本数差异较大的类别,设定不同的K值,减少了算法对样本分布的依赖性。
如图所示:
此图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?
如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类
在给定了度量方式以后,我们自然而然会遇到一个问题就是到底要找多少个邻居才合适了,如图所示,X是待分类样本,‘+’和‘-’是样本类别属性,如果K选大了的话,可能求出来的k最近邻集合可能包含了太多隶属于其它类别的样本点,最极端的就是k取训练集的大小,此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。
如果K选小了的话,结果对噪音样本点很敏感。
那么到底如何选取K值,其实我在前面也说了,其实完全靠经验或者交叉验证(一部分样本做训练
集,一部分做测试集)的方法,就是是K值初始取一个比较小的数值,之后不段来调整K值的大小来时的分类最优,得到的K值就是我们要的,但是这个K值也只是对这个样本集是最优的。
一般采用k为奇数,跟投票表决一样,避免因两种票数相等而难以决策。
下面我们可以通过交叉验证的方式求出最合适的K值,对iris数据(UCIMachineLearningRepository下载)用kNN算法进行分类,通过交叉验证(10次)的方式,对k取不同值时进行了实验,实验结果如图所示,其中红线指的是实验选用的K值,黄线指的是实验的结果,我们发现在我所选取的k值中,当k=17时效果最好,在k=1时,即用最近邻来进行分类的效果也不错,实验结果呈现一个抛物线,与我们之前分析的结果相吻合。
3KNN算法的优缺点
K近邻法(KNearestNeighbor,KNN)由Cover和Hart提出来的,是一种懒惰的、有监督的、基于实例的机器学习方法。
相关研究证明该分类方法是向量空间
模型下最好的分类算法之一。
KNN的分类过程可以理解成:
先将训练文本集中的所有文本表示成向量的形式,形成向量文本集并存储起来,当一个新的待分类文本到达时,计算该文本和训练文本集中每一个文本的相似度,并将计算得到的值按降序排列,选取出排在最前面的K篇文本,然后依照这K篇文本的类别对新文本进行归类。
在依据这K篇文本确定待分类文本的类别时,通常有两种方法:
,
1.对选出的这K篇文本进行统计,看大多数属于哪一类,就把这个待分类文本归到这个类中。
2.对这K篇文本与待分文本的相似度按公式(3-1)进行求和,将属于同一个类的文本的相似度相加求和,然后对每个类所求得的和进行排序,将待分类文本归到相似度和较大的那个类中。
本文选用第二种方法。
k
Tj(d)=Tj(di)sim(d,di)(3-1)
I=1
其中,k表示选取的文本数:
Tj(di)表示文本西是否属于Ci类(若属于,则值为1;
否则值为0);
)sim(d,di)即为所求。
通过对KNN算法的分析我们可知,该分类算法的优点主要有:
1.思路比较简单并且实现起来比较容易;
2.当向训练样本集中加入新的文本时,不需要重新训练,因此可以减少训练时间。
虽然KNN有着上述的优点,但它也存在着一些缺点,如:
1.对待分文本类别的确定是根据选出的K篇文本来决定的,所以对K值的选取将会影响分类的效果,但是目前只能通过不断的实验来调整K的取值;
2.使用KNN对新进待分类文本进行分类时,首先要把训练文本集中的所有文本都存储起来,以便计算新文本和所有训练文本的相似度,用以选出较为相似的前K篇文本,因此,无论是计算文本间相似度所用的时间,还是存储训练文本所占用的空间,都会随着训练集文本规模的变大和特征维数的增加而增加,其时间复杂度可以用O(m*n)来表示,其中m是选出的特征项的个数,n是训练集中文本的个数。
该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。
该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。
无论怎样,数量并不能影响运行结果。
可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。
目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分[8]。
4KNN算法的改进
针对上述KNN算法的几个主要缺陷,主要有以下三类改进方法:
1)为了降低样本的不均衡对结果造成的不好影响可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
2)对于计算量大的问题目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
这样可以挑选出对分类计算有效的样本,使样本总数合理地减少,以同时达到减少计算量,有减少存储量的双重效果。
该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
3)对样本进行组织与整理,分群分层,尽可能将计算压缩到在接近测试样本领域的小范围内,避免盲目地与训练样本集中的每个样本进行距离计算。
快速搜索近邻法
其基本思想是将样本集按邻近关系分解成组,给出每组的质心所在,以及组内样本至该质心的最大距离。
这些组又可形成层次结构,即组又分子组,因而待识别样本可将搜索近邻的范围从某一大组,逐渐深入到其中的子组,直至树的叶结点所代表的组,确定其相邻关系。
这种方法着眼于只解决减少计算量,但没有达到减少存储量的要求。
用树结构表示样本分级:
p:
树中的一个结点,对应一个样本子集Kp
Np:
Kp中的样本数
Mp:
Kp中的样本均值
rp:
从Kp中任一样本到Mp的最大距离
规则1:
如果满足:
则Kp中的样本都不可能是x的最近邻,B是算法执行中当前到x的最近距离
规则2:
则xi不是x的最近邻
剪辑近邻法
其基本思想是,利用现有样本集对其自身进行剪辑,将不同类别交界处的样本以适当方式筛选,可以实现既减少样本数又提高正确识别率的双重目的。
剪辑的过程是:
将样本集KN分成两个互相独立的子集:
test集KT和reference集KR。
首先对KT中每一个Xi在KR中找到其最近邻的样本Yi(Xi)。
如果Yi与Xi不属于同一类别,则将Xi从KT中删除,最后得到一个剪辑的样本集KTE(剪辑样本集),以取代原样本集,对待识别样本进行分类。
压缩近邻法
利用现有样本集,逐渐生成一个新的样本集,使该样本集在保留最少量样本的条件下,仍能对原有样本的全部用最近邻法正确分类,那末该样本集也就能对待识别样本进行分类,并保持正常识别率。
定义两个存储器,一个用来存放即将生成的样本集,称为Store;
另一存储器则存放原样本集,称为Grabbag。
其算法是:
1)初始化。
Store是空集,原样本集存入Grabbag;
从Grabbag中任意选择一样本放入Store中作为新样本集的第一个样本。
2)样本集生成。
在Grabbag中取出第i个样本用Store中的当前样本集按最近邻法分类。
若分类错误,则将该样本从Grabbag转入Store中,若分类正确,则将该样本放回Grabbag中。
3)结束过程。
若Grabbag中所有样本在执行第二步时没有发生转入Store的现象,或Grabbag已成空集,则算法终止,否则转入第二步。
5ML-KNN
ML—KNN是张敏灵和周志华提出的一种简单的非参数化的多标记学习分类器,它使用K最近邻算法,统计近邻样本的类别标记信息,通过最大化后验概率的方式推理未见示例的标记集合.与其它方法相比,具有方法简单、错误率较低的特点,它的分类精度取决于训练样本的可靠性与属性的选择.2009年,张敏灵等人又提出了MLNB算法,先用PCA进行特征抽取去除无关冗余属性,然后定义一个损失函数并使用生成算法(GA)得到最适合分类的特征子集,最后利用MLNB—BASIC算法对选择后的数据集进行学习[9].
ML-KNN算法
给定多标记训练集D={(xi,yi)l1≤i≤P)以及未见示例x,假设N(x)代表x在训练集中的k个近邻样本构成的集合,对于第j个类别Yj,(1≤j≤g)而言,ML—KNN算法将计算如下统计量:
Cj=Σ{yj∈Y*).
(x*,y*)∈N(x)
可知,Cj统计了N(x)中将作为其相关标记的样本个数.进一步地,设Hj代表x具有类别标记Yj,这一事件,
P(Hj|Yj)代表当N(x)中有Cj个样本具有类别标记Yj时Hj成立的后验概率.相应地,P(-Hj|Yj)代表当N(x)中有Cj个样本具有类别标记Yj时Hj成立的后验概率.
令f(x,yj)=P(Hj|Yj)/P(-Hj|Yj)
可得到所需的多标记分类器
h(x)={yj|P(Hj|Yj)/P(-Hj|Yj)>
1<
j<
q}
即当后验概率P(Hj|Yj)>
P(-Hj|Yj),将标记Yj赋予示例x.基于贝叶斯定理,函数可重写为h(x)={yj|P(Hj)P(Cj|Hj)/P(-Hj)P(Cj|-Hj)>
其中P(Hj)与P(-Hj)分别代表事件Hj成立与不成立的先验概率,P(Cj|Hj)与P(Cj|-Hj)分别代表事件Hj成立与不成立,N(x)中有Cj个样本具有类别标记yj的条件概率.
通过分析发现,ML—KNN是基于转换的PT(ProblemTransformation)方法,将多标记分类转换为多个单标记分类,然后单独为每个分类进行考虑。
然而多标记学习问题中大多数类别标记之间都是相关的,由此可见,忽略了多个标记之间的相关性,单纯使用与单标记分类相同的统计方式得到的结果是片面的.因此,本文在ML—KNN算法的基础上进行了改进,提出一种迭代的ML—KNN算法(IterativeML—KNN,简称I-ML-KNN),以提高多标记文本的分类效果.
2迭代的ML-KNN算法
在使用分类器函数h(x)时,P(Hj)与P(-Hj)分别代表事件Hj成立与不成立的先验概率,这些先验概率在使用训练数据的训练模型时就可以确定.由于类别标记了yi与yj,可能相关,在对测试数据分类时,如果已经知道z是属于yi的话,那么x也很有可能属于yj或者不属于yj,对应测试用例.算法开始的时候设置类别标记集合V为空.
算法的具体步骤如下:
1)选取测试数据集的任一示例x.
2)初始化类别标记集合V为空.
3)循环开始.
4)如果V为空,使用分类器h(x)进行分类.如果示例x属于类标记y,则把y加入到V中.
5)如果V不为空,使用分类器hv(x)进行分类.如果示例x属于类标记y,则把y加入到V中;
如果x
不属于类标记y,且y在V中,则把y从V中移走.
6)如果集合V不变,循环结束,否则转至步骤4).
7)得到集合V,即为示例x的一组类标记.
算法对ML—KNN的改进主要是在步骤5),原算法总是用分类器函数h(x)对示例x进行分类,而h(x)
主要依赖于后验概率P(Hj|Cj).改进的算法I—ML—KNN在多个分类即类标记集合非空时使用分类器函数
hv(x)对示例X进行分类,可以充分利用已经得到的类标记结果,提高分类的精度.
6个人思考和展望
在信息量激增的今天,文本分类在现实生活中占据了重要的地位,它已成功应用于多个领域中,并发挥出极大的作用。
随着信息技术以及因特网的发展,对中文文本分类技术将会提出更多更高的新要求。
本文所做的工作主要有:
1.简介了KNN算法的核心思想
2.分析了K值得选取对算法的影响以及输入的次序对结果的影响。
3举例分析了算法的复杂度
4对比了KNN算法的优缺点
5论述了如何实现多标签
由于KNN算法还有一些不足,我们需要针对不同的问题对KNN算法做一些改进。
参考文献
[1]PiellaG.Aregiorrbasedmultiresolutionimagefusionalgorithm.In:
ISIFFusion
2002Conference.
[2]KumarHank.Textcategorizationusingweightadjustedk-nearestneighborclassification[R].DeptofCS,UniversityofMinnesota,1999.
[3]WilsonDR,MartinezTR.Improvedheterogeneousdistancefunctions[J].ArtificialIntelligenceResearch,1997,6:
1-34.
[4]PETERHALL,EONGU,PARK1ANDRICHARDJ.SAMWORTH.CHOICEOFNEIGHBORORDERINNEAREST-NEIGHBORCLASSIFICATION.TheAnnalsofStatistics2008,2135–2152.
[5]JiaPan,DineshManocha.BilevelLocalitySensitiveHashingforKNearestNeighbor
.
[6]Wen-JyiHwang,Kuo-WeiWen.FastkNNclassificationalgorithmbasedon
partialdistancesearchElectronicsLettersVolume:
34,Issue:
21Onpage(s):
2062-
2063.
[7]STan.AneffectiverefinementstrategyforKNNtextSystems
withApplications[J].2006,30
(2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- KNN 算法 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)