【基础算法】K近邻

K-近邻(KNN)算法是一种简单的机器学习算法,常用于分类任务。文章介绍了KNN的基本概念,包括KNN分类、距离函数、算法解析及详细步骤。并探讨了Spark环境下KNN的实现,通过数据集展示了KNN算法的运用。
摘要由CSDN通过智能技术生成

简介

K-近邻(K-Nearest Neighbors, KNN)是一个非常简单的机器学习算法,很多机器学习算法书籍都喜欢将该算法作为入门的算法作为介绍。

KNN分类问题是找出一个数据集中与给定查询数据点最近的K个数据点。这个操作也成为KNN连接(KNN-join)。可以定义为:给定两个数据集R合S,对R中的每一个对象,我们希望从S中找出K个最近的相邻对象。

在数据挖掘中,R和S分别称为查询和训练(traning)数据集。训练数据集S表示已经分类的数据,而查询数据集R表示利用S中的分类来进行分类的数据。

KNN是一个比较重要的聚类算法,在数据挖掘(图像识别)、生物信息(如乳腺癌诊断)、天气数据生成模型和商品推荐系统中有很多应用。

缺点:开销大。特别是有一个庞大的训练集时。正是这个原因,使用MapReduce运行该算法显得非常的有用。

1、KNN算法

1.1、KNN分类

KNN的中心思想是建立一个分类方法,使得对于将y(响应变量)与x(预测变量)关联的平滑函数f的形式映射。假设:

y = f ( x ) , x = ( x 1 , x 2 , . . . , x n ) y = f(x),x = (x_{1},x_{2},...,x_{n}) y=f(x)x=(x1,x2,...,xn)

函数f是非参数化的,因为它不涉及任何形式的参数估计。在KNN中,给定一个新的点 p = ( p 1 , p 2 , . . . , p n ) p=(p_{1},p_{2},...,p_{n}) p=(p1,p2,...,pn),要动态的识别训练集数据集中与p相似的K个观察(k个近邻)。近邻由一个距离或相似度来定义。可以根据独立变量计算不同观察之间的距离,我们采用欧氏距离进行计算:

( x 1 − p 1 ) 2 + ( x 2 − p 2 ) 2 + . . . + ( x n − p n ) 2 \sqrt{(x_{1} - p_{1})^2 + (x_{2} - p_{2})^2 + ... + (x_{n}-p_{n})^2} (x1p1)2+(x2p2)2+...+(xnpn)2

关于距离的算法以及种类有很多,本章节我们采用欧氏距离,即坐标系距离计算方法。

那么如何找出k个近邻呢?

我们先计算出欧氏距离的集合,然后将这个查询对象分配到k个最近训练数据中大多数对象所在的类。

1.2、距离函数

假设有两个n维对象:

X = ( X 1 , X 2 , . . . , X n ) X = (X_{1},X_{2},...,X_{n}) X=(X1,X2,...,Xn)

Y = ( Y 1 , Y 2 , . . . , Y n ) Y = (Y_{1},Y_{2},...,Y_{n}) Y=(Y1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值