KNN算法的算法思想

之前讲解的线性回归和逻辑回归的原理中,不免会引入大量的数学推导和证明过程,从预测函数的建立,到损失函数的偏导数求解,不免要求读者有扎实的高等数学功底和线性代数功底,那么机器学习里有没有稍微大众化,通俗易懂的算法呢?KNN算法就是最浅显易懂的算法之一

假设我们有苹果,橙子,香蕉三类水果,你希望记录这三类的特征数据,比如最基本的长度、宽度、高度、重量、周长、体积、光泽度、湿度等量化的物理量,然后统计出一份含有这些物理量的样品表,其中每一行代表一个水果,你可以很容易的为每一行打上水果标签,然后你希望写出某个算法,在当你得到一个未知水果时,通过算法和统计的样本表,根据每个水果都有的物理量来自动推理出这个未知的水果属于哪一类水果?

显然,这是一个分类算法,并且属于监督学习,KNN算法就是其中最典型最容易实现的算法

本章知识点:

1、数据在不同维度上分布的分类表现

2、KNN算法的思想

3、数据归一化处理

4、找邻居

5、投票决定

6、监督学习的过程

7、KNN的优缺点

从知识点可以看出,KNN算法并没有涉及到高等数学的推导过程,这个算法非常人性,非常简单

一. 数据在不同维度上分布的分类表现

假设我们的样本集是由苹果,橙子,香蕉这3个类别组成,其中每个样本有4个量化物理维度

样本集合

我们从采集到的样本集合里可以知道,每一行4个维度代表一个样本,并且最后一列表明了样本的类别,这就是典型的监督学习样本,我们以这个样本为参考系,通过算法来预测未知样本。

我们先用二维空间为参考系,选取样本的第一维和第四维来绘制样本集

二维空间上样本第一维和第四维分布

从第一维和第四维分布上我们看到这三类分类除了颜色区分,离散度是较高的,我们再选择第一维和第三维来绘制

二维空间上样本第一维和第三维分布

从第一维和第三维分布上我们可以看到分类效果稍微比前面的清楚一点(没有那么离散)

下面我们用三维空间为参考系,选取样本的第一维,第二维,第三维来绘制样本集

三维空间上样本前三维分布

可以看出它的庐山真面目,分类效果更加明显,那么四维空间上的分布呢?对不起,人类无法看到高维空间

二. KNN算法的思想

KNN(k-NearestNeighbor)又被称为近邻算法,它的核心思想是:物以类聚,人以群分

假设一个未知样本数据x需要归类,总共有ABC三个类别,那么离x距离最近的有k个邻居,这k个邻居里有k1个邻居属于A类,k2个邻居属于B类,k3个邻居属于C类,如果k1>k2>k3,那么x就属于A类,也就是说x的类别完全由邻居来推断出来

所以我们可以总结出其算法步骤为:

1、计算测试对象到训练集中每个对象的距离

2、按照距离的远近排序

3、选取与当前测试对象最近的k的训练对象,作为该测试对象的邻居

4、统计这k个邻居的类别频率

5、k个邻居里频率最高的类别,即为测试对象的类别

我们可以简化为:找邻居 + 投票决定

三. 数据归一化

有了算法的思想,首先我们要做的是将采集到的样本集做归一化处理

因为不同维度的物理量之间往往具有不同的量纲和单位,比如时间,距离等,这样会造成维度之间可比性较差,为了消除物理量之间绝对值相差太大,需要对样本数据集进行标准化处理,保证各个物理量之间处于同一个数量级之下,消除不同量纲之间的差异,一般有如下两个常用的归一化方法:

1、线性归一化(Min-Max scaling)

离差标准化

该方法通过线性变化对原始数据进行等比例缩放映射到[0,1]之间,其中X*为归一化后的数据,X为原始数据,Xmin和Xmax分别为X向量的最小值和最大值

2、0均值标准化(Z-score standardization)

均值归一化

该方法将原始数据归一化为均值为0、方差为1的数据集,且该数据集符合标准的高斯分布,其中X*为归一化后的数据,X为原始数据,μ为X向量的均值,σ为X向量的标准差

归一化样本数据集

四. 找邻居

设x为TestSet的一个n维向量样本,我们需要在TrainSet中找到距离x最近的k个n维向量样本作为x的邻居,那么问题转化为怎么计算多组两个n维向量之间的距离?

一般对于两个n维向量,如果是直接物理量,可以用欧氏距离、曼哈顿距离等来计算这两个n维向量之间的距离;而对于文本分类而言,一般会使用余弦定理来计算这两个n维向量之间的夹角来确定相似度

在这里,我们采用欧式距离来计算,设y为TrainSet中任意一个n维向量样本,则x和y之间的距离可以表示为:

两个向量的欧式距离

我们需要分别计算x到TrainSet中所有样本的距离,并对这些距离从小到大排序,选取前k个距离的样本就找到了x的k个邻居(物以类聚的思想)

其中k值的设定一般低于样本数量的平方根,且为奇数最适宜

选取x的k个邻居

五. 投票决定

我们得到x的k个邻居后,需要统计这k个邻居的类别频率,已少数服从多数的原则,同一类别最多的邻居,即作为x的类别(x的类别完全由邻居来投票推断)

k个邻居推断x的类别

六. KNN监督学习的过程

我们将样本集划分为25%的测试集和75%的训练集,以5个邻居为例运行算法得到下面结果

KNN算法预测结果

可以看到算法只预测错了1个样本的分类,准确率达到90%以上

以KNN算法为例,我们可以总结出监督学习的基本流程

1、归一化数据样本集

2、划分样本集为训练集和测试集

3、以训练集为算法参考系,测试集来测试算法

4、计算预测样品标签和真实样品标签的比值来评估算法的准确率

5、调节不同的参数找到最优算法参数

7. KNN算法的优缺点

1、优点

非常简单的分类算法没有之一,人性化,易于理解,易于实现

适合处理多分类问题,比如推荐用户

2、缺点

属于懒惰算法,时间复杂度较高,因为需要计算未知样本到所有已知样本的距离

样本平衡度依赖高,当出现极端情况样本不平衡时,分类绝对会出现偏差

可解释性差,无法给出类似决策树那样的规则

向量的维度越高,欧式距离的区分能力就越弱

KNN算法案例代码见:KNN算法的基本原理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,277评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,777评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,946评论 0 245
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,271评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,636评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,767评论 1 221
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,989评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,733评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,457评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,674评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,155评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,518评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,160评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,114评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,898评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,822评论 2 280
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,705评论 2 273

推荐阅读更多精彩内容