首页 > 其他分享 >[机器学习复习笔记] KNN(k近邻)

[机器学习复习笔记] KNN(k近邻)

时间:2023-12-05 22:56:44浏览次数:28  
标签:KNN mathbf 复习 text 近邻 样本 sum

KNN

1. KNN 算法 (\(k\) 近邻)

\(k\) 近邻学习 (\(\text{k-nearest} \; \text{neighbor}, \; k\text{-NN}\)) 是一种常用的监督学习方法,思路非常简单:给定一个样本数据集,对于每个输入的测试样本,在训练集中找到与该测试样本 最近的 \(k\) 个 训练样本,然后基于这 \(k\) 个样本的类别标记,通过 投票法 选出 出现最多的类别标记 作为当前测试样本的预测结果。

\(\text{KNN}\) 算法形式化表述如下:

输入训练集 \(D = \{(x_1, y_1), (x_2, y_2), ... , (x_n, y_n)\}\),其中 \(x_i\) 为 \(d\) 维特征向量,\(y_i\) 为每个训练样本标记的类别,\(y_i \in \{c_1, c_2, ... , c_t\}\),共 \(t\) 个类别。

  1. 根据 指定的距离度量方法,在训练集 \(D\) 中找出与当前测试样本 \(x\) 最近邻的 \(k\) 个点,涵盖这 \(k\) 个点的邻域记作 \(N_k(x)\)

  2. 在邻域 \(N_k(x)\) 中,采用 投票法 找出出现次数最多的类别,以此来决定 \(x\) 的类别 \(y\)。其中 \(I\) 为 指示函数,当 \(y_i = c_j\) 时为 \(1\),否则为 \(0\)。

    \[y = \text{arg} \; \max_{c_j} \sum_{x_i \in N_k(x)} I(y_i = c_j), \quad i = \{1, 2, ... , n\}, \; j = \{1, 2, ... , t\} \]


事实上,\(k\) 近邻学习 没有显示的学习过程,是 懒惰学习 (\(\text{lazy} \; \text{learning}\)) 的代表。


2. 距离度量

  • 闵可夫斯基距离

    \[\text{dist}_{\text{mk}}(\mathbf x_i, \mathbf x_j) = (\sum_{u = 1}^{d}|x_{iu} - x_{ju}|^p)^{\frac{1}{p}} \]

  • 欧几里得距离
    当 \(p\) 取2时,闵可夫斯基距离即为欧几里得距离

    \[\text{dist}_{\text{ed}}(\mathbf x_i, \mathbf x_j) = \sqrt{\sum_{u = 1}^{d}|x_{iu} - x_{ju}|^2} \]

  • 曼哈顿距离
    当 \(p\) 取1时,闵可夫斯基距离即为曼哈顿距离

    \[\text{dist}_{\text{man}}(\mathbf x_i, \mathbf x_j) = ||\mathbf x_i - \mathbf x_j||_1 = \sum_{u = 1}^{d}|x_{iu} - x_{ju}| \]


3. \(k\) 值的选择

如果选择 较小 的 \(k\) 值,相当于在较小的邻域内进行预测,学习的 近似误差 会减小,只有与输入样本足够近的训练样本才会对预测结果起作用。但是,估计误差 会增大,预测结果对近邻的样本点非常敏感。

如果选择 较大 的 \(k\) 值,相当于在较大的邻域内进行预测,可以减小 估计误差,但是,会导致 近似误差 增大,与输入样本较远的训练样本也会对预测结果起作用,反而造成了预测结果的错误。

在实际应用中,一般会取较小的 \(k\) 值,通过 交叉验证 优化 $k 值。


4. 分类决策规则

\(k\) 近邻的分类决策规则一般是 多数表决 规则。

如果分类的损失函数为 0-1 损失函数,分类函数为:

\[f: \mathbb{R}^n \rightarrow \{c_1, c_2, ... , c_t\} \]

那么 误分类率 是:

\[P(Y \ne f(X)) = 1 - P(Y = f(X)) \]

对给定的实例 \(x \in \chi\),其 \(k\) 近邻的训练样本构成的邻域 \(N_k(x)\),若涵盖 \(N_k(x)\) 的类别是 \(c_j\),那么 误分类率 为:

\[\frac{1}{k}\sum_{x_i \in N_k(x)} I(y_i \ne c_j) = 1 - \frac{1}{k}\sum_{x_i \in N_k(x)}I(y_i = c_j) \]

要使 误分类率 最小,需要使 \(\sum_{x_i \in N_k(x)} I(y_i = c_j)\) 最大。

因此,多数表决规则 恰可以使得 误分类率 最小化。


5. sklearn KNN 简单调用

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

X, y = ...

knn = KNeighborsClassifier(n_neighbors=k, metric='minkowski')

# 训练
knn.fit(X_train, y_train)

# 传入测试集查看效果
knn.score(X_test, y_test)

# 预测结果
y_pred = knn.predict(X_test)
print("predict: ", y_pred)

# 得分
acc = accuracy_score(y_test, y_pred)
print("accuracy score: ", acc)

参考

《机器学习方法》李航

《机器学习》周志华

一文掌握KNN(K-近邻算法,理论+实例)

Python—KNN分类算法(详解)

完结篇|一文搞懂k近邻(k-NN)算法(二)

标签:KNN,mathbf,复习,text,近邻,样本,sum
From: https://www.cnblogs.com/MAKISE004/p/17878327.html

相关文章

  • 数据库总结复习(sql应用题 二)
    目录前言关系代数关系间运算条件表达式使用案例语法树例子前言本文针对考纲上的30分sql应用题所涉及到的知识进行归纳总结。分为两篇文章,本篇为关系代数相关知识点。关系代数关系间运算关系和关系之间需要用到以下关系运算符:其中,连接从连接条件上分,等值连接,非等值连......
  • 每天5分钟复习OpenStack(十二)Ceph FileStore 和 BlueSotre
    一个最小化的Ceph集群需要三个组件MONMGROSD.上一章我们部署了MON,本章节我们完成剩下MGR和OSD的部署。在文末我们将重点介绍下什么是FileStore和BlueStore,并详细分析其特点,来说明为什么Ceph社区放弃了FileStore,直接采用了BlueStore.1、MGR部署创建mgr工作目录sudo-u......
  • day15 函数复习和模块基础
    蒙特卡洛仿真2023-12-0519:28:40函数复习deffunc(*args,**kwargs): pass#func可以接受所有的参数*形参:接受多余的位置实参以元组的形式存储**形参:接受多余的关键字参数以字典的形式存储函数对象的作用:①引用f1=func②作为函数的返回值returnfunc③作为函数的参数f2(......
  • 刷题复习(二)数组-双指针
    刷题复习(二)数组-双指针https://labuladong.gitee.io/algo/di-ling-zh-bfe1b/shuang-zhi-fa4bd/1、删除有序数组中的重复项慢指针用于统计不重复项,快指针用于不停前进对比是否有新的不重复项,有的话进行替换classSolution{publicintremoveDuplicates(int[]nums){......
  • [机器学习复习笔记] SVM 支持向量机
    SVM支持向量机1.SVM基本模型1.1线性可分问题给定一个训练样本集\(D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},\;y_i\in\{-1,+1\}\)。假设两个点集\(D_0\)和\(D_1\),且\(D_0\subsetD,D_1\subsetD\),若存在一个\(d\)维向量\(w\)和实数\(b\),使得......
  • 数据库总结复习(sql应用题 一)
    目录前言mysql基础语句ddl示例1创建表dcl授权收回权限dml结合事务索引分类格式视图行列子集视图可更新性存储过程示例1带返回值示例2游标示例3结合简单事务触发器前言本文针对考纲上的30分sql应用题所涉及到的知识进行归纳总结。会分为两篇文章,此篇为mysql语句。mysql基......
  • K最近邻算法
    汉堡店销售量预测某汉堡店每天都会做新鲜的汉堡,每天卖出的汉堡个数与天气等因素有关。请根据如下几个特征,用KNN算法预测当天售卖汉堡的个数。(1)天气指数1~5:1表示天气很差,5表示天气很好。(2)是否是周末:周末为1,否则为0。(3)是否有打折活动:1表示有打折,0表示没有打折。售出汉堡的历史数据表......
  • 计算机网络期末复习
    计算机网络概述一、计算机网络的基本概念重要特征:数字化、网络化、信息化计算机网络发展最快并起到核心作用1.1计算机网络的发展第一代:以主机为中心第二代:以通信子网为中心第三代:ISO/OSI-RM、Internet第四代:新一代网络1.2计算机网络定义、组成和功能定义:计算机网......
  • Python程序设计期末复习笔记
    文章目录一、数据存储1.1倒计时1.2os库1.3字符串操作1.4文件操作1.5列表操作1.6元组1.7字典二、文本处理及可视化2.1jieba分词2.2集合操作2.3pdf文件读取2.4参数传递2.5变量作用域三、数据处理分析3.1Sumpy3.2Matplotlib3.3Numpy四、Pandas4.1索引操作4.2统计函......
  • 复习:Java基础-泛型方法
    泛型大家都很熟悉了泛型方法呢可能很多小伙伴都有混淆,今天来稍微复习一下泛型方法(普通方法)publicclassTest<T>{publicTf(Tc){//注意声明,使此方法成为泛型方法returnc;}}泛型方法(静态方法)这么写编译就通过不了错误写法publicclassTe......