K-近邻算法(KNN)

一、引言。

        KNN(K- Nearest Neighbor)法即K最邻近法,最初由 Cover和Hart于1968年提出,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路非常简单直观:如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别 。

二、KNN算法原理。

        在分类任务中,我们的目标是判断样本x的类别y。KNN会先观察与该样本点距离最近的K个样本,统计这些样本所属的类别。然后将当前样本归到出现次数最多的类中。下面我们用数学语言来描述KNN算法。设已分类样本的集合为\AE \chi _{0}。对于一个待分类的样本x,定义其邻居N_{k}(x)X_{0}中与x距离最近的K个样本x_{1},x_{2},...,x_{K}组成的集合,这些样本对应的类别分别是y_{1},y_{2},...,y_{K}。我们统计集合N_{K}(x)中类别为j的样本的数量,记为G_{j}(x)

                                               G_{_{j}}(x)=\sum_{x_{i}\in N_{K}(x)}\prod (y_{i}=j)

其中,\prod (p)是示性函数,其自变量p是一个命题,当p为真时,\prod (p)=1,反之,当p为假时,\prod (p)=0,最后,我们将x的类别y\hat{}(x)判断为使G_{j}(x)最大的类别:

                                                y\hat{}(x)=arg _{}max\underset{j}{}G_{j}^{}(x)

        与分类任务类似,我们还可以将KNN应用于回归任务。对于样本x,我们需要预测其对应的实数值y。同样,KNN考虑K个相邻的样本点x_{i}\epsilon N_{K}(x),将这些的样本,点对于实数值y_{i}进行加权平均,就得到样本x的预测结果y\hat{}(x)

                                                 y\hat{}(x)=\sum_{x_{i}\epsilon N_{K}(x)}w_{i}y_{i},其中\sum_{i=1}^{K}w_{i}=1

在这里,权重w_{i}代表不同邻居对当前样本的重要程度,权重越大,该邻居的值y_{i}对最后的预测影响也越大。我们即可以预先定义好权重,也可以根据数据集的特性设置权重与距离的关系,还可以将权重作为模型的参数,通过学习得到。

注意:样本之间的距离用欧氏距离。对于n维空间中的两个点x=(x_{1},x_{2},...,x_{n})y=(y_{1},y_{2},...,y_{n}),其欧氏距离为:

                                               d_{Euc}(x,y)=\sqrt{\sum_{i=1}^{n}(x_{i}-y_{i})^{2}}

三、KNN的应用场景。
  1.数据预处理:用于缺失值估算。
  2.推荐系统:根据用户的行为数据,推荐相似的物品或内容。
  3.金融:用于信用评估、股票市场预测等。
  4.医疗保健:用于疾病诊断、病情预测等。
  5.模式识别:用于手写数字识别、物体分类等。
四、KNN的优缺点。
  1.优点:简单易懂,无需复杂的模型训练和参数估计;适合多分类问题;对异常值不敏感;适合类域交叉样本;适用大样本自动分类。
  2.缺点:计算量较大,尤其在处理大数据集时;对特征值敏感;需要选择合适的K值和距离度量方法;空间复杂度较高,需要存储所有训练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值