日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

异常检测算法之LOF

發(fā)布時(shí)間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异常检测算法之LOF 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:

LOF:Local outlier factor,即局部異常因子。LOF主要是通過(guò)比較每個(gè)點(diǎn)p和其鄰域點(diǎn)的密度來(lái)判斷該點(diǎn)是否為異常點(diǎn),如果點(diǎn)p的密度越低,越可能被認(rèn)定是異常點(diǎn)。至于密度,是通過(guò)點(diǎn)之間的距離來(lái)計(jì)算的,點(diǎn)之間距離越遠(yuǎn),密度越低,距離越近,密度越高,完全符合我們的理解。而且,因?yàn)閘of對(duì)密度的計(jì)算是通過(guò)點(diǎn)的k鄰域來(lái)計(jì)算,而不是全局計(jì)算,因此得名為“局部”異常因子。即LOF是基于密度分析,通過(guò)局部的數(shù)據(jù)密度來(lái)檢測(cè)異常。

原理

LOF算法,是基于密度的離群點(diǎn)檢測(cè)方法中一個(gè)比較有代表性的算法該算法會(huì)給數(shù)據(jù)集中的每個(gè)點(diǎn)計(jì)算一個(gè)離群因子LOF,通過(guò)判斷LOF是否接近于1來(lái)判定是否是離群因子。若LOF遠(yuǎn)大于1,則認(rèn)為是離群因子,接近于1,則是正常點(diǎn)

為了敘述LOF算法,首先引入以下概念:
(1)對(duì)象p的k距離(距離對(duì)象p最近的第k個(gè)對(duì)象的距離)
對(duì)于正整數(shù)k,對(duì)象p的k距離可記作k-distance§。在樣本空間中,存在對(duì)象o,它與對(duì)象p之間的距離記做d(p,o)。如果滿足以下兩個(gè)條件,我們則認(rèn)為k-distance§=d(p,o):
1)在樣本空間中,至少存在k個(gè)對(duì)象q,使得d(p,q)<=d(d,o);
2)在樣本空間中,至多存在k-1個(gè)對(duì)象q,使得d(p,q)<d(p,o)。
k?distance§=max||p?o||(樣本o和p的最大距離即p的k鄰域的最大距離)
顯然易見(jiàn),如果使用k?distance§來(lái)量化對(duì)象p的局部空間區(qū)域范圍,那么對(duì)于對(duì)象密度較大的區(qū)域,k?distance§值較小,而對(duì)象密度較小的區(qū)域,k?distance§值較大。

(2)對(duì)象p的第k距離領(lǐng)域
已經(jīng)對(duì)象p的第k距離,那么,與對(duì)象p之間距離小于等于k?distance§的對(duì)象集合稱為對(duì)象p的第k距離領(lǐng)域,記作:Nk§
該領(lǐng)域其實(shí)是以p為中心, k?distance§為半徑的區(qū)域內(nèi)所有對(duì)象的集合(不包括p本身)。由于可能同時(shí)存在多個(gè)第k距離的數(shù)據(jù),因此該集合至少包括k個(gè)對(duì)象。可以想象,離群度越大的對(duì)象的范圍往往比較大,而離群度比較小的對(duì)象范圍小。
(3)對(duì)象p相對(duì)于對(duì)象o的可達(dá)距離
公式:reachdist(p,o)=max{k?distance(o),||p?o||}
公式的理解可以參考下圖,對(duì)于兩個(gè)不同的點(diǎn)p1和p2,它們的可達(dá)距離計(jì)算是不一樣的,對(duì)p1來(lái)說(shuō),因?yàn)閜1 在 o 的 k 鄰域內(nèi)(可以看出這里的k=3),所以它們的距離就是 k-distance(o) 的距離,也就是等于圓的半徑;而對(duì)于p2,很明顯它不在o的k鄰域內(nèi),所以它的可達(dá)距離就是實(shí)際距離,也就是這兩點(diǎn)之間的距離。

(4)局部可達(dá)密度
對(duì)象p的局部可達(dá)密度定義為p的k最近鄰點(diǎn)的平均可達(dá)距離的倒數(shù)(實(shí)質(zhì)也就是p的第k距離鄰域內(nèi)所有可達(dá)距離的平均值的導(dǎo)數(shù)。越大越好,代表數(shù)據(jù)聚的越緊湊)

(5)局部離群點(diǎn)因子

如果這個(gè)比值越接近1,說(shuō)明p和其K距離鄰域內(nèi)的點(diǎn)密度差不多,p可能和其K距離鄰域內(nèi)的點(diǎn)同屬一簇;如果這個(gè)比值越小于1,說(shuō)明p的密度高于其鄰域內(nèi)其他點(diǎn)的密度,p為密集點(diǎn);如果這個(gè)比值越大于1,說(shuō)明p的密度小于其鄰域內(nèi)其他點(diǎn)的密度,p越可能是異常點(diǎn)。通過(guò)這種方式就能在樣本空間數(shù)據(jù)分布不均勻的情況下也可以準(zhǔn)確發(fā)現(xiàn)離群點(diǎn)。
可以想象下,一個(gè)離群點(diǎn)p,它的lrdk(o)是遠(yuǎn)大于lrdk§的,通過(guò)特例很容易看出,這樣該算法就可以很好的理解了

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):
LOF算法是一種非監(jiān)督算法
LOF算法是一種基于密度的算法
LOF算法適合于對(duì)不同密度的數(shù)據(jù)的異常檢測(cè)

缺點(diǎn):
檢測(cè)的數(shù)據(jù)必須有明顯的密度差異
計(jì)算比較復(fù)雜
應(yīng)用場(chǎng)景有限

調(diào)參

LOF(self, n_neighbors=20, algorithm='auto', leaf_size=30,metric='minkowski', p=2, metric_params=None,contamination=0.1, n_jobs=1)n_neighbors:(int,optional (default = 20 )) - 默認(rèn)情況下用于kneighbors查詢的鄰居數(shù)。如果n_neighbors大于提供的樣本數(shù),則將使用所有樣本。Algorithm:({‘a(chǎn)uto’ ,‘ball_tree’ ,‘kd_tree’ ,‘brute’} ,可選) - 用于計(jì)算最近鄰居的算法: 'ball_tree’將使用BallTree 'kd_tree’將使用KDTree 'brute’將使用蠻力搜索。 'auto’將嘗試根據(jù)傳遞給fit()方法的值來(lái)確定最合適的算法。 注意:在稀疏輸入上擬合將使用強(qiáng)力來(lái)覆蓋此參數(shù)的設(shè)置。leaf_size:(int,optional (default = 30 )) - 傳遞給BallTree或KDTree的葉子大小。 這可能會(huì)影響構(gòu)造和查詢的速度,以及存儲(chǔ)樹(shù)所需的內(nèi)存。最佳值取決于問(wèn)題的性質(zhì)。Metric:(字符串或可調(diào)用,默認(rèn)’minkowski’) -用于距離計(jì)算的度量。 from scikit-learn: [‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’] from scipy.spatial.distance: [‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’]p:(整數(shù),可選(默認(rèn)值= 2 )) - 來(lái)自sklearn.metrics.pairwise.pairwise_distances的Minkowski度量的參數(shù)。 當(dāng)p = 1時(shí),這相當(dāng)于使用manhattan_distance(l1)。 對(duì)于p = 2使用euclidean_distance(l2)。 對(duì)于任意p,使用minkowski_distance(l_p)

總結(jié)

經(jīng)實(shí)踐,發(fā)現(xiàn)該算法在面對(duì)數(shù)據(jù)量較大的場(chǎng)景時(shí),執(zhí)行效率較低。作為基于密度的算法,效果比KNN要好,面對(duì)適當(dāng)?shù)膱?chǎng)景,可以嘗試法使用。

總結(jié)

以上是生活随笔為你收集整理的异常检测算法之LOF的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。