Chciałbym znaleźć najlepszy sposób na wykrycie wartości odstających. tutaj jest problem i niektóre rzeczy, które prawdopodobnie nie będą działać. Powiedzmy, że chcemy wyłowić jakieś quasi-jednolite dane z brudnej kolumny varchar (50) w mysql. Zacznijmy od wykonania analizy według długości łańcucha.wykrywanie wartości odstających w rzadkiej dystrybucji?
| strlen | freq |
| 0 | 2312 |
| 3 | 45 |
| 9 | 75 |
| 10 | 15420 |
| 11 | 395 |
| 12 | 114 |
| 19 | 27 |
| 20 | 1170 |
| 21 | 33 |
| 35 | 9 |
co chciałbym zrobić, to wymyślić algorytm, aby określić, które ciąg długość ma wysokie prawdopodobieństwo bycia celowo wyjątkowy zamiast być typeo lub losowe śmieci. to pole ma możliwość bycia typem "enum", więc może istnieć kilka skoków częstotliwości dla prawidłowych wartości. wyraźnie 10 i 20 są ważne, 0 to po prostu pominięte dane. 35 i 3 mogą być losowymi śmieciami, mimo że oba są bardzo różne pod względem częstotliwości. 19 i 21 może być typu-os w stosunku do formatu 20. 11 może być typu-os dla 10, ale co z 12?
Po prostu wydaje się, że częstotliwość występowania% nie wystarczy. potrzebne są hotspoty o wyższym prawdopodobieństwie "tylko błędu" wokół oczywistych wartości odstających.
również, o ustalonym progu nie powiedzie się, gdy istnieje 15 unikalnych długości, które mogą się różnić od 5-20 znaków, każdy z od 7% do 20% występowania.
odchylenie standardowe nie będzie działać, ponieważ zależy od średniej. mediana bezwzględnego odchylenia prawdopodobnie nie będzie działać, ponieważ możesz mieć odchylenie wysokiej częstotliwości, którego nie można odrzucić.
tak będą inne parametry do czyszczenia danych w kodzie, ale długość wydaje się bardzo szybko wstępnie filtrować i klasyfikować pola o dowolnej ilości struktury.
Czy są jakieś znane metody, które działałyby wydajnie? Nie jestem zaznajomiony z filtrami Bayesa ani uczeniem maszynowym, ale może oni mogą pomóc?
dziękuję! leon
+1 za ciekawe pytanie +1 za interesujące pytanie – cctan