欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

異常點/離群點檢測算法——LOF解析

 更新時間:2021年07月05日 11:58:39   作者:wangyibo0201  
這篇文章主要介紹了異常點/離群點檢測算法——LOF解析,通過圖解文字描述的方式詳細(xì)的解析了該算法,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

局部異常因子算法-Local Outlier Factor(LOF)

        在數(shù)據(jù)挖掘方面,經(jīng)常需要在做特征工程和模型訓(xùn)練之前對數(shù)據(jù)進(jìn)行清洗,剔除無效數(shù)據(jù)和異常數(shù)據(jù)。異常檢測也是數(shù)據(jù)挖掘的一個方向,用于反作弊、偽基站、金融詐騙等領(lǐng)域。
異常檢測方法,針對不同的數(shù)據(jù)形式,有不同的實現(xiàn)方法。常用的有基于分布的方法,在上、下α分位點之外的值認(rèn)為是異常值(例如圖1),對于屬性值常用此類方法?;诰嚯x的方法,適用于二維或高維坐標(biāo)體系內(nèi)異常點的判別,例如二維平面坐標(biāo)或經(jīng)緯度空間坐標(biāo)下異常點識別,可用此類方法。

圖1

        這次要介紹一下一種基于距離的異常檢測算法,局部異常因子LOF算法(Local Outlier Factor)。
用視覺直觀的感受一下,如圖2,對于C1集合的點,整體間距,密度,分散情況較為均勻一致,可以認(rèn)為是同一簇;對于C2集合的點,同樣可認(rèn)為是一簇。o1、o2點相對孤立,可以認(rèn)為是異常點或離散點?,F(xiàn)在的問題是,如何實現(xiàn)算法的通用性,可以滿足C1和C2這種密度分散情況迥異的集合的異常點識別。LOF可以實現(xiàn)我們的目標(biāo)。

這里寫圖片描述

下面介紹LOF算法的相關(guān)定義:
        1) d(p,o) :兩點p和o之間的距離;
2) k-distance:第k距離
               對于點p的第k距離 dk(p) 定義如下: 
               dk(p)=d(p,o) ,并且滿足:
                      a) 在集合中至少有不包括p在內(nèi)的 k 個點o,∈C{x≠p}, 滿足 d(p,o,)≤d(p,o) ; 
                      b) 在集合中最多有不包括p在內(nèi)的 k−1 個點 o,∈C{x≠p} ,滿足 d(p,o,)<d(p,o) ;

        p的第k距離,也就是距離p第k遠(yuǎn)的點的距離,不包括p,如圖3。

圖3

        3) k-distance neighborhood of p:第k距離鄰域
點p的第k距離鄰域 Nk(p) ,就是p的第k距離即以內(nèi)的所有點,包括第k距離。
因此p的第k鄰域點的個數(shù) |Nk(p)|≥k 。
4) reach-distance:可達(dá)距離
點o到點p的第k可達(dá)距離定義為:
reach−distancek(p,o)=max{k−distance(o),d(p,o)}
也就是,點o到點p的第k可達(dá)距離,至少是o的第k距離,或者為o、p間的真實距離。
這也意味著,離點o最近的k個點,o到它們的可達(dá)距離被認(rèn)為相等,且都等于 dk(o) 。
如圖4, o1 到p的第5可達(dá)距離為 d(p,o1) , o2 到p的第5可達(dá)距離為 d5(o2) 。

這里寫圖片描述

        5) local reachability density:局部可達(dá)密度
點p的局部可達(dá)密度表示為:

這里寫圖片描述

                表示點p的第k鄰域內(nèi)點到p的平均可達(dá)距離的倒數(shù)。
注意,是p的鄰域點 Nk(p) 到p的可達(dá)距離,不是p到 Nk(p) 的可達(dá)距離,一定要弄清楚關(guān)系。并且,如果有重復(fù)點,那么分母的可達(dá)距離之和有可能為0,則會導(dǎo)致lrd變?yōu)闊o限大,下面還會繼續(xù)提到這一點。
這個值的含義可以這樣理解,首先這代表一個密度,密度越高,我們認(rèn)為越可能屬于同一簇,密度越低,越可能是離群點。如果p和周圍鄰域點是同一簇,那么可達(dá)距離越可能為較小的 dk(o) ,導(dǎo)致可達(dá)距離之和較小,密度值較高;如果p和周圍鄰居點較遠(yuǎn),那么可達(dá)距離可能都會取較大值 d(p,o) ,導(dǎo)致密度較小,越可能是離群點。

        6) local outlier factor:局部離群因子
點p的局部離群因子表示為:

這里寫圖片描述

                表示點p的鄰域點 Nk(p) 的局部可達(dá)密度與點p的局部可達(dá)密度之比的平均數(shù)。
如果這個比值越接近1,說明p的其鄰域點密度差不多,p可能和鄰域同屬一簇;如果這個比值越小于1,說明p的密度高于其鄰域點密度,p為密集點;如果這個比值越大于1,說明p的密度小于其鄰域點密度,p越可能是異常點。
現(xiàn)在概念定義已經(jīng)介紹完了,現(xiàn)在再回過頭來看一下lof的思想,主要是通過比較每個點p和其鄰域點的密度來判斷該點是否為異常點,如果點p的密度越低,越可能被認(rèn)定是異常點。至于密度,是通過點之間的距離來計算的,點之間距離越遠(yuǎn),密度越低,距離越近,密度越高,完全符合我們的理解。而且,因為lof對密度的是通過點的第k鄰域來計算,而不是全局計算,因此得名為“局部”異常因子,這樣,對于圖1的兩種數(shù)據(jù)集C1和C2,lof完全可以正確處理,而不會因為數(shù)據(jù)密度分散情況不同而錯誤的將正常點判定為異常點。
算法思想已經(jīng)講完了,現(xiàn)在進(jìn)入干貨環(huán)節(jié),亮代碼。
給一個python實現(xiàn)的lof算法:
https://github.com/damjankuznar/pylof
再給一下我fork之后的代碼:
https://github.com/wangyibo360/pylof
有區(qū)別:
上面提到了,對于重復(fù)點局部可達(dá)密度可能會變?yōu)闊o限大的問題,我改的代碼對這個問題做了處理,如果有重復(fù)點方面的場景,可以用我的代碼,源代碼這塊有bug沒有fix,而且好像代碼主人無蹤影了,提的pull也沒人管。。。

到此這篇關(guān)于異常點/離群點檢測算法——LOF解析的文章就介紹到這了,更多相關(guān)異常點/離群點檢測算法——LOF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot2開啟Actuator端點監(jiān)控的方法

    SpringBoot2開啟Actuator端點監(jiān)控的方法

    這篇文章主要介紹了SpringBoot2開啟Actuator端點監(jiān)控的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 關(guān)于Spring?@Transactional事務(wù)傳播機(jī)制詳解

    關(guān)于Spring?@Transactional事務(wù)傳播機(jī)制詳解

    我們?nèi)粘9ぷ髦袠O少使用事務(wù)傳播級別,單純只是使用事務(wù)和rollbackfor拋出異常來解決事務(wù)問題,但其實我們很多時候使用的是不正確的,或者說會造成事務(wù)粒度過大,本文詳解一下事務(wù)傳播級別,也讓自己更好地處理事務(wù)問題,需要的朋友可以參考下
    2023-08-08
  • springboot項目打包發(fā)布部署的過程及jar和war的區(qū)別

    springboot項目打包發(fā)布部署的過程及jar和war的區(qū)別

    Spring Boot使用了內(nèi)嵌容器,因此它的部署方式也變得非常簡單靈活,可以將Spring Boot項目打包成JAR包來獨立運(yùn)行,Spring Boot項目既可以生成WAR包發(fā)布,也可以生成JAR包發(fā)布,那么它們有什么區(qū)別呢
    2022-11-11
  • org.springframework.beans.BeanInstantiationException異常解決

    org.springframework.beans.BeanInstantiationException異常解決

    本文主要介紹了org.springframework.beans.BeanInstantiationException異常解決,大多數(shù)情況下,這個異常是由于簡單的配置錯誤或者代碼問題導(dǎo)致的,下面就來具體解決一下
    2024-03-03
  • SpringMVC 上傳文件 MultipartFile 轉(zhuǎn)為 File的方法

    SpringMVC 上傳文件 MultipartFile 轉(zhuǎn)為 File的方法

    這篇文章主要介紹了SpringMVC 上傳文件 MultipartFile 轉(zhuǎn)為 File的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • java獲取網(wǎng)絡(luò)類型的方法

    java獲取網(wǎng)絡(luò)類型的方法

    這篇文章主要介紹了java獲取網(wǎng)絡(luò)類型的方法,涉及java針對網(wǎng)絡(luò)類型的參數(shù)獲取及判定技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 一文教會你cmd命令運(yùn)行java程序

    一文教會你cmd命令運(yùn)行java程序

    這篇文章主要給大家介紹了關(guān)于如何使用cmd命令運(yùn)行java程序的相關(guān)資料,這是一個非常有用的技能,特別是當(dāng)您需要在沒有集成開發(fā)環(huán)境(IDE)的情況下編寫和運(yùn)行Java代碼時,需要的朋友可以參考下<BR>
    2024-06-06
  • GraphQL入門總體創(chuàng)建教程

    GraphQL入門總體創(chuàng)建教程

    這篇文章主要為大家介紹了GraphQL入門總體創(chuàng)建教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java中ArrayBlockingQueue和LinkedBlockingQueue

    Java中ArrayBlockingQueue和LinkedBlockingQueue

    這篇文章主要介紹了Java中ArrayBlockingQueue和LinkedBlockingQueue,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • 實體類或?qū)ο笮蛄谢瘯r,忽略為空屬性的操作

    實體類或?qū)ο笮蛄谢瘯r,忽略為空屬性的操作

    這篇文章主要介紹了實體類或?qū)ο笮蛄谢瘯r,忽略為空屬性的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論