数据预测是基于对历史数据的分析,通过学习器归纳和提炼其中包含的规律,并将这种规律体现在预测模型中。参与建模的变量主要分为两种:

  • 输入变量(解释变量、特征变量,一般记为x,可以有多个)
  • 输出变量(被解释变量,记为y,通常只有一个)

预测模型分为两种类型:

  • 分类预测模型,即输出变量为类型变量的预测模型。
  • 回归预测模型,即输出变量为数值型变量的预测模型。

在传统统计学中一般是假设数据满足某种分布假设,然后明确设定输出变量与输入变量的函数形式,即 y=f(x) y=f(x);最后根据数据估计未知参数,进而根据函数关系进行预测。但是在实际应用中,或者在输入变量较多,样本量较大的情况下,要求出具体的函数 f f是非常困难的。对此,可采用数据挖掘中非常经典而有效的方法–近邻分析。

近邻分析简述

近邻分析算法的基本思想是:为预测某一个新观测X0X_0输出变量 y0 y_0的取值,可首先在已有数据中找到与 X0 X_0相似的K个观测,如 (X1,X2,...,Xk) (X_1,X_2,...,X_k)的输出变量 (y1,y2,...yk) (y_1,y_2,...y_k),并计算其平均(通常是以其相似度作为权进行加权平均,或取算术平均、中位数、众数等),并以此作为新观测 X0 X_0输出变量 y0 y_0的预测值 y0^ \hat{y_0}。可见,使用KNN方法并不需要制定 y=f(x) y=f(x)的具体形式,只需要假设 y0^ \hat{y_0}是 (y1,y2,...yk) (y_1,y_2,...y_k)的一个函数 y0^=F(y1,y2,...yk) \hat{y_0}=F(y_1,y_2,...y_k)即可。

典型的近邻分析方法是K-近邻法(K-nearest neighbor,KNN)。该算法将样本包含的n个观测数据看成维特征空间中的点,并通常根据 X0 X_0的K个近邻的 (y1,y2,...yk) (y_1,y_2,...y_k),根据函数 y0^=F(y1,y2,...yk) \hat{y_0}=F(y_1,y_2,...y_k)计算预测值 y0^ \hat{y_0}。通常情况下:

y0^=∑xi∈Nk(X0)qiyi

\hat{y_0}=\sum_{x_i{\in}N_k(X_0)}q_iy_i
其中, qi q_i为权重,通常以 Xi X_i与 X0 X_0的距离衡量,距离越近,权重越大;反之,权重越小。

  • 对于只有二分类(0和1两个类别)的分类预测问题, y0^ \hat{y_0}是类别值取1的概率, y0^=P(y0=1|X) \hat{y_0}=P(y_0=1|X)。若概率大于0.5,意味着有超过半数的近邻的类别值为1,则应预测为1类,否则预测为0类。

  • 对于多分类的预测问题, y0^=P(y0=m|X) \hat{y_0}=P(y_0=m|X),即类别值取m的概率。预测值应为最大概率值对应的类m。

  • 对于回归预测问题, y0^ \hat{y_0}是近邻输出变量的平均值。

不难看出KNN的核心问题有两个:

  • 依据怎样的标准测度与 X0 X_0的近邻关系(距离或相似度)

  • 依据怎样的原则确定K的取值

KNN中的距离

由于KNN算法将样本包含的n个观测数据看成P维特征空间中的点,所以可以在特征空间中定义某种距离,作为测度与 X0 X_0近邻关系的依据。通用的距离有闵氏距离、欧式距离、绝对距离(曼哈顿距离)、切比雪夫距离、夹角余弦距离等。这个在博文http://blog.csdn.net/buracag_mc/article/details/70143833也有涉及到。

对于两个观测点x和y,若 xi x_i是观测点x的第i个变量值, yi y_i是观测点y的第i个变量值。两观测点x和y之间的上述距离定义如下:

  • 闵氏距离
    两观测点x和y间的闵氏距离是指两观测点p个变量值绝对差k次方总和的k次方根:
    d(x,y)=∑pi=1|xi−yi|k−−−−−−−−−−−−√k d(x,y)=\sqrt[k]{\sum_{i=1}^{p}|x_i-y_i|^k}

  • 欧式距离
    两观测点x和y间的欧式距离是指两观测点p个变量值绝对差平方总和的平方根:
    d(x,y)=∑pi=1|xi−yi|2−−−−−−−−−−−−√2 d(x,y)=\sqrt[2]{\sum_{i=1}^{p}|x_i-y_i|^2}
    可以看出,欧式距离是闵氏距离在k=2时的特例。

  • 绝对(曼哈顿)距离
    两观测点x和y间的绝对(曼哈顿)距离是指两观测点p个变量值绝对之差的总和:
    d(x,y)=∑pi=1|xi−yi| d(x,y)=\sum_{i=1}^{p}|x_i-y_i|
    可以看出,绝对(曼哈顿)距离是闵氏距离在k=1时的特例。

  • 切比雪夫距离
    两观测点x和y间的切比雪夫距离是指两观测点p个变量值绝对之差的最大值:
    d(x,y)=max(|xi−yi|) d(x,y)=max(|x_i-y_i|)
    可以看出,切比雪夫距离是闵氏距离在k=无穷大时的特例

  • 夹角余弦距离
    d(x,y)=∑pi=1(xiyi)2(∑pi=1x2i)(∑pi=1y2i)√ d(x,y)=\frac{\sum_{i=1}^{p}(x_iy_i)^2}{\sqrt{(\sum_{i=1}^{p}x_i^2)(\sum_{i=1}^{p}y_i^2)}}
    可以看出夹角余弦距离是从两观测的变量整体结构相似性角度测度其距离的。夹角余弦值越大,其结构相似度越高。

实际应用中,p个维度之间可能存在数量级的差异,数量级较大的维度对距离大小的影响会大于数量级小的变量。为了消除这种影响,统计学中常见的方法有标准分数法和极差法(有的称为极大-极小值法)。

  • 标准分数法:
    x∗ij=xij−xi¯¯σxi x_{ij}^*=\frac{x_{ij}-\overline{x_i}}{\sigma_{x_i}}
    其中 xi¯¯¯ \overline{x_i}和 σxi \sigma_{x_i}分别为输入变量 xi x_i的均值和标准差。

  • 极差(极大-极小值法)法:
    x∗ij=xij−min(xi)max(xi)−min(xi) x_{ij}^*=\frac{x_{ij}-min(x_i)}{max(x_i)-min(x_i)}
    其中, max(xi) max(x_i)和 min(xi) min(x_i)分别为输入变量 xi x_i的最大值和最小值

KNN算法中的近邻个数

样本中可能会有许多与 X0 X_0具有近邻关系的观测点。K值如何确定,这是KNN算法的关键,K是KNN算法的关键参数。

  • 最简单的情况是只需找一个距离 X0 X_0最近的一个近邻 Xi X_i,即K=1。此时, y0^=yi \hat{y_0}=y_i

    • 1-近邻算法的预测效果应从预测误差角度分析。
      对于分类预测:如果采用普通贝叶斯方法,预测 X0 X_0输出变量类别取1的概率为 p(y=1|X) p(y=1|X),则预测类别为1时错误概率为1- p(y=1|X) p(y=1|X)。若该近邻以P(y=0|X)的概率取类别0,则预测 X0 X_0的类别为0时的错误概率为1-P(y=0|X)。

    • 所以,易知,1-近邻算法预测错误的概率为:
      P(y=1|X)[1-p(y=1|X)]+P(y=0|X)[1-P(y=0|X)]=2P(y=1|X)[1-p(y=1|X)]

    • 可见,1-近邻算法预测是基于一种单个近邻的预测,由于:
      2P(y=1|X)[1-p(y=1|X)] ≤ \leq2[1-p(y=1|X)]
      所以,1-近邻算法的预测错误概率不会高于普通贝叶斯预测方法错误率的2倍。

尽管1-近邻算法非常简单,但比较使用于分类预测时,特征空间维度较低且类别边界极不规则的情况。但由于1-近邻算法只根据单个近邻进行预测,预测结果手近邻差异影响极大,通常预测方差极大,稳健性低。为此,可通过增大近邻个数K来提升预测的稳定性。但由于增大K值会导致分类边界趋于平滑,预测方差增大。

  • 所以在回归预测中,我们通常用均方误差的方法来衡量预测误差。均方误差定义为各观测输出变量实际值与预测值之差的平方和的平均值,即MSE= 1n∑ni=1(yi−yi^2) \frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y_i}^2)。其中,n为样本量。

  • 在分类预测中,预测误差用错判率来衡量。由于新数据集中输入变量取值已知,输出变量取值未知,所以,预测误差的真值事前是未知的,只能通过估计得到,常见的有如下两种估计方法:

    • 旁置法
      旁置法将整个样本集随机划分为两个集合。训练样本集,通常包含60%~70%的观测,用于训练模型;测试样本集,用于估计测试误差,所得误差称为测试误差,将作为模型预测误差的估计。
      显然,旁置法适合样本量较大时的情况。当样本量较小时,一方面学习器的学习充分性欠佳,导致预测偏差偏大;另一反面,训练样本和测试样本划分的随机性差异会导致不同划分样本上的预测模型参数差异较大,导致模型估计的方差变大。

    • 留一法
      留一法是在包含n个观测的样本中,抽出一个观测作为测试样本,剩余n-1个观测作为训练样本集。依据建立在训练样本集上的预测模型,对被抽出的一个观测进行预测,并计算预测误差,这个过程需重复n次。最后,计算n次误差的平均,将其作为模型预测误差的估计。
      相反,留一法更适合对小样本的进行处理。

在进行KNN分析时,我们需要不断调整参数K的取值,比较不同K下的预测错误率,取使错误率达到最小时的K值。


未完,待更。。。


近邻分析 -- KNN相关推荐

  1. R机器学习-KNN近邻分析

    R语言机器学习--KNN近邻分析 概念:近邻分类器就是把无标记的归类于与它们最相似的带有标记的案例所在的类. 优点:简单.高效:训练阶段快. 缺点:不产生相关模型. 个人总结:k值的使用说明:k值越大 ...

  2. NLP情感分析——KNN算法

    一. 基本概念 文本情感分析是对文本中的某段已知文字的两极性进行分类,判断出此文字中表述的观点是积极的.消极的.还是中性的情绪. 目前的研究方法主要有两类:一种是基于情感词典的方法,另一种是基于机器学 ...

  3. 一文搞懂k近邻(k-NN)算法(一)

    原文链接 一文搞懂k近邻(k-NN)算法(一) 前几天和德川一起在学习会上讲解了k-NN算法,这里进行总结一下,力争用最 通俗的语言讲解以便更多同学的理解. 本文目录如下: 1.k近邻算法的基本概念, ...

  4. Python,OpenCV中的K近邻(knn K-Nearest Neighbor)及改进版的K近邻

    Python,OpenCV中的K近邻(knn K-Nearest Neighbor)及改进版的K近邻 1. 效果图 2. 源码 参考 这篇博客将介绍将K-最近邻 (KNN K-Nearest Neig ...

  5. 介绍一下K近邻(KNN)算法,KNeighbors和RadiusNeighbors的差异是什么?各有什么优势?

    介绍一下K近邻(KNN)算法,KNeighbors和RadiusNeighbors的差异是什么?各有什么优势? K近邻(KNN)算法 近邻(Nearest Neighbor)算法既可以用于监督学习(分 ...

  6. K近邻(KNN)算法是基于实例的算法,如果训练样本数量庞大,预测的时候挨个计算距离效率会很低下,如何破解?

    K近邻(KNN)算法是基于实例的算法,如果训练样本数量庞大,预测的时候挨个计算距离效率会很低下,如何破解? K近邻(KNN)是最简单的算法之一,它计算预测样本与训练数据集中每个数据点之间的距离,并找到 ...

  7. 机器学习算法与Python实践之(二)k近邻(KNN)

      机器学习算法与Python实践之(二)k近邻(KNN) (基于稀疏矩阵的k近邻(KNN)实现) 一.概述 这里我们先来看看当我们的数据是稀疏时,如何用稀疏矩阵的特性为KNN算法加速.KNN算法在之 ...

  8. 基于KD树的K近邻算法(KNN)算法

    文章目录 KNN 简介 KNN 三要素 距离度量 k值的选择 分类决策规则 KNN 实现 1,构造kd树 2,搜索最近邻 3,预测 用kd树完成最近邻搜索 K近邻算法(KNN)算法,是一种基本的分类与 ...

  9. k近邻算法(KNN)-分类算法

    k近邻算法(KNN)-分类算法 1 概念 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. k-近邻算法采用测量不同特征值之间的 ...

最新文章

  1. 监控操作系统和服务器,LoadRunner如何监控不同操作系统的服务器?
  2. Java是解释型还是编译型?
  3. debian10树莓派4安装mysql_树莓派4上如何安装 Raspbian Buster
  4. 刚刚!北京高考时间和开学时间定了
  5. 《深入理解分布式事务》第八章 TCC 分布式事务原理
  6. 【SQL Server 优化性能的几个方面】(转)
  7. 计算机机房里面难闻的气味,新装中央空调气味刺鼻为什么?怎么办?-中央空调 异味 刚开...
  8. flash activex java_Flash Activex NPAPI PPAPI 各种网页插件完整安装包下载地址
  9. 如何在photoshop中应用3DLUT预设?ps怎么安装.3dl、.look、.cube预设?
  10. Zabbix监控系统系列之十二:SNMP Traps主动告警
  11. android wifi分析 实现原理,解析android 流量监测的实现原理
  12. 分计算iv值_【美股期權】多高的IV才算高?理解IV percentile
  13. html embed自动播放,html embed标签怎么用
  14. 《人生要耐得住寂寞》
  15. python 算24 代码
  16. 與情分析系统,包括爬虫、文本摘要、主题分类、情感倾向性识别以及可视化...
  17. Pubwin EP 正式版完整安装全程-数据备份
  18. c语言用fopen打开txt,C语言fopen不能打开.txt文件
  19. 【记录一次nginx转发 80端口无效】
  20. 产品经理 - 原型图设计软件

热门文章

  1. 全国农村固定观察点数据是通过对农村各种经济单位进行长期跟踪调查及农村基层动态信息及时更新完善的综合性翔实研究数据。该数据体系覆盖全国31个省(区、市)、368个县,调查对象包括375个村、23000个
  2. 设置边框颜色渐变及背景颜色渐变
  3. 人工智能这几个重点领域 10 个国际顶会的论文平均录取率 为 22.1%
  4. 使用 nodejs 搭建个人博客
  5. 醉笑陪君三万场 不诉离伤
  6. Base64编码/解码
  7. 全国省市区数据库,带拼音,简称,行政编码,邮政编码等
  8. 基于Python实现的AStar求解八数码问题
  9. xjzk查询录取成绩2021高考,新疆招生网:2021年新疆高考查分入口、查分系统
  10. Linux下执行C程序