R语言之离群点检验(part2)--局部离群点因子LOF检验
學習筆記
參考文獻:《R語言與數據挖掘》
局部離群點因子檢驗
概述
局部離群點因子(LOF)是一種基于密度的局部離群點的算法。局部離群點因子算法,將一個點的局部密度與其鄰域點的局部密度進行比較。如果前者遠遠小于后者,則該點相對于鄰域點位于一個密度更稀疏的區域,則判定該點為離群點。
此處有一個LOF判別標準:
LOF值接近1,說明該點與其鄰域點密度差不多,該點可能和鄰域點同屬一簇;
LOF值小于1,說明該點的密度高于其鄰域點密度,該點為密集點;
LOF值大于1,說明該點的密度小于其鄰域點密度,且值越大,該點越可能是異常點。
LOF數學原理
這里我就給一個LOF的計算公式:
這個LOF計算公式,涉及到局部可達密度、可達距離、k距離鄰域、第k距離等概念。這里就不一一敘述了。為啥不一一敘述???因為下面的兩篇文章已經將LOF的數學原理解釋的相當清楚了,歡迎大家去學習。
- LOF原理
LOF離群因子檢測算法及python3實現
異常點/離群點檢測算法——LOF
R語言實現
- 相關函數
如何理解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检验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔兽世界萨尔去哪了
- 下一篇: 手机微信聊天记录可以恢复多久时间