=Start=
缘由:
想通过快速整理《机器学习实战》一书中出现过的各种机器学习算法的原理及其优缺点和适用范围来快速学习、了解常见的机器学习算法。
正文:
参考解答:
1、kNN算法简介
k近邻算法(k-nearest neighbor algorithm, kNN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。它的工作原理是:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类。
2、kNN算法的流程
- 计算已知类别数据集中的点与当前点之间的距离;
- 按照距离递增次序排序;
- 选取与当前点距离最小的k个点;
- 确定前k个点所在类别的出现频率;
- 返回前k个点所出现频率最高的类别作为当前点的预测分类。
3、kNN算法的优缺点和适用情况
- 优点:精度高,对异常数据不敏感(你的类别是由邻居中的大多数决定的,一个异常邻居并不能影响太大),无数据输入假定,简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归;;
- 缺点:计算复杂度高(需要计算新的数据点与样本集中每个数据的“距离”,以判断是否是前k个邻居),空间复杂度高(巨大的矩阵),最大的缺点是无法给出数据的内在含义;
- 适用数据范围:数值型(目标变量可以从无限的数值集合中取值)和标称型(目标变量只有在有限目标集中取值)。
4、kNN算法的一般流程
- 收集数据:可以使用任何方法。
- 准备数据:距离计算所需要的数值,最好是结构化的数据格式。
- 分析数据:可以使用很多方法对数据进行分析,例如使用Matplotlib将数据可视化。
- 测试算法:计算错误率。
- 使用算法:错误率在可接受范围内,就可以运行kNN算法进行分类。
参考链接:
- https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm
- Introduction to k-Nearest Neighbors: A powerful Machine Learning Algorithm(with implementation in Python & R)
- 机器学习实战教程(一):K-近邻算法(史诗级干货长文)
https://zhuanlan.zhihu.com/p/28656126 - 【数学】一只兔子帮你理解 kNN
https://zhuanlan.zhihu.com/p/22345658 - 【机器学习】k-近邻算法以及算法实例
- https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html
=END=
《“机器学习-kNN”》 有 1 条评论
Amazing Article ! I would like to thank you for the efforts you had made for writing this awesome article. This article inspired me to read more. keep it up.
Correlation vs Covariance
Simple Linear Regression
data science interview questions