博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
100天搞定机器学习|Day7 K-NN
阅读量:4884 次
发布时间:2019-06-11

本文共 1316 字,大约阅读时间需要 4 分钟。

机器学习100天|Day1数据预处理

100天搞定机器学习|Day2简单线性回归分析

100天搞定机器学习|Day3多元线性回归

100天搞定机器学习|Day4-6 逻辑回归

最近事情无比之多,换了工作、组队参加了一个比赛、和朋友搞了一些小项目,公号荒废许久。坚持是多么重要,又是多么艰难,目前事情都告一段落,我们继续100天搞定机器学习系列。想要继续做这个是因为,一方面在具体应用中,发现很多之前遗漏的点,可以在这里查漏补缺,巩固知识点。另一方面,也是想大家一起打卡学习,一起探讨。

那么,继续学习。

本算法很简单,day7,原文作者仅简单介绍了kNN算法。

01k-NN算法

K最近邻(k-Nearest Neighbor,KNN)是数据挖掘分类技术中最简单的方法之一,是机器学习中唯一一个不需要训练过程的算法。K最近邻,即每个样本都可以用它最近的k个邻居代表。核心思想是如果两个样本的特征足够相似,它们就有更高的概率属于同一个类别,并具有这个类别上样本的特性。比较通俗的说法就是“近朱者赤近墨者黑”。

优点是简单,易于理解,易于实现,无需估计参数,无需训练;适合对稀有事件进行分类;特别适合于多分类问题, kNN比SVM的表现要好。

缺点是算法复杂度高,每一个待分类的样本都要计算它到全体已知样本的距离,效率较低;预测结果不具有可解释性,无法给出像决策树那样的规则;

02KNN如何工作?

kNN算法的过程如下:

1、选择一种距离计算方式, 通过数据所有的特征计算新数据与已知类别数据集中数据点的距离;
2、按照距离递增次序进行排序, 选取与当前距离最小的 k 个点;
3、对于离散分类, 返回 k 个点出现频率最多的类别作为预测分类; 对于回归, 返回 k 个点的加权值作为预测值。

如上图中,对灰色圆点进行分类,划分其属于绿、黄、红何种类型。首先需要计算灰点和近邻电之间的距离,确定其k近邻点,使用周边数量最多的最近邻点类标签确定对象类标签,本例中,灰色圆点被划分为黄色类别。

03几种距离

距离越近,表示越相似。距离的选择有很多,通常情况下,对于连续变量, 选取欧氏距离作为距离度量; 对于文本分类这种非连续变量, 选取汉明距离来作为度量. 通常如果运用一些特殊的算法来作为计算度量, 可以显著提高 K 近邻算法的分类精度,如运用大边缘最近邻法或者近邻成分分析法。

欧氏距离

切比雪夫距离

马氏距离

夹角余弦距离

切比雪夫距离

曼哈顿(Manhattan)距离

关于这些距离细节,大家可以移步:

04K值

k值是可以直接影响预测结果的自定义常数。k值选择太小,邻居就会过少,易受噪声数据干扰,导致分类精度较低。k值选择太大,易蒋不相似数据包含进来,造成噪声增加,分类效果不佳。比较常用的是使用交叉验证误差统计选择法,比较不同K值时的交叉验证平均误差率, 选择误差率最小的那个K值. 例如选择K=1, 2, 3, ... , 对每个K = i 做100次交叉验证, 计算出平均误差, 通过比较选出误差最小的那个。

参考文献:

转载于:https://www.cnblogs.com/jpld/p/11262894.html

你可能感兴趣的文章
shell 脚本中$$,$#,$?分别代表什么意思?
查看>>
[BZOJ1878][SDOI2009]HH的项链
查看>>
试用期三个月的状态
查看>>
linux内核启动流程[转]
查看>>
扯在前面的话
查看>>
创建odoo数据库时出现错误原因
查看>>
Scrum Meeting day 1
查看>>
windows程序内部运行机制
查看>>
Eclipse 3.6版本正式发布 扩展诸多平台特性
查看>>
微信小程序如何引入外部字体库iconfont的图标
查看>>
hdu 1698(线段树)
查看>>
集合遍历
查看>>
JVM--常见的虚拟机回收算法
查看>>
Linux备忘录:创建IDEA快捷方式
查看>>
CI 的一些方法
查看>>
oracle忽略大小写
查看>>
EST
查看>>
redhat6.7 yum网络源配置
查看>>
百度网络监控实战:NetRadar横空出世(下)
查看>>
javascript往textarea追加内容
查看>>