机器学习 - KNN

1. 参数化(parametric) vs. 非参数化方法

  • 参数化方法

  • 提前假定某种拟合的函数形式

  • 优点:简单,易于解释和评估

  • 缺点:high bias, 因为真实的数据分布可能根本就不符合我们之前假定的函数形式!

  • 非参数化方法

  • 分布的估计是数据驱动的 (Distribution or density estimate is data-driven)

  • Relatively few assumptions are made a priori about the functional form.

  • 非参数化的训练过程非常简单(可以说没有训练过程),就是把所有的训练样例存储起来。之后我们需要一个相似度函数 f f f,在测试过程中,计算测试样例和训练样例的相似度即可。

2. 1-近邻 (1-NN)

【定义1】Voronoi tessellation (Dirichlet tessellation)
当看到空间中的一系列给定的点,例如x, y1, y2, y3,…,我们希望为每个点,例如点x,划定一个包围这个点的区域(Voronoi Cell)。对于任意一个位于区域内的点,我们总希望它距离点x的距离小于离其他所有的给定的点,例如 y1, y2, y3,… 的距离。
​​在这里插入图片描述

这里提到Voronoi tessellation的意义在于说明,对欧氏空间的任何一个点x,都能够找到到它距离最近的那个点(有可能有多个)。

3. KNN

1-NN的显著缺点就是,如果测试样本的最近邻(1-NN)是个噪声怎么办?于是想到了类似集成学习的思想,我们可以关注测试样本的多个邻居。如果是分类问题,让这些邻居投票来决定测试样本的类别;如果是回归问题,就对每个邻居投票的结果做加权平均。

3.1 距离度量

介绍四种距离度量方法:
在这里插入图片描述

3.2 属性归一化

KNN中,将不同的属性归一化是非常重要的。因为KNN的距离函数是Minkowski距离,这个距离度量受量纲影响很大。如果某些属性的值过大可能会dominate距离函数。
比如,在判断借贷风险这个问题上,我们关注用户的年龄和年收入。年龄范围[20,70], 年收入范围[100000,600000]. 这样,显然距离函数都是由年收入决定的。
所以,要把不同属性都归一化到[0,1]区间。

3.3 属性加权

可以根据不同属性的重要性给不同属性不同的权重:
在这里插入图片描述
例如,通过计算不同属性的互信息来得到这个权重。

3.4 K值的选择

  1. 如果

### 关于头歌平台中KNN算法的机器学习教程与实例 #### 头歌平台概述 头歌(Tougo)是一个专注于计算机科学教育的学习平台,提供丰富的在线课程资源和实践环境。对于机器学习领域的内容,尤其是像KNN这样经典的算法,通常会通过理论讲解、代码实现以及实际应用案例相结合的方式进行教学。 #### KNN算法简介 KNN(K-Nearest Neighbors)是一种基于实例的学习方法,既可用于分类也可用于回归分析。其核心思想是:给定一个测试样本,在训练集中找到与其最近的K个邻居,并依据这K个邻居的信息来进行决策[^2]。 #### KNN算法的主要步骤 1. 数据预处理阶段,包括标准化或归一化操作以消除不同特征间量纲差异的影响。 2. 计算待测样本到所有已知样本的距离,常用欧氏距离或其他形式的距离度量方式。 3. 找出距离最小的前K个样本作为近邻点集合。 4. 对于分类任务采用投票机制决定最终类别;而对于回归任务则取平均值或者加权平均值得出结果。 #### 距离计算公式示例 以下是两种常见距离公式的Python实现: ```python import numpy as np def euclidean_distance(x, y): """欧几里得距离""" return np.sqrt(np.sum((np.array(x) - np.array(y)) ** 2)) def manhattan_distance(x, y): """曼哈顿距离""" return np.sum(abs(np.array(x) - np.array(y))) ``` 上述函数分别实现了欧氏距离和曼哈顿距离的计算过程。 #### 实际应用场景举例 假设我们有一个简单的电影分类场景,其中每部影片由两个属性描述:“拥抱次数”和“打斗次数”。利用已有标注的数据集可以构建模型并预测未知标签的新样例所属类型[^4]。 #### 可能存在的挑战及优化方向 尽管KNN易于理解和实现,但在大规模数据集上的性能可能较差,因为每次都需要遍历整个数据库寻找最接近的邻居。因此可以通过KD树索引结构加速查询效率,或是引入降维技术减少维度灾难带来的影响[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值