版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
KNN算法是怎么来的电影名称打斗次数接吻次数电影类型CaliforniaMan
3104RomanceHe’sNotReallyintoDudes
2100RomanceBeautifulWoman
181RomanceKevinLongblade
10110ActionRoboSlayer3000
995ActionAmpedII
982Action未知1890Unknown猜猜看:最后一行未知电影属于什么类型的电影。KNN算法是怎么来的点X坐标Y坐标点类型A点
3104RomanceB点
2100RomanceC点
181RomanceD点
10110ActionE点
995ActionF点
982ActionG点1890Unknown猜猜看:最后一行未知点属于什么类型的点。最近邻算法由此,我们引出最近邻算法的定义:为了判定未知样本的类别,以全部训练样本作为代表点,计算未知样本与所有训练样本的距离,并以最近邻者的类别作为决策未知样本类别的唯一依据。
最近邻算法的缺陷——对噪声数据过于敏感,为了解决这个问题,我们可以把未知样本周边的多个最近样本计算在内,扩大参与决策的样本量,以避免个别数据直接决定决策结果。由此,引进K-近邻(knearestneighbor)算法。KNN算法是用来干什么的
K-最近邻算法是最近邻算法的一个延伸。基本思路是:选择距离未知样本最近的K个样本,该K个样本大多数属于某一类型,则未知样本判定为该类型。问题:有一个未知形状X(图中绿色的圆点),如何判断X是什么形状?右图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。KNN算法基本描述k-近邻法:基本规则是,在所有N个样本中,找到测试样本的k(k<=N)个最近邻者,当k=1时,knn问题就变成了最近邻问题。其中各类别所占个数表示成ki,i=1,…,c。定义判别函数为:
gi(x)=ki,i=1,2,…,c。k-近邻一般采用k为奇数,跟投票表决一样,避免因两种票数相等而难以决策。多数表决决策规则为:计算步骤如下:
1)算距离:给定测试对象,计算它与训练集中的每个对象的距离
2)找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻
3)做分类:根据这k个近邻归属的主要类别,来对测试对象分类
距离度量KNN算法中,距离如何定义?就是如何度量邻居之间的相识度,也就是如何选取邻居的问题,我们知道相似性的度量方式在很大程度上决定了选取邻居的准确性,也决定了分类的效果,因为判定一个样本点的类别是要利用到它的邻居的,如果邻居都没选好,准确性就无从谈起。因此我们需要用一个量来定量的描述邻居之间的距离,也可以形象的表述为邻居之间的相似度,具体的距离度量方式有很多,不同的场合使用哪种需要根据不同问题具体探讨,如文本类型,一般用余弦相似度。
KNN算法是怎么来的想一想:下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类?1968年,Cover和Hart提出了最初的近邻法。最近邻算法
提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类。由此,我们引出最近邻算法的定义:为了判定未知样本的类别,以全部训练样本作为代表点,计算未知样本与所有训练样本的距离,并以最近邻者的类别作为决策未知样本类别的唯一依据。但是,最近邻算法明显是存在缺陷的,我们来看一个例子。KNN算法是怎么来的问题:有一个未知形状X(图中绿色的圆点),如何判断X是什么形状?K-最近邻算法
显然,通过上面的例子我们可以明显发现最近邻算法的缺陷——对噪声数据过于敏感,为了解决这个问题,我们可以可以把位置样本周边的多个最近样本计算在内,扩大参与决策的样本量,以避免个别数据直接决定决策结果。由此,我们引进K-最近邻算法。
KNN算法是用来干什么的
K-最近邻算法是最近邻算法的一个延伸。基本思路是:选择未知样本一定范围内确定个数的K个样本,该K个样本大多数属于某一类型,则未知样本判定为该类型。
下面借助图形解释一下。KNN算法的实现步骤算法步骤:step.1---初始化距离为最大值step.2---计算未知样本和每个训练样本的距离diststep.3---得到目前K个最临近样本中的最大距离maxdiststep.4---如果dist小于maxdist,则将该训练样本作为K-最近
邻样本step.5---重复步骤2、3、4,直到未知样本和所有训练样本的
距离都算完step.6---统计K个最近邻样本中每个类别出现的次数step.7---选择出现频率最大的类别作为未知样本的类别KNN算法的实现步骤算法步骤:1:令k是最近邻数目,D是训练样例的集合2:for每个测试样例zdo3:计算z和每个训练样例之间的距离d4:对d进行升序排序5:取前k个训练样例的集合6:统计K个最近邻样本中每个类别出现的次数7:选择出现频率最大的类别作为未知样本的类别8:endforKNN算法MATLAB%KNNclassifiers,%trainingistrainingset,testingistestset,%Disthedistance,D=1is曼哈顿距离;D=2is欧氏距离;D=3是切比雪夫%距离%Kisthenumberofselectedneighborsfunctionlabel=KNN(training,testing,D,K)[row,column]=size(training);%%%row行(样本),column列(属性)[row1,column1]=size(testing);%计算测试集与训练集的距离KNN算法MATLAB%数据标准化Tr_m=min(training);%%%每列(属性)取最小值,得到一个行向量Tr_s=max(training);%%%每列(属性)取最大值,得到一个行向量Tr=[];Te=[];fori=1:(column-1)%%%最后一列是类标号Tr_mi=(training(:,i)-Tr_m(i))/Tr_s(i);%%每列中的数据减该列最小值,再除以该列最大值Te_mi=(testing(:,i)-Tr_m(i))/Tr_s(i);Tr=[Tr,Tr_mi];Te=[Te,Te_mi];endtraining=[Tr,training(:,column)];%%%加上类标号testing=Te;%%%training比testing多一列类标号KNN算法MATLAB%%%%%计算距离%%D=1曼哈顿距离%%%%%%%%%%%%%%%%distance=[];ifD==1fori=1:row1forj=1:rowtemp=[training(j,[1:(column-1)]);testing(i,:)]‘;%%变为两个列向量d=mandist(temp);%%%mandist函数求曼哈顿距离distance(i,j)=d(1,2);%%两个列向量求mandist,得出endendendKNN算法MATLAB%%%%%计算欧几里得距离%%%%%%%%%%%%%%%%%%ifD==2fori=1:row1forj=1:rowtemp=[training(j,[1:(column-1)]);testing(i,:)]';d=dist(temp);%%%%dist函数计算距离distance(i,j)=d(1,2);endendendKNN算法MATLAB%%%%%计算切比雪夫距离%%%%%%%%%%%%%%%%%%ifD==3fori=1:row1forj=1:rowtemp=[training(j,[1:(column-1)]);testing(i,:)];%%两个行向量d=max(abs(temp(1,:)-temp(2,:)));%%两个行向量求距离distance(i,j)=d;endendendKNN算法MATLAB%%%%寻找k个近邻%%%%算法核心部分%%%%%%%%%%%%%%label=[];fori=1:row1[a,b]=sort(distance(i,:));%%针对第i个测试样本与所有训练样本的距离,进行升序排序,距离越小,离的越近,a返回排序后的距离,b返回排序后的下标neighbors=b(1:K)‘;%%选取前k个下标neighbors_D=training(neighbors,column);%%对应下标找到k个类标号[x,y]=sort(neighbors_D);%对K个类标号排序,x返回类标号,y返回下标temp=find(diff(x)~=0);nei_d=[x(1);x(temp+1)];%对前k个样本的标签进行分类KNN算法MATLAB
Num_D=[];forj=1:length(nei_d)num=length(find(neighbors_D==nei_d(j)));Num_D=[Num_D,num];end%%%%%计算样本的类别号%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[a,b]=max(Num_D);%取标签较多的那个类作为测试样本的类别
label(i)=nei_d(b);end%label=label';
KNN算法的缺陷
观察下面的例子,我们看到,对于位置样本X,通过KNN算法,我们显然可以得到X应属于红点,但对于位置样本Y,通过KNN算法我们似乎得到了Y应属于蓝点的结论,而这个结论直观来看并没有说服力。KNN算法的具体实现
由上面的例子可见:该算法在分类时有个重要的不足是,当样本不平衡时,即:一个类的样本容量很大,而其他类样本数量很小时,很有可能导致当输入一个未知样本时,该样本的K个邻居中大数量类的样本占多数。但是这类样本并不接近目标样本,而数量小的这类样本很靠近目标样本。这个时候,我们有理由认为该位置样本属于数量小的样本所属的一类,但是,KNN却不关心这个问题,它只关心哪类样本的数量最多,而不去把距离远近考虑在内,因此,我们可以采用权值的方法来改进。和该样本距离小的邻居权值大,和该样本距离大的邻居权值则相对较小,由此,将距离远近的因素也考虑在内,避免因一个样本过大导致误判的情况。KNN算法的缺陷
从算法实现的过程大家可以发现,该算法存两个严重的问题,第一个是需要存储全部的训练样本,第二个是需要进行繁重的距离计算量。对此,提出以下应对策略。
KNN算法的改进:分组快速搜索近邻法
其基本思想是:将样本集按近邻关系分解成组,给出每组质心的位置,以质心作为代表点,和未知样本计算距离,选出距离最近的一个或若干个组,再在组的范围内应用一般的knn算法。由于并不是将未知样本与所有样本计算距离,故该改进算法可以减少计算量,但并不能减少存储量。KNN算法的改进:压缩近邻算法
利用现在的样本集,采取一定的算法产生一个新的样本集,该样本集拥有比原样本集少的多的样本数量,但仍然保持有对未知样本进行分类的能力。
基本思路:定义两个存储器,一个用来存放生成的样本集,称为output样本集;另一个用来存放原来的样本集,称为original样本集。1.初始化:output样本集为空集,原样本集存入original样本集,从original样本集中任意选择一个样本移动到output样本集中;2.在original样本集中选择第i个样本,并使用output样本集中的样本对其进行最近邻算法分类,若分类错误,则将该样本移动到output样本集中,若分类正确,不做任何处理;3.重复2步骤,直至遍历完original样本集中的所有样本,output样本集即为压缩后的样本集。通过这种方式也能减少算法的计算量,但仍然无法减少存储量。KNN算法几大问题1、k值设定为多大?
k太小,分类结果易受噪声点影响;k太大,近邻中又可能包含太多的其它类别的点。k值通常是采用交叉检验来确定。经验规则:k一般低于训练样本数的平方根
KNN算法几大问题2、类别如何判定最合适?
投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以加权投票法更恰当一些。3、如何选择合适的距离衡量?
高维度对距离衡量的影响:众所周知当变量数越多,欧式距离的区分能力就越差。变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化。
4、训练样本是否要一视同仁?
在训练集中,有些样本可能是更值得依赖的。可以给不同的样本施加不同的权重,加强依赖样本的权重,降低不可信赖样本的影响。
分类学习算法的种类
积极学习法(决策树归纳):先根据训练集构造出分类模型,根据分类模型对测试集分类。5、性能问题?
kNN是一种懒惰算法,平时不好好学习,考试(对测试样本分类)时才临阵磨枪(临时去找k个近邻)。消极学习法(基于实例的学习法):推迟建模,当给定训练元组时,简单地存储训练数据(或稍加处理),一直等到给定一个测试元组。消极学习法在提供训练元组时只做少量工作,而在分类或预测时做更多的工作。懒惰的后果:构造模型很简单,但在对测试样本分类地的系统开销大,因为要扫描全部训练样本并计算距离。
Multi-LabelLearning(MLL)Multi-labelobjectsareubiquitous!KNN算法的扩展:ML-KNN(Multi-labelKNN)Min-LingZhang,Zhi-HuaZhou.ML-KNN:AlazylearningapproachtoMulti-labellearning.PatternRecognition,40(2007):2038-2048.KNN算法的扩展:ML-KNN(Multi-labelKNN)未知样本dt的3个最近邻是d4,d5,d6.则nt=<0,1,0>+<0,1,1>+<1,1,0>=<1,3,1>.运用maximumaposteriori(MAP)那么对于此例子,对类1:P(H1=1|E=1)?P(H1=0|E=1)对类2:P(H2=1|E=3)?P(H2=0|E=3)对类3:P(H3=1|E=1)?P(H3=0|E=1)KNN算法的扩展:ML-KNN(Multi-labelKNN)由贝叶斯公式:第一步:先求出先验概率:KNN算法的扩展:ML-KNN(Multi-labelKNN)设平滑参数s=1.则P(H1=1)=(1+4)/(2*1+6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024水稻买卖合同
- 0×5=?(说课稿)-2024-2025学年三年级上册数学北师大版
- 不动产融资租赁协议范本(2024版)版B版
- 2024年简化版借款合同范本版B版
- 2024美容院连锁店员工薪酬及福利待遇合同范本3篇
- 个人消费微贷合同范本(2024年版)版
- 福建省南平市塔前中学高一数学理下学期期末试卷含解析
- 2024月子中心消防设施节能改造与优化合同3篇
- 多地取还车协议书(2篇)
- 个人房产抵押借款合同范本2024年版版B版
- 2025年度爱读书学长策划的读书讲座系列合同2篇
- 广东省深圳市宝安区2024-2025学年八年级英语上学期1月期末英语试卷(含答案)
- 《招标投标法》考试题库200题(含答案)
- 《交通运输行业安全生产监督检查工作指南 第2部分:道路运输》
- 初二生物期末质量分析及整改措施
- 公交车站台服务规范与安全意识
- 云南省楚雄彝族自治州2024届高三上学期期末考试数学试题(解析版)
- 驾驶证学法减分(学法免分)试题和答案(50题完整版)1650
- 实验室安全教育课件
- 四川省食品生产企业食品安全员理论考试题库(含答案)
- 《中国溃疡性结肠炎诊治指南(2023年)》解读
评论
0/150
提交评论