Wykrywanie wartości odstających online

10

Chcę przetwarzać automatycznie segmentowane obrazy mikroskopowe w celu wykrycia wadliwych obrazów i / lub wadliwych segmentacji w ramach wysokowydajnego potoku obrazowania. Istnieje wiele parametrów, które można obliczyć dla każdego surowego obrazu i segmentacji, i które stają się „ekstremalne”, gdy obraz jest wadliwy. Na przykład bąbelek na obrazie spowoduje anomalie, takie jak olbrzymi rozmiar w jednej z wykrytych „komórek” lub anomalnie niską liczbę komórek dla całego pola. Szukam skutecznego sposobu na wykrycie tych anomalnych przypadków. Idealnie wolałbym metodę, która ma następujące właściwości (mniej więcej w kolejności pożądania):

  1. nie wymaga uprzednio zdefiniowanych progów bezwzględnych (chociaż wstępnie zdefiniowane wartości procentowe są OK);

  2. nie wymaga posiadania wszystkich danych w pamięci ani nawet obejrzenia wszystkich danych; byłoby w porządku, aby metoda była adaptacyjna i aktualizowała swoje kryteria, gdy widzi więcej danych; (oczywiście z niewielkim prawdopodobieństwem mogą wystąpić anomalie, zanim system zobaczy wystarczającą ilość danych i zostanie pominięty itp.)

  3. jest równoległy: np. w pierwszej rundzie wiele węzłów pracujących równolegle wytwarza pośrednie anomalie kandydujące, które następnie przechodzą jedną sekundę selekcji po zakończeniu pierwszej rundy.

Anomalie, których szukam, nie są subtelne. Są to te, które są oczywiste, jeśli spojrzy się na histogram danych. Ale objętość danych i ostateczny cel wykrycia anomalii w czasie rzeczywistym podczas generowania obrazów wyklucza jakiekolwiek rozwiązanie wymagające kontroli histogramów przez osobę oceniającą.

Dzięki!

kjo
źródło
Czy mam rację, że twój problem jest zasadniczo jednoznaczny?
user603
1
Opublikuj trochę danych, ponieważ może to pomóc mi w „dostrzeżeniu” twojego problemu. Znam dobrze histogram podkreślający wartość odstającą i być może będę w stanie dostarczyć ci wskazówek dotyczących skutecznego sposobu wykrywania tych anomalnych przypadków za pomocą metod statystycznych zamiast sprawdzania histogramów przez osobę oceniającą. Zobacz niedawną dyskusję na temat wykrywania losowości stats.stackexchange.com/questions/12955/… Oczywiście próbujesz wykryć deterministyczne naruszenia losowości.
IrishStat
Czy możesz podać nam więcej szczegółów? Czy parametry są ciągłe czy dyskretne? Jaką dystrybucję mają parametry dla obrazów bez wad? Gaussa? Czy parametry są niezależne czy skorelowane? Z grubsza, ile parametrów wyodrębniasz na obraz? Ile obrazów na sekundę trzeba obsłużyć (lub jakie opóźnienie na obraz jest dopuszczalne)? Być może możesz pokazać niektóre histogramy dla kilku typowych parametrów w dużym zestawie danych nieuszkodzonych obrazów, a następnie pokazać odpowiedni histogram dla wadliwych obrazów? To może pomóc znaleźć dobre rozwiązanie.
DW

Odpowiedzi:

3

Czy rozważałeś coś takiego jak klasyfikator jednoklasowy?

Potrzebny byłby zestaw szkoleniowy znanych dobrych obrazów, który służy do szkolenia klasyfikatora, który próbuje rozróżnić „obrazy takie jak zestaw treningowy” i wszystko inne. Istnieje teza autorstwa Davida Taxa, która prawdopodobnie zawiera więcej informacji niż faktycznie potrzebujesz na ten temat, ale może być dobrym miejscem do rozpoczęcia.

Poza wymaganiem zestawu szkoleniowego, wygląda na to, że spełniałby twoje wymagania:

  • Parametry są uczone na podstawie danych (tutaj nie ma reklamowania)

  • Po uzyskaniu modelu nie trzeba przechowywać danych w pamięci.

  • Podobnie, wyszkolony klasyfikator może być uruchomiony na tylu węzłach, ile masz.

W zależności od zastosowania może być możliwe jednorazowe przeszkolenie przydatnego klasyfikatora i ponowne użycie go do różnych rodzajów próbek / barwników / plam / floroforów / itp. Alternatywnie możesz być w stanie skłonić użytkowników do ręcznej oceny pierwszej partii każdego uruchomienia - wyobrażam sobie, że człowiek może sprawdzić co najmniej 5-8 przykładów / minutę z dobrym interfejsem.

Matt Krause
źródło
2

Zobacz http://scholar.google.com/scholar?q=stream+outlier+detection

Kilka ustalonych metod, takich jak LOF , zostało zaadaptowanych w kontekście przesyłania strumieniowego. Istnieją również oczywiście metody, które aktualizują histogramy w sposób strumieniowy, a tym samym sygnalizują oczywiste jednowymiarowe wartości odstające. To może być dla Ciebie wystarczające?

Ma ZAKOŃCZENIE - Anony-Mus
źródło
1

Istnieje wiele możliwych podejść, ale trudno jest wiedzieć, co może być najlepsze w Twojej sytuacji bez dodatkowych informacji.

Rn

  • Wektory cech wszystkich wcześniejszych obrazów wraz z ich klasyfikacją przechowuj na dysku. Okresowo (powiedzmy raz dziennie) trenuj algorytm uczenia się na tych danych i wykorzystuj wynikowy algorytm do klasyfikowania nowych obrazów. Miejsce na dysku jest tanie; to rozwiązanie może być pragmatycznym i skutecznym sposobem na konwersję algorytmu uczenia się offline na taki, który można wykorzystać w ustawieniach online.

  • Przechowuj wektory cech losowej próbki 1000 (lub 1 000 000) wcześniejszych zdjęć wraz z ich klasyfikacją. Okresowo trenuj algorytm uczenia się na tej podpróbce.

    Pamiętaj, że możesz skutecznie aktualizować tę podpróbkę w trybie online przy użyciu standardowych sztuczek . Jest to interesujące tylko, jeśli istnieje jakiś powód, dla którego trudno jest przechowywać wszystkie wektory cech wszystkich wcześniejszych obrazów (co wydaje mi się trudne do wyobrażenia, ale kto wie).

  • ndodon

    Innymi słowy, utrzymujesz wektor μ średnich, a anμnσμjajaσjax|xja-μja|doσjajaμσ

    Podejście to zakłada, że ​​każdy parametr z nieuszkodzonego obrazu ma rozkład Gaussa i parametry są niezależne. Te założenia mogą być optymistyczne. Istnieje wiele bardziej wyrafinowanych wariantów tego schematu, które wyeliminują potrzebę tych założeń lub poprawią wydajność; to tylko prosty przykład, który daje pomysł.

Ogólnie rzecz biorąc, możesz spojrzeć na algorytmy online i algorytmy przesyłania strumieniowego.

DW
źródło
DW Filtr / model ARIMA to optymalizacja „średniej bieżącej”, w której liczba warunków (N) i określone wagi, które należy zastosować, są empirycznie zidentyfikowane. Jednym szczególnym i oczywiście domniemanym modelem jest odgadnięcie przy „N” liczby wartości, które należy zastosować w „średniej bieżącej”, a następnie powiększenie niepoczytalności przez przyjęcie, że wagi są sobie równe.
IrishStat
@IrishStat, Nie jestem pewien, czy rozumiem twój komentarz. W przypadku, gdy moje pisanie było niejasne, nie sugerowałem ARIMA, chociaż to również można rozważyć. Sugerowałem coś znacznie prostszego: śledź średnią wszystkich dotychczasowych obserwacji i odchylenie standardowe. Za każdym razem, gdy zobaczysz nową obserwację, możesz zaktualizować średnią i odchylenie standardowe (pod warunkiem, że śledzisz liczbę zaobserwowanych do tej pory) za pomocą standardowych metod. To może być uproszczone, ale nie rozumiem, dlaczego byłoby to szalone.
DW
0

Rn

Jeśli wartości odstające są dość oczywiste, prosta sztuczka, która zadziała, jest następująca. Skonstruuj z własnych wektorów funkcję skrótu uwzględniającą lokalizację. (Prosty, losowy skrót, na przykład po której stronie zestawu losowych hiperpłaszczyzn, na które spada wektor), może dać wektor boolowski jako wartość skrótu.) Teraz, gdy otrzymujesz wektory, obliczasz wartość skrótu wektora i przechowujesz wartość skrótu (wektor boolowski w przypadku hiperpłaszczyzn) i liczba w słowniku. Przechowujesz również całkowitą liczbę wektorów widoczną do tej pory. W dowolnym momencie możesz oflagować dany wektor jako wartość odstającą, jeśli łączna liczba wektorów, które zderzają się z nim w haszu, jest mniejsza niż z góry określony procent całości.

Możesz to postrzegać jako tworzenie histogramu w sposób przyrostowy. Ale ponieważ dane nie są jednoznaczne, używamy sztuczki haszującej, aby zachowywała się tak.

Innuo
źródło