Rilevamento anomalo in set molto piccoli


12

Devo ottenere un valore il più preciso possibile per la luminosità di una fonte di luce principalmente stabile, dati dodici valori di luminosità del campione. Il sensore è imperfetto e la luce può occasionalmente "sfarfallare" più luminosa o più scura, che può essere ignorata, quindi la mia necessità di un rilevamento anomalo (penso?).

Ho fatto alcune letture su vari approcci qui e non riesco a decidere quale approccio scegliere. Il numero di valori anomali non è mai noto in anticipo e spesso sarà zero. Lo sfarfallio è generalmente una deviazione molto grande dalla luminosità stabile (abbastanza per confondere con qualsiasi media presa con un grande presente), ma non necessariamente.

Ecco un esempio di 12 misurazioni per completezza della domanda:

295.5214, 277.7749, 274.6538, 272.5897, 271.0733, 292.5856, 282.0986, 275.0419, 273.084, 273.1783, 274.0317, 290.1837

La mia sensazione è che probabilmente non ci sono valori anomali in quel particolare set, anche se 292 e 295 sembrano un po 'alti.

Quindi, la mia domanda è: quale sarebbe l'approccio migliore qui? Devo dire che i valori derivano dal prendere la distanza euclidea dei componenti RG e B della luce da un punto zero (nero). Sarebbe doloroso a livello di programmazione, ma possibile, tornare a questi valori, se necessario. La distanza euclidea è stata utilizzata come misura della "forza complessiva" in quanto non mi interessa il colore, ma solo la forza della produzione. Tuttavia, c'è una ragionevole possibilità che i tremolii che ho citato abbiano una composizione RGB diversa dal solito output.

Al momento sto giocando con una sorta di funzione che si ripeterà fino a quando non si raggiunge un'adesione stabile alle misure consentite da:

  1. Trovare la deviazione standard
  2. Mettendo tutto fuori diciamo 2 SD in un elenco ignorato
  3. Ricalcolo della media e della SD con l'elenco ignorato escluso
  4. Ri-decidere chi ignorare in base alla nuova media e alla SD (valutare tutti i 12)
  5. Ripetere fino a stabile.

C'è valore in questo approccio?

Tutti i commenti sono stati accettati con gratitudine!


Per quanto dolorosa, la tua ipotesi che uno sfarfallio potrebbe effettivamente avere diversi componenti RGB (anche se a volte una distanza simile dal nero) varrebbe la pena perseguire. Un'altra opzione è semplicemente usare la mediana invece della media, a seconda del tuo obiettivo.
Wayne,

Risposte:


7

I valori anomali nei piccoli campioni possono essere sempre molto difficili da rilevare. Nella maggior parte dei casi, in realtà vorrei raccomandare che se ritieni che i tuoi dati non siano corretti senza mezzi termini, un valore "stravagante" potrebbe non essere problematico e la sua esclusione potrebbe essere irragionevole. Probabilmente l'utilizzo di solide tecniche statistiche sarà più sensato e più vicino a una soluzione di medio livello. Hai un piccolo campione; prova a far contare ogni punto campione. :)

Per quanto riguarda il tuo approccio suggerito: non imporrei frettolosamente un'assunzione di normalità ai tuoi dati con una regola 68-95-99.7 su di loro (come sembra che tu abbia in qualche modo a che fare con la tua regola euristica 2SD). La disuguaglianza di Chebyshev per una volta assume una regola di 75-88,9-93,8 che è chiaramente meno rigida. Esistono anche altre " regole "; la sezione Identificazione degli outlier nel lemma Outlier in wikipedia ha un fascio di euristiche.

ZM

Mi=.6745(xix~)/MAD

x~M3.5

Ancora una volta, dato che hai un campione davvero piccolo, se ritieni che il tuo campione non sia ovviamente corrotto (un 9'4 "umano), ti consiglierei di non escludere i dati in fretta. I tuoi" sospetti valori anomali "potrebbero essere dati non corretti; il loro uso potrebbe effettivamente aiutare piuttosto che danneggiare la tua analisi.


1
x¯x¯x~

1
+1 per una forte enfasi sul valore di sommari solidi. Vedi anche altri thread su questo sito.
Nick Cox,

1
@NickCox: buon punto, non so cosa stavo pensando in primo luogo. L'ho cambiato ora. Grazie per il suggerimento
usεr11852,


0

Punta il primo: può valere la pena tornare al colore RGB. Raramente è utile eliminare i dati e la grandezza del vettore rgb non è l'unico modo per rappresentare la luminosità: la luminosità percepita è diversa, come lo è il valore in HSV.

Ma mettendoli da parte e occupandoti dei dati che hai, hai mai considerato di formarlo come un problema di classificazione anziché di modellizzazione e fare un apprendimento automatico? Hai un input, che è un vettore con 12 valori reali (le letture della luminosità). Hai un output, che è un vettore di 12 valori binari (1 = inlier, 0 = outlier). Ottieni diversi set di lettura della luminosità e etichettali manualmente, mostrando quale lettura di luminosità in ogni set è un valore anomalo / anomalo. Qualcosa come questo:

Quindi, esegui l'intero lotto attraverso un classificatore di qualche tipo:

  • Potresti usare un singolo classificatore che genera 12 valori binari diversi: una rete neurale ti permetterebbe di configurarlo abbastanza facilmente.
  • In alternativa, è possibile utilizzare un classificatore binario standard (ad esempio SVMlite ) e formare 12 modelli diversi, uno che classifica se ciascun elemento dell'output è un valore errato / anomalo.

E hai finito! Non c'è bisogno di agitarsi cercando di trovare la 'regola' che separa te stesso gli inlier dagli outlier. Basta avere alcuni set di dati che sembrano ragionevoli e lasciare che la macchina lo faccia per te :)

~~~

EDIT: Per inciso, il metodo proposto, in cui si inserisce iterativamente un gaussiano, quindi classifica ogni campione a più di 2 deviazioni standard come un valore anomalo, assomiglia molto a un algoritmo di massimizzazione delle aspettative. Qualcosa come questo:

  • Un singolo componente gaussiano (modellando gli inlier)
  • Un componente di sfondo uniforme (i valori anomali)
  • Qualche probabilità precedente di ciascuno che dipende in modo non ovvio dalla larghezza del gaussiano (la regola "classificare a 2 deviazioni standard").
  • Classificazione difficile in fase di aspettativa.

Se segui questa strada, potrebbe valere la pena cercare su Google gli algoritmi EM e verificare quali ipotesi stai costruendo nel tuo modello.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.