机器学习3:K近邻法K-Nearest-Neighbor Classifier/KNN(基于R languagePython)

本文主要是介绍机器学习3:K近邻法K-Nearest-Neighbor Classifier/KNN(基于R languagePython),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   k k k 近邻法是一种基本分类回归问题。 k k k 近邻法的输入为实例的特征向量,对应于特征空间中的点;输出为实例的类别,可以取很多类。 k k k 近邻法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其 k k k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此, k k k 近邻法不具有显式的学习过程。 k k k 近邻法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。 k k k 近邻法的三个要素是: k k k 值的选择、距离度量及分类决策规则1

K近邻法

    • 基本原理方法
      • k k k 近邻法概述
        • 定量变量标准化
        • 距离度量
          • 定量变量的距离度量
          • 定性变量的距离度量
          • 缺失值的距离度量
        • k k k 值的选择
        • 分类决策规则
          • KNN分类问题
            • 多数表决规则
            • 加距离权重的多数表决规则(博主绞尽脑汁搞懂了核函数加权法)
          • KNN回归问题
      • k k k 近邻法特点
        • 优点
        • 缺点
      • k k k 近邻法评估
    • 手算例子
    • 代码:R语言
      • 分类问题:投票无加权+自变量为定量变量
      • 分类问题:投票有加权+自变量为定量变量(手算问题核验)
      • 回归问题:有加权+训练集为混合性数据
      • 回归问题:有加权+训练集为混合性数据+含缺失数据
    • 代码:Python
      • sklearn库的KNeighborsClassifier函数简介
      • 分类问题:定量变量的情况
        • 等权重
        • 按距离加权
      • 分类问题:定性变量的情况
        • 独热编码
      • Iris数据调参案例
      • Iris数据画分类效果图案例
    • 参考资料

基本原理方法

k k k 近邻法概述

   k k k 近邻法的算法如下:

输入:训练集 D = { ( x i , y i ) } i = 1 N D=\{(x_i,y_i)\}_{i=1}^N D={(xi,yi)}i=1N ,其中 x i x_i xi 为实例的特征向量, y i y_i yi 为实例的类别
输出:实例 x x x 所属的类别 y y y
(1)根据给定的距离度量,在训练集 D D D 中找出与 x x x 最近邻的 k k k 个点,涵盖这 k k k 个点的 x x x 的邻域称为 N k ( x ) N_k(x) Nk(x)

(2)在 N k ( x ) N_k(x) Nk(x) 中根据分类决策规则(如多数表决)决定 x x x 的类别 y y y y = a r g m a x c j ∑ x i ∈ N k ( x ) I ( y i = c j ) , i = 1 , 2 , ⋯   , N ; j = 1 , 2 , ⋯   , K y=argmax_{c_j}\sum_{x_i\in N_k(x)} I(y_i=c_j),i=1,2,\cdots,N;j=1,2,\cdots,K y=argmaxcjxiNk(x)I(yi=cj),i=1,2,,N;j=1,2,,K,即有 K K K 种类别。

   k k k 近邻法是一种惰性学习算法,它存储训练集实例但并没有立刻进行建模,直到获得测试集,必须对其进行分类为止才开始进行建模。

懒惰学习算法:只存储训练数据(或仅进行少量处理)但并不马上进行建模,等到给出测试集才开始建模。

与之相反地,

积极学习算法:给定训练集就立马进行建模,再接收新的测试数据在建立好的模型上进行预测。

懒惰学习算法与积极学习算法的比较
时间成本懒惰学习算法训练花的时间更少,但预测花的时间更多
准确率惰性学习算法有效地使用了更丰富的假设空间,因为它使用了许多局部线性函数来形成对目标函数的隐式全局近似;积极学习算法则必须遵循涵盖整个实例空间的一个单一假设

  除了 k k k 近邻法之外,典型的惰性学习算法还有局部加权回归、构造局部近似、基于案例的推理和使用符号表示和基于知识的推理。

  KNN算法需要有四个步骤:

  • 定量变量标准化
  • 距离度量
  • 定义邻居个数 k k k
  • 预测
    • 分类问题:多数投票 Majority Vote
    • 回归问题:把邻居的取值平均 Averaging
定量变量标准化

  由于计算距离时,会涉及到将变量所有维度相加的计算,故需要对每个变量进行标准化。否则,因为尺度不同的原因,尺度比较大的变量比尺度比较小的变量会有更大的影响。

  在叙述具体怎么做标准化之前,有一个重中之重的提醒:训练集标准化完了以后,测试集的标准化是要利用训练集标准化的“工具”来进行的!例如中心标准化,测试集标准化必须用训练集数据的均值和标准差,这是因为在建好模型预测之前是不可以动用测试集的信息的,一切信息只能来源于训练集。

  标准化方法主要有两种,一种是 m i n − m a x min-max minmax 归一化(归一化后数据被缩放到 [ 0 , 1 ] [0,1] [0,1] 范围内):

x n o r m a l i z a t i o n = x − m i n ( x ) m a x ( x ) − m i n ( x ) x_{normalization}=\frac{x-min(x)}{max(x)-min(x)} xnormalization=max(x)min(x)xmin(x)

另一种是 z − s c o r e z-score zscore 标准化:

x s t a n d a r d i z a t i o n = x − m e a n ( x ) s t d ( x ) x_{standardization}=\frac{x-mean(x)}{std(x)} xstandardization=std(x)xmean(x)

距离度量
定量变量的距离度量

  特种空间中两个实例点的距离是两个实例点相似程度的反映。 k k k 近邻模型的特征空间一般是 n n n 维实数向量空间 R n \textbf{R}^n Rn,使用的是欧式距离。一般地,有两种距离度量方式:欧式距离和闵氏距离。

  特征空间中两点的欧式距离为:

d ( x i , x j ) = ∑ l = 1 m ( x i ( l ) − x j ( l ) ) 2 d(x_i,x_j)=\sqrt{\sum_{l=1}^m (x_i^{(l)}-x_j^{(l)})^2} d(xi,xj)=l=1m(xi(l)xj(l))2

其中 x i = ( x i 1 , x i 2 , ⋯   , x i m ) x_i=(x_i^{1},x_i^{2},\cdots,x_i^{m}) xi=(xi1,xi2,,xim)

  特征空间中两点的曼哈顿距离为:

d ( x i , x j ) = ∑ l = 1 m ∣ x i ( l ) − x j ( l ) ∣ d(x_i,x_j)=\sum_{l=1}^m \mid x_i^{(l)}-x_j^{(l)} \mid d(xi,xj)=l=1mxi(l)xj(l)

  特征空间中两点的闵氏距离为:

d ( x i , x j ) = ( ∑ l = 1 m ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p d(x_i,x_j)=(\sum_{l=1}^m \mid x_i^{(l)}-x_j^{(l)} \mid ^p)^{\frac{1}{p}} d(xi,xj)=(l=1mxi(l)xj(l)p)p1

  以下图为例,绿色的直线代表两点之间的欧式距离,而红色和黄色的线为两点的曼哈顿距离。感受一下两者的不同2

定性变量的距离度量

  定性变量就是属于同一类别的亮点距离为0,属于不同类别的两点距离为1(0-1距离)。

  举例说明定性变量的距离度量,X={red},Y={red},Z={blue},d(X,Y)=0,d(X,Z)=1。

缺失值的距离度量

  定性变量在0-1距离度量下,取值若为缺失值的点的距离定义:

x1x2距离
缺失值-1
-缺失值1
缺失值缺失值1

  定量变量在0-1正则化后,取值若为缺失值的点的距离定义:

x1x2距离
缺失值-max(x2,1-x2)
-缺失值max(x1,1-x1)
缺失值缺失值1
k k k 值的选择

   k k k 值的选择会对 k k k 近邻法的结果产生重大影响。

  如果选择较小的 k k k 值,即用较小的邻域中的训练集实例进行预测。会导致学习的近似误差(bias)减小——只有与输入实例较近的(相似的训练实例)才会对预测结果起作用;但缺点是学习的估计误差(variance)会增大——预测结果会对近邻的实例点非常敏感:只要变换一下训练集中的实例,邻居实例就会变化很大,从而导致预测结果变化很大。

  换句话说, k k k 值的减少就意味着整体模型变得复杂,容易发生过拟合

  如果选择较大的 k k k 值,即用较大的邻域中的训练集实例进行预测。其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时与输入实例较远的(不相似的)训练实例也会对预测起作用,是预测发生错误。

  换句话说, k k k 值的增大就意味着整体模型变得简单。

  在应用中, k k k 值一般取取 3~10 或取 n 训 练 集 \sqrt{n_{训练集}} n

这篇关于机器学习3:K近邻法K-Nearest-Neighbor Classifier/KNN(基于R languagePython)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/233029

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件