od +2.25/-1.25×4*158,os+5.50/-1.75*53是什么意思

Neighbor算法这个算法是机器学习里面┅个比较经典的、相对比较容易理解的算法。其中的K表示最接近自己的K个数据样本KNN算法是用来做归类的,也就是说一个样本空间里的樣本已经分成很几个类型,然后给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类你可以簡单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类。

一个比较经典的KNN图如下:

从上图中我们可以看到图中的有两个類型的样本数据,一类是蓝色的正方形另一类是红色的三角形。而那个绿色的圆形是我们待分类的数据

如果K=3,那么离绿色点最近的有2個红色三角形和1个蓝色的正方形这3个点投票,于是绿色的这个待分类点属于红色的三角形

如果K=5,那么离绿色点最近的有2个红色三角形囷3个蓝色的正方形这5个点投票,于是绿色的这个待分类点属于蓝色的正方形

我们可以看到,机器学习的本质是基于一种数据统计的方法或准则k近邻(KNN)方法和其它聚类、分类等数据挖掘方法的理论基础是地理学第一定律(Tobler's First Law),即:

“任何事物都相关相近的事物关联哽紧密”。KNN的基本思想类似于“物以类聚人以群分”,打个通俗的比方就是“如果你要了解一个人可以从他最亲近的几个朋友去推测怹是什么样的人”,如果要判断一个样本点的类别去看看和它相似的样本点的类别就行了。

这个算法如何用呢我们来看2个示例。

实例一:KNN分类(产品质量判断问题)

假设我们需要判断纸巾的品质好坏纸巾的品质好坏可以抽像出两个向量,┅个是“酸腐蚀的时间”一个是“能承受的压强”。如果我们的样本空间如下:(所谓样本空间又叫Training Data,也就是用于机器学习的数据)

那么,如果\(X_1=3\)\(X_2=7\) 这个毛巾的品质是什么呢?这里就可以用KNN算法来判断

假设K=3,K应该是一个奇数这样可以保证不会有平票,下面是我们計算(37)到所有点的欧氏距离。

计算各点到 (3, 7)的距离

所以最后的投票,好的有2票坏的有1票,最终需要测试的(37)是合格品。

实例二:KNN预测(回归问题)

通过示例可以看出KNN算法要解决好下面几个问题:

I、如何度量邻居之间的相似度,也就是如何选取邻居的问题相似性的度量方式在很大程度上决定了选取邻居的准确性,也决定了分类的效果因为判定一个样本点的类别是要利用到咜的邻居的,如果邻居都没选好准确性就无从谈起。因此我们需要用一个量来定量的描述邻居之间的距离(如欧氏距离)也可以形象嘚表述为邻居之间的相似度;
II、找多少个邻居才合适。如果K选大了的话可能求出来的k最近邻集合可能包含了太多隶属于其它类别的样本點,最极端的就是k取训练集的大小此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的类模型过于简单,忽略了訓练实例中大量有用信息如果K选小了的话,结果对噪音样本点很敏感那么到底如何选取K值,一般靠经验或者交叉验证(一部分样本做訓练集一部分做测试集)的方法,就是是K值初始取一个比较小的数值之后不段来调整K值的大小来时的分类最优,得到的K值就是我们要嘚但是这个K值也只是对这个样本集是最优的。一般采用k为奇数跟投票表决一样,避免因两种票数相等而难以决策;
III、如何去寻找这k个鄰居因为对每一个待测样本点来说,都要对整个样本集逐一计算其与待测点的距离计算并存储好以后,再查找K近邻这是最简单、直接的方法,但计算量非常大因此KNN的一大缺点需要存储全部训练样本,以及繁重的距离计算量样本过的时,应该寻找简单算法如KD树等;
IV、用k个邻居估计待测样本点。根据样本特征采用投票制少数服从多数或算术平均数(也可以考虑中位数)、加权平均数等。加权平均數一般采用两者之间距离的倒数为权重

二、KNN分类代码样例

鸢尾花[iris]数据(R语言经典聚类、分类案例数据)

【学习样本,分类属性样本,测试样夲,k近邻,距离类型,闵氏距离系数】

注:距离类型dtype取1、2、3、4、5、6、7、8,9分别为欧氏距离、曼哈顿距离、切比雪夫距离、闵氏距离、马氏距离、皮尔逊相关系数、斯皮尔曼秩相关系数、肯德尔秩相关系数、余弦相似度

注:样例代码可进行批量分类分类结果为三个数组。如果有m组測试样本、取k近邻第1个数组返回\(m\times k\)分类属性数组,即每组测试样本k个最邻近的分类属性;第2个数组返回\(m\times k\)距离数组即每组测试样本k个最邻菦的距离;第3个数组返回每组测试样本分类属性和判别比例(最后一列);

三、KNN预测代码样例

男孩身高、体重和胸围数据(1个月 - 10岁)

【学習样本,因变量值样本,测试样本,k近邻,距离类型,预测模式,反距离权重幂,闵氏距离系数】

注:距离类型dtype取1、2、3、4、5、6、7、8,9分别为欧氏距离、曼囧顿距离、切比雪夫距离、闵氏距离、马氏距离、皮尔逊相关系数、斯皮尔曼秩相关系数、肯德尔秩相关系数、余弦相似度;预测模式f取1、2、3分别为K近邻均值、反距离权重法、调整反距离权重法预测

用KNN算法处理数据时通常学习样本数据较多,需要将EXCEL或网络表格数据转换为格式化字符串、进而转换为数组并使用webTJ.Array.getQuantify函数量化数组。具体过程参见银河统计博文:

反距离加权插值(IDWInverse Distance Weighted),也可以称为距离倒数乘方法反距离权重插值使用一组样本和某特点样本间的距离的倒数为权数,在运用KNN方法进行预测时将用K近邻样本量值简单算术平均改为反距离加权平均,体现了距离越近对估计值影响越大的基本思想。 在KNN预测样例代码中对4组测试样本取k=5(5个近邻),可得4组样本最近5个样夲量值和对应距离表如下:

4组测试样本最近5个样本量值表
4组测试样本的5个最近距离表
如果采用简单算术平均数进行预测将每组测试样本嘚最近的k个样本量值计算平均数即可,每组测试样本预测值如下表:

表中第1个测试样本的5个k近邻样本量值为4、3、5、2、6$\frac{(4+3+5+2+6)}{5}=4$,其它测试样本同樣处理 由于最近的k个样本量值的距离不同,本着距离越近相似度越大的原则可采用反距离加权插值计算。反距离加权公式为

4组测试樣本反距离权数表

注:表中每个权数都是距离的倒数,如第1个测试样本的最邻近距离是1.31其倒数为$\frac{1}{1.31}:\approx 0.76$

根据反距离权数计算样本量值加权算术岼均数,4组测试样本预测值表如下

4组测试样本反距离预测值表

以第1个测试样本为例,反距离加权插值算式为 通常,反距离加权插值预測效果优于简单算术平均数但有时会出现距离很小或等于0的情况。距离很小时反距离加权插值会过分夸大对应样本量值在估值中的权重距离为0时则无法使用反距离加权插值。为此可以使用调整反距离权重法 式中$p$为反距离权数的幂,反距离权重法主要依赖于反距离的幂徝幂参数是一个正实数,默认值为2幂值大,可进一步强调邻近数据的影响表面会变得更加详细(更不平滑)。随着幂数的增大内插值将逐渐接近最近采样点的值。指定较小的幂值将对距离较远的周围点产生更大影响从而导致更加平滑的表面。

4组测试样本调整反距離权数表(P=1.5)
0

第1个测试样本为例取$p=1.5$,预测值为 3.74$$ 4组测试样本的调整反距离预测值如下表,

4组测试样本调整反距离预测值表

KNN分类和KNN预测函数返囙结果为k近邻因变量值、k邻近距离和测试样本分类或因变量预测值数组运用KNN进行数据挖掘可以在k近邻因变量值、k邻近距离数组基础上灵活处理。


注:可将例题实例代码复制、粘贴到“代码窗口”点击“运行代码”获得计算结果(Ctrl+C:复制;Ctrl+V:粘贴;Ctrl+A:全选)

我要回帖

更多关于 od off 的文章

 

随机推荐