学习笔记
参考文献:《R语言与数据挖掘》


局部离群点因子检验

概述

局部离群点因子(LOF)是一种基于密度的局部离群点的算法。局部离群点因子算法,将一个点的局部密度与其邻域点的局部密度进行比较。如果前者远远小于后者,则该点相对于邻域点位于一个密度更稀疏的区域,则判定该点为离群点。
此处有一个LOF判别标准:
LOF值接近1,说明该点与其邻域点密度差不多,该点可能和邻域点同属一簇;
LOF值小于1,说明该点的密度高于其邻域点密度,该点为密集点;
LOF值大于1,说明该点的密度小于其邻域点密度,且值越大,该点越可能是异常点。

LOF数学原理

这里我就给一个LOF的计算公式:

这个LOF计算公式,涉及到局部可达密度、可达距离、k距离邻域、第k距离等概念。这里就不一一叙述了。为啥不一一叙述???因为下面的两篇文章已经将LOF的数学原理解释的相当清楚了,欢迎大家去学习。

  • LOF原理

LOF离群因子检测算法及python3实现
异常点/离群点检测算法——LOF

R语言实现

  • 相关函数
library(DMwR)
lofactor(df, k = 5)
#使用LOF算法计算局部离群点因子
#df为数据集
#k参数为LOF公式中的k,按照具体情况自行设置。

如何理解k呢?举个例子(设置k=5):你要抓几个人来实验,此时你身边有n个人,以你为中心,这n个人离你的距离为[1m, 2m, 2m, 4m, 5m, 5m, 5m, 6m, 6m, 7m…],你想要抓离你最近的5个人,你按照距离从小到大依次抓人,当你抓到第5个人时,你发现有3个人离你的距离都为5m,这可咋整呢,要抓哪位仁兄呢?为了公平起见,且量大从优,你把这3个距离你5m的人都抓去做实验,那么离你最近的7个人就被你选入了实验中。

从原理的角度来说,当设置k=5时,就有7个点参与了目标点的局部密度计算。

  • 案例

利用R自带的鸢尾花数据集来进行离群点检验。

代码1:

library(DMwR)
data(iris)#提取其中的数值型变量
iris2 <- iris[, 1:4]
#LOF法
lof_score <- lofactor(iris2, k = 5)#绘制密度曲线
plot(density(lof_score), main = 'lof密度曲线', xlab = 'Lof值')

图像:

代码2:

#离群点行号
(out_point <- order(lof_score, decreasing = T)[1:5])
#[1]  42 107  23 110  63#绘制矩阵散点图
n <- nrow(iris2)
pch <- rep(".", n)
pch[out_point] <- "+"
col <- rep("black", n)
col[out_point] <- "red"
pairs(iris2, pch = pch, col = col,main = "散点图矩阵")

图像:

R语言之离群点检验(part2)--局部离群点因子LOF检验相关推荐

  1. R语言可视化包ggplot2绘制排序条形图实战:按照分类因子排序、按照数值排序

    R语言可视化包ggplot2绘制排序条形图实战:按照分类因子排序.按照数值排序 目录

  2. R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析

    总览 在这里,我们放宽了流行的线性方法的假设.最近我们被客户要求撰写关于非线性模型的研究报告,包括一些图形和统计输出.有时线性假设只是一个很差的近似值.有许多方法可以解决此问题,其中一些方法可以通过使 ...

  3. R语言回归中的Hosmer-Lemeshow拟合优度检验

    在依赖模型得出结论或预测未来结果之前,我们应尽可能检查我们假设的模型是否正确指定.也就是说,数据不会与模型所做的假设冲突. 我们围绕回归技术进行一些咨询,帮助客户解决独特的业务问题.对于二元结果,逻辑 ...

  4. r语言kendall协和系数_使用R语言函数cor.test()做相关性计算和检验

    假设我们现在有两组数据,如下所示 x y 55.24 1.2 59.03 1.19 47.27 1.38 52.94 0.94 55 1.81 54 1.75 55.69 1.42 48.85 3.0 ...

  5. R语言用GAM广义相加模型研究公交专用道对行程时间变异度数据的影响

    全文链接:http://tecdat.cn/?p=30508 现实情况是,我们经常要处理多个自变量和一个因变量之间的关系,此外,虽然通过做散点图可以发现非线性关系,但很难归因其形式,多项式回归在广义线 ...

  6. r语言 计算模型的rmse_直播丨R语言与作物模型高级应用实战技术应用

    随着基于过程的作物生长模型(Process-based Crop Growth Simulation Model)的发展,R语言在作物生长模型和数据分析.挖掘和可视化中发挥着越来越重要的作用.想要成为 ...

  7. 298本R语言书籍免费送!!!

    本人作为R语言爱好者,广泛搜集了关于R语言的书籍,具体包括R语言基础知识.统计学(含生物统计).数据挖掘.计量经济学(时间序列)等,范围广,资料全面,多为可编辑的pdf版本,不少都是各学科领域R语言经 ...

  8. 应用回归分析(基于R) R语言的假设检验(一)

    假设检验是用来判断样本与样本,样本与总体的差异是由抽样误差还是由本质差异所造成的一种统计推断方法.其基本思想是小概率反证法思想.今天引用例子来学习R语言中的种假设检验. 正态分布参数检验 例1.某种原 ...

  9. 通过R语言做灰色预测

    通过R语言做灰色预测 GM(1,1)模型的定义 数据的检验与处理 数据的生成 级比检验 GM(1,1)建模 生成累加数据和均值数据 构造矩阵BBB及数据向量YYY,有 计算: 建立模型,求解,并还原数 ...

最新文章

  1. 参加UI设计培训要学多久
  2. App.config的典型应用
  3. PC端创业真的已死?我不这么认为
  4. SAP 财务模块 FI-TV 差旅管理
  5. 双系统环境下解决wine的字体为方块的问题
  6. ubuntu18安装DC2016
  7. 第4章 Python 数字图像处理(DIP) - 频率域滤波4 - 单变量的离散傅里叶变换DFT
  8. Linux7/Redhat7/Centos7 安装Oracle 12C_配置VNC远程安装数据库_03
  9. java web 加载类_Java中用ClassLoader载入各种资源(类、文件、web资源)的方法
  10. FreeBSD下MongoDB数据库的安装
  11. java中的implements如何打开_Java 中extends与implements使用方法
  12. Android抓包工具Fiddler的使用教程
  13. 设置win10有线网络连接
  14. Qt学习笔记(十九):QTreeWidget 的常用方法
  15. 数学边界(数学萌芽、初等数学、高等数学)
  16. 软考:信息安全工程师3
  17. 15个HTML5播放器插件
  18. 【Linux】Shell脚本:while read line无法读取最后一行???
  19. html 选择第二个元素,css选择器,选中第二个p,实现第三个和第四个p的效果,
  20. python raise和except区别_python raise和assert的区别

热门文章

  1. C++自定义函数实现灰度图转化
  2. 新建maven(servlet项目) 引入不了HttpServlet
  3. 安装完成ubuntu系统后的基本的相关配置---Linux总结笔记
  4. 解决Win10 Virtualbox5.2.18桥接不能联网小记
  5. 反思O2O演化的三个时代,大数据与智能化才是未来所在
  6. sql 2012先分离迁移mdf mlf 文件到别的机器后附加 数据库成只读的修复方法
  7. 关于导入项目eclipse出现乱码的问题
  8. [ACM] hdu 1754 I Hate It (线段树,单点更新)
  9. 发送Gmail邀请.
  10. (旧)走遍美国——(三、文化4)