(完整版)KNN算法实验报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
KNN 算法实验报告 一 试验原理 K最近邻(k-NearestNeighbor ,KNN)分类算法,是一个理论上比 较成熟的方法,也是最简单的机器学习算法之一。 该方法的思路是:如果一个样本在特征空间中的 k 个最相似( 即 特征空间中最邻近 )的样本中的大多数属于某一个类别,则该样本也 属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。 该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决 定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理, 但在类别决策时, 只与极少量的相邻样本有关。 由于 KNN方法主要靠 周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别 的,因此对于类域的交叉或重叠较多的待分样本集来说, KNN方法较 其他方法更为适合。 KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样 本的 k 个最近邻居, 将这些邻居的属性的平均值赋给该样本, 就可以 得到该样本的属性。 更有用的方法是将不同距离的邻居对该样本产生 的影响给予不同的权值 (weight) ,如权值与距离成正比。 该算法在分类时有个主要的不足是, 当样本不平衡时, 如一个类 的样本容量很大, 而其他类样本容量很小时, 有可能导致当输入一个 新样本时, 该样本的 K个邻居中大容量类的样本占多数。 该算法只计 算“最近的”邻居样本, 某一类的样本数量很大, 那么或者这类样本 并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量 并不能影响运行结果。 可以采用权值的方法 (和该样本距离小的邻居 权值大)来改进。 该方法的另一个不足之处是计算量较大,因为对每 一个待分类的文本都要计算它到全体已知样本的距离, 才能求得它的 K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑, 事先去除对分类作用不大的样本。 该算法比较适用于样本容量比较大 的类域的自动分类, 而那些样本容量较小的类域采用这种算法比较容 易产生误分。 二 试验步骤 那么根据以上的描述,我把结合使用反余弦匹配和 kNN 结合的 过程分成以下几个步骤: 1.计算出样本数据和待分类数据的距离 2.为待分类数据选择 k 个与其距离最小的样本 3.统计出 k 个样本中大多数样本所属的分类 4.这个分类就是待分类数据所属的分类 数学表达:目标函数值可以是离散值 (分类问题 ),也可以是连续 值(回归问题).函数形势为 f:n 维空间 R— 〉一维空间 R。 第一步:将数据集分为训练集( DTrn)和测试集( DTES)。 第二步:在测试集给定一个实例 Xq;在训练集(DTrn)中找到与 这个实例 Xq 的 K-最近邻子集 {X1 、、、、XK} ,即:DKNN 。 第三步:计算这 K-最近邻子集得目标值,经过加权平均: ^f(Xq)=(f(X1)+...+f(XK))/k 作为 f(Xq )的近似估计。改进的地方:对 kNN 算法的一个明显的改进是对 k 个最近邻的贡献加权,将较大的 权值赋给较近的近邻,相应的算法称为距离加权 kNN 回归算法,则 公式 1 则修改为: ^f(Xq)=(w1*f(X1)+...+wk*f(XK))/(w1+...wk) 一般地 距离权值 wi 和距离成反比关系,例如, wi 近似=1/d(xq;xi).K 值的选 择:需要消除 K 值过低,预测目标容易产生变动性,同时高 k 值时, 预测目标有过平滑现象。 推定 k 值的有益途径是通过有效参数的数目 这个概念。有效参数的数目是和 k 值相关的,大致等于 n/k,其中,n 是这个训练数据集中实例的数目。 缺点: (1)在大训练集寻找最近邻的时间是难以忍受的。 (2)在训练数据集中要求的观测值的数目, 随着维数 p 的增长以 指数方式增长。 这是因为和最近邻的期望距离随着维数 p 的增多而急 剧上升,除非训练数据集的大小随着 p 以指数方式增长。 这种现象被 称为“维数灾难 ”。 解决办法有下面几个: (1)通过降维技术来减少维数,如主成分分析,因子分析,变 量选择(因子选择)从而减少计算距离的时间; (2)用复杂的数据结构,如搜索树去加速最近邻的确定。这个 方法经常通过公式 2 公式 1 设定 “几乎是最近邻 ”的目标去提高搜索速 度; (3)编辑训练数据去减少在训练集中的冗余和几乎是冗余的点, 从而加速搜索最近邻。 在个别例子中去掉在训练数据集中的一些观察 点,对分类效果没有影响, 原因是这些点被包围属于同类的观测点中。 三 注意事项 KNN 算法的实现要注意: 1.用 TreeMapString,TreeMapString,Double保存测试集和训练 集。 2.注意要以类目_文件名作为每个文件的 key,才能避免同名不同 内容的文件出现。 3. 注意设

文档评论(0)

137****7230 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档