mi piacerebbe trovare quale sia il modo migliore per rilevare i valori anomali. ecco il problema e alcune cose che probabilmente non funzioneranno. diciamo che vogliamo analizzare alcuni dati quasi uniformi da una colonna dirty varchar (50) in mysql. iniziamo facendo un'analisi per lunghezza della stringa.rilevamento di valori anomali in una distribuzione sparsa?
| strlen | freq |
| 0 | 2312 |
| 3 | 45 |
| 9 | 75 |
| 10 | 15420 |
| 11 | 395 |
| 12 | 114 |
| 19 | 27 |
| 20 | 1170 |
| 21 | 33 |
| 35 | 9 |
cosa vorrei fare è elaborare un algoritmo per determinare quale lunghezza stringa ha una elevata probabilità di essere volutamente unico anziché essere typeo di rifiuti o casuale. questo campo ha la possibilità di essere un tipo "enum", quindi ci possono essere diversi picchi di frequenza per valori validi. chiaramente 10 e 20 sono validi, 0 è solo dati omessi. 35 e 3 potrebbero essere alcuni rifiuti casuali nonostante entrambi siano molto diversi nella frequenza. 19 e 21 potrebbero essere type-os attorno al formato 20. 11 potrebbe essere di tipo OS per 10, ma che dire di 12?
sembra semplicemente utilizzare la frequenza di occorrenza% non è sufficiente. c'è bisogno di hotspots di probabilità più alta "solo un errore" attorno ai valori anomali ovvi.
anche, con una soglia fissa non riesce quando ci sono 15 lunghezze univoche che possono variare tra 5-20 caratteri, ciascuna con occorrenza tra il 7% e il 20%.
deviazione standard non funziona perché si basa sulla media. la deviazione assoluta mediana probabilmente non funzionerà perché si può avere un valore anomalo ad alta frequenza che non può essere scartato.
sì, ci saranno altri parametri per la pulizia dei dati nel codice, ma la lunghezza sembra molto rapidamente prefiltrare e classificare i campi con qualsiasi quantità di struttura.
esistono metodi noti che funzionino in modo efficiente? Non ho molta familiarità con i filtri bayesiani o con l'apprendimento automatico ma forse possono aiutarti?
grazie! leon
+1 per la domanda interessante – cctan