K-nearest Neighbors,隔壁小芳可还好 | 机器学习

在这里插入图片描述

1. 问题

蒋方舟有句话说的挺好,大意是人应该多读书,那样才能开阔眼界,不读书的话,你的见识就是由你身边的亲戚朋友决定的。话说的不那么动听,但道理是这么个道理。这说明了周围环境对个人的影响。其实不只是人,数据也是,比如 K-nearest Neighbors(k-NN),就是利用身边最近的邻居来进行预测的一种算法。

2. 分析

K-nearest Neighbors 的原理很好理解。我们以二维平面为例。假设现在有一系列点, [ ( x 11 , x 12 ) , ( x 21 , x 22 ) , … , ( x n 1 , x n 2 ) ] [(x_{11}, x_{12}), (x_{21}, x_{22}),\dotsc, (x_{n1}, x_{n2})] [(x11,x12),(x21,x22),,(xn1,xn2)],对应标签 [ y 1 , y 2 , … , y n ] ∈ [ 0 , 1 ] [y_1, y_2, \dotsc, y_n]\in [0, 1] [y1,y2,,yn][0,1]。现在有新的数据 ( x k 1 , x k 2 ) (x_{k1}, x_{k2}) (xk1,xk2),想要判断其是 0 还是 1 。

k-NN 算法,就是计算新的数据和已有数据之间的距离,然后挑选距离最近的那一个或多个的标签,具体几个,也即参数 k,可以由用户指定。一般来说,太小的 k 容易产生过拟合问题,太大的 k 又容易产生拟合不足的问题,所以选取合适的 k 值是这个算法的一个问题。

假如我们选择 k = 5 k=5 k=5,结果 3 个邻居的 y = 0,2个邻居的 y=1,应该怎么判断呢?一般来说,我们少数服从多数(simple majority vote),但也可以指定权重,比如让距离更近的权重更高。

还有一个问题时,二维空间很容易表示,但遇到多维空间,这个距离怎么算?很简单,扩充到多维空间就是了。比如变量 x 和 y 都是 n 维变量,其欧氏距离(Euclidean distance)即为

ρ = ∑ i = 1 n ( x i − y i ) 2 \rho = \sqrt{\sum_{i=1}^n(x_i - y_i)^2} ρ=i=1n(xiyi)2

另外还有其他距离,比如曼哈顿距离(Manhattan distance)等。但实际应用中还是以欧氏距离最为常用。

k-NN 算法简单,功能却不简单。不仅可以做分类,还可以做回归。在图像处理、手写识别等方面,k-NN都有很广泛的应用。

而且k-NN是一种被称为无参数(non-parametric method)的机器学习方法,因为不像其他学习方法,需要根据数据学习出一系列的 Weighting,它只是根据特征值计算距离;所以在决策边界不规则的地方,应用效果尤其好。

3. 实现

我们用经典的鸢尾花数据集(iris)做个测试

import numpy as np
from sklearn import neighbors, datasets
from sklearn.model_selection import train_test_split

X, y = datasets.load_iris(return_X_y=True)

X_train, X_test, y_train, y_test = train_test_split(X, y)
clf = neighbors.KNeighborsClassifier()
clf.fit(X_train, y_train)

print("Training set score: {:.2f}".format(clf.score(X_train, y_train)))
print("Test set score: {:.2f}".format(clf.score(X_test, y_test)))

测试结果

Training set score: 0.97
Test set score: 0.97

准确率97%,很赞。

4. 总结

今天我们大致介绍了k-NN的用法。所谓物以类聚人以群分,诚不我欺。

有点怀念儿时的邻居小芳了。多年未见,一切可还安好?

在这里插入图片描述

相关代码均已上传到Github(https://github.com/jetorz/Data2Science)。

5. 交流

**独学而无友则孤陋寡闻。**现有「数据与统计科学」微信交流群,内有数据行业资深从业人员、海外博士、硕士等,欢迎对数据科学、数据分析、机器学习、人工智能有兴趣的朋友加入,一起学习讨论。

大家可以扫描下面二维码,添加荔姐微信邀请加入,暗号:机器学习加群。

在这里插入图片描述

6. 扩展

6.1. 延伸阅读

6.2. 参考文献

  1. G. James, D. Witten, T. Hastie R. Tibshirani, An introduction to statistical learning: with applications in R. New York: Springer, 2013.
  2. T. Hastie, R. Tibshirani, J. H. Friedman, The elements of statistical learning: data mining, inference, and prediction, 2nd ed. New York, NY: Springer, 2009.
  3. W. Härdle, L. Simar, Applied multivariate statistical analysis, 3rd ed. Heidelberg ; New York: Springer, 2012.

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值