Anomali tespiti: hangi algoritmayı kullanmalı?


10

Bağlam: Yazım hatası olabilecek mantıksız verileri filtrelemek için klinik verileri analiz eden bir sistem geliştiriyorum.

Şimdiye kadar ne yaptım:

Akla yatkınlığı ölçmek için şimdiye kadar denediğim veriyi normalleştirmek ve sonra D setindeki bilinen veri noktalarına olan uzaklığına bağlı olarak p noktası için bir güvenilirlik değeri hesaplamaktı (= eğitim seti):

plausibility(p)=qDGauss(distance(p,q))

Bu kantifikasyon ile akla yatkın verileri akıl almaz verilerden ayıran bir eşik seçebilirim. Python / numpy kullanıyorum.

Benim sorunlarım:

  1. Bu algoritma bağımsız boyutları algılayamıyor. İdeal olarak, kayıt hakkında bildiğim her şeyi algoritmaya koyabilir ve X boyutunun kaydın uygunluğunu etkilemediğini kendi başına öğrenebilirim.
  2. Algoritma booleans veya select girişleri gibi ayrık değerler için gerçekten işe yaramaz. Sürekli değerlerle eşleştirilebilirler, ancak Select 1'in Select 2'ye Select 3'ten daha yakın olması sezgiseldir.

Soru:

Bu görev için ne tür algoritmalar aramalıyım? En yakın komşu temelli, kümelenme temelli ve istatistiksel yaklaşımları içeren bir ton seçenek var gibi görünüyor. Ayrıca, bu karmaşıklığın anormallik tespiti ile ilgili makaleler bulmakta zorlanıyorum.

Herhangi bir tavsiye çok takdir edilmektedir.

[Düzenle] Örnek:

Verilerin bir Kişinin Yüksekliği, Bir Kişinin Ağırlığı ve Zaman Damgasından oluştuğunu varsayalım - bu yüzden 3D Veriler. Ağırlık ve Yükseklik birbiriyle ilişkilidir, ancak zaman damgası tamamen bağımsızdır. Sadece öklid mesafelerini düşünürsem, çapraz doğrulama verilerimin çoğuna uyacak küçük bir eşik seçmem gerekirdi. İdeal olarak, algoritma sadece zaman damgası boyutunu göz ardı eder, çünkü bir kaydın makul olup olmadığını belirlemek önemsizdir, çünkü zaman damgası diğer boyutlarla hiçbir şekilde ilişkili değildir. Herhangi bir zaman damgası mantıklıdır.

Öte yandan, zaman damgasının önemli olduğu örnekler oluşturulabilir. Örneğin, X özelliği için Y değeri, belirli bir tarihten önce ölçüldüğünde makul olabilir, ancak belirli bir tarihten sonra mümkün olmayabilir.


Lütfen bu sinir bozucu (bazılarına!) Soruyu ele aldığı için stats.stackexchange.com/questions/97946/changepoints-in-r adresine verdiğim yanıta bakın .
IrishStat

Misiniz stats.stackexchange.com/questions/213 Aradığınız türden bir şey olabilir mi?
whuber

Bu işi booleanlar için yapabileceğinizden şüpheliyim.
Aksakal

@whuber Emin değilim, alakasız boyutların nasıl göz ardı edilebileceğini kapsamıyor gibi görünüyor.
Georg

1
Bu arada, tarif ettiğim yaklaşım için bir resmileştirme bulmakta da zorlanıyorum. Resmi terimi biliyor olsaydım, araştırmalarımda da bana yardımcı olur. Belki de bu algoritmada en azından bağımsız / alakasız boyut sorununu ele alan bir varyasyon vardır.
Georg

Yanıtlar:


7

Anomali Tespitinin tipik bir formülasyonu, anormal olmayan verilerin özelliklerinin her biri için ortalama ve varyansın bulunmasıdır ve , bileşenlerine sahip bu özelliklerin bir vektörüyse, bir özellik kombinasyonunun olasılığını şu şekilde tanımlayın:mxxip(x)

p(x)=i=1mp(xi;μi,σi2)

burada her gauss dağıtılır:xixiN(μi,σi2)

olduğunda bir anormallik oluşurp(x)<ϵ

Her dağılımının aslında normal olması gerekmez, ancak en azından normal benzeri olması daha iyidir. Ancak kullandığınız özellikler isteğe bağlıdır; Bir özelliğin düşünüyorsanız bu kadar örneğin ham verilere doğrudan alınan ya da hesaplanabilir daha iyi kullanılarak modellenmiştir ardından da bu özelliği ziyade .xixiloglog(xi)xi

Bu, alırsanız zaten yaptığınızla çok benzer görünüyor .q=μ

belirleniyorϵ

Algoritma negatif örneklere (anomali olmayanlar) uygundur. Ancak çapraz doğrulama kümesinden belirlenir ve genellikle en iyi puanını sağlayan değer olarak seçilirϵF1

F1=2PrecisionRecallPrecision+Recall

Ancak F1'i hesaplamak için neyin anormal olduğunu ve neyin olmadığını bilmeniz gerekir; gerçek pozitifler, sistemin bir anomali öngördüğü ve aslında bir anomali olduğu zaman, yanlış pozitifler, gerçekte olmayan vb. Eğer buna sahip değilseniz, o zaman varsayımlara geri dönmeniz gerekebilir.

İlişkili özellikler sorunu

Yukarıdaki özellikler bir dezavantajı olsa özellikleri ilişkilendirilir. Eğer öyleyse, yukarıdaki hesaplama aslında bir şeyi anormal olarak işaretleyemez. Bunun için bir düzeltme kovaryans matrisi olduğu özellikleri için çok değişkenli gauss kullanmaktadır .mΣ

p(x)=1(2π)m2(detΣ)1/2e12(xμ)TΣ1(xμ)

bulmak için de aynı şey geçerlidir ve bu yaklaşım tersini hesaplamanız gereken bir dezavantaja sahiptir . Bu nedenle, en az özellik kadar örnek olmalı ve özellik sayısı büyükse, işlem hesaplama açısından yoğun olacaktır ve doğrusal olarak bağımlı özelliklere karşı korunmalısınız. Bu uyarıları aklınızda bulundurun, ancak bir sorun olmadığı anlaşılıyor.ϵΣ


Çok değişkenli gauss dağılımı da dahil olmak üzere bu yaklaşımı zaten denedim. Gerçekten de, ilgisiz özellikler bu yaklaşımla ilgili bir sorun değildir. Bulduğum şey, bu yaklaşımın karmaşık modeller için uygun olmadığıydı. Örneğin, F1, F2 özelliklerine sahip bir 2D veri kümem olsaydı, kabaca F2 = F1 ^ 3 olması durumunda, çok değişkenli gauss dağılımı sadece verilerin etrafında bir elips çizecek ve verileri kabaca modelleyecektir. Bu yüzden soruda açıklanan yaklaşıma gittim (burada bir q değil, birçok qs var).
Georg

Peki, çok değişkenli gauss yaklaşımını benimsemenin ve daha karmaşık veri modellerini yakalamak için uygulamanın bir yolu var mı? Örneğin, karışım modelleri bu durumda bana yardımcı olabilir mi? Araştırmamdakiler hakkında biraz okudum, ancak bunları nasıl uygulayacağımı tam olarak anlamadım.
Georg

@Georg Hmm Sorununuzun karmaşık modeller değil, karmaşık veriler ve çok basit modeller sorunu olup olmadığını merak ediyorum. Ya da başka bir deyişle yetersiz. Yukarıdaki durumda, yerine kullanmak yerine ne olur ? Özellikler verilerden alınabilir veya hesaplanabilir. (F1,F2)(F1,F21/3)
waTeim

Evet, demek istediğim uygun olmayan şey. Ve evet, bu işe yarayacaktı, ama algoritmanın bunu otomatik olarak algılamasını istiyorum. Özellikleri manuel olarak değiştiremiyorum, her durumda çalışmalı.
Georg

İşte bir örnek: İki grafik yükseklik (x ekseni) ve ağırlık (y ekseni) için verileri görüntüler (Almanca altyazılar için özür dilerim). İlk grafik, çok değişkenli gauss yaklaşımının sonucunu, ikinci soruda açıklanan yaklaşımın sonucunu göstermektedir. Her iki durumda da eşik, CV verilerinin% 97'sinin makul kabul edileceği şekilde seçilmiştir. İkinci yaklaşım, verilerin karmaşıklığını daha iyi yakalayabilir. 1: dl.dropboxusercontent.com/u/26034024/anomaly/gauss.png 2: dl.dropboxusercontent.com/u/26034024/anomaly/distance.png
Georg

3

Bu sorunları çözmek için ihtiyaç duyduğum projeyi neredeyse bitirdim ve herhangi birinin aynı sorunları olması durumunda çözümümü paylaşmak istiyorum.

Her şeyden önce, tarif ettiğim yaklaşım Çekirdek Yoğunluğu Tahminine çok benzer . Araştırma için bilmek güzeldi ...

Bağımsız Özellikler

Bağımsız özellikler, Korelasyon Katsayısı ölçülerek filtrelenebilir . Tüm özellikleri çift olarak karşılaştırdım ve korelasyonu ölçtüm. Sonra ölçeklendirme faktörü olarak her özelliğin maksimum mutlak korelasyon katsayısını aldım. Bu şekilde, diğerleriyle ilişkilendirilmeyen özellikler 0'a yakın bir değerle çarpılır ve böylece bunların Öklid mesafesi üzerindeki etkisi(diğer bir deyişle ) önemsizdir.||x1x2||distance(x1,x2)

Dikkat edin: korelasyon katsayısı sadece doğrusal korelasyonları ölçebilir. Ayrıntılar için bağlantılı wiki sayfasına bakın. Verilerdeki korelasyon doğrusal olarak tahmin edilebilirse, bu iyi çalışır. Değilse, bu makalenin son sayfasına bakmalı ve bir ölçeklendirme faktörü bulmak için korelasyon ölçümlerini kullanıp kullanamayacağınızı görmelisiniz.

Ayrık değerler

Açıklanan algoritmayı yalnızca sürekli değerler için kullandım. Eğitim setini filtrelemek için ayrık değerler kullanıldı. Eğer bir kişinin boyuna ve kilosuna sahipsem ve onun kadın olduğunu biliyorsanız, anormallik olup olmadığını kontrol etmek için sadece diğer kadınlardan örneklere bakacağım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.