Medycyna i machine learning – algorytm do wspomagania decyzji lekarza

CornerRight 8 min
Machine Learning
AI
Bez kategorii

Cz. 1 Zarys problemu oraz propozycja rozwiązania

Wstęp – wspomaganie decyzji przy pomocy machine learning

W poniższym artykule przedstawimy proces tworzenia systemu wyposażonego w moduł inteligentnego wnioskowania dla branży medycznej. Mówiąc dokładnie, przeanalizujemy problem kolejki pacjentów oczekujących na specjalistyczne badanie medyczne. Zadaniem modułu machine learning będzie sugerowanie zmian w kolejności osób. Do uczenia modelu wykorzystamy dane pochodzące z dokumentacji medycznej byłych pacjentów, dzięki czemu będziemy mogli wskazać pacjentów którzy wymagają badania w pierwszej kolejności. Zredukuje to czas reakcji oraz zminimalizuje możliwość błędu operatora kolejki. Działający algorytm machine learning podejmie decyzję mając w “pamięci” setki tysięcy przypadków, wykonując jedno zadanie w ułamku sekundy i odciążając operatora systemu.

 

Pamiętajmy, że użycie systemu wspomagania decyzji nie może zastąpić kontroli fizycznego operatora. Jak sama nazwa wskazuje, jest to system “wspomagania”, nie podejmowania decyzji. Jego skuteczność będzie zdefiniowana jakością danych użytych do nauczenia, ich ilością oraz skutecznością narzędzi użytych do stworzenia takiego algorytmu. Właściwie na każdym etapie będzie potrzebna osoba dysponująca wiedzą i znajomością dziedziny, dzięki czemu sugestie modelu machine learning będą nadzorowane.

Opis problemu – kolejka do badania medycznego

Weźmy sytuację, w której szpital dysponuje specjalistycznym sprzętem badawczym. Taki sprzęt jest oczywiście bardzo drogi, co za tym idzie jest go mało, więc kolejka do badań się wydłuża. Zakładamy, że omawiany sprzęt medyczny pozwala zdiagnozować chorobę kości – osteoporozy. Wiemy z badań, że choroba się rozwija, ma różne stadia. Nie jest chorobą dającą specyficzne, zerojedynkowe objawy. Wykrycie jej we wczesnym stadium pozwala na szybkie rozpoczęcie leczenia, co znacznie podnosi szanse odzyskania zdrowia lub zminimalizowanie potencjalnych szkód. 

Oczywiście chcemy priorytetowo skierować na badania tych pacjentów, których najbardziej podejrzewamy o wystąpienie choroby. Ale jak stwierdzić że dana osoba jest bardziej narażona, niż inne? Dostęp do specjalistów, którzy dzięki swojej wiedzy i doświadczeniu są w stanie postawić taką diagnozę, jest mocno ograniczony.  Czas lekarza poświęcony osobie, która ma znikome prawdopodobieństwo wystąpienia choroby, jest czasem straconym. Rozwiązaniem tego problemu może się wydawać maksymalna redukcja czasu pomiędzy skierowaniem na badanie a wizytą u specjalisty.

 

rys.1 Przykładowy proces kwalifikacji do leczenia

rys.2 Lokalizacja aplikacji w procesie

Propozycja rozwiązania –model machine learning

Miejscem, w którym najbardziej przyda się pomoc systemu jest wstępna klasyfikacja, zatem w tym obszarze osadzimy nasz moduł. Na poniższym procesie, jest to krok numer 1.

rys. 3 etapy prac

Do rozpoczęcia pracy nad stworzeniem takiego modułu uczenia maszynowego niezbędne będą wyniki badań wraz z odpowiednimi pomiarami. Potrzebujemy wielu historycznych danych, które umożliwią nam nauczenie modelu. Jeśli wyniki uczenia będą zadowalające, na jego podstawie zostanie zakodowany algorytm klasyfikujący.

Prace nad projektem możemy podzielić na etapy.

Etapy prac nad algorytmem machine learning

Etap przygotowawczy.

Inżynier pracujący nad stworzeniem algorytmu musi zrozumieć problem, nad którym pracuje. Bez znajomości problemu, a co za tym idzie środowiska w jakim występuje, nie ma możliwości jego rozwiązania. W tym etapie zawiera się zapoznanie się z literaturą oraz konsultacje ze specjalistą, który jest w stanie opisać zjawisko – w naszym przypadku prawdopodobnie z doktorem medycyny, innym badaczem lub pracownikiem medycznym.

Etap zbierania i analizy danych

W tym etapie podejmujemy prace nad analizą danych dotyczących choroby. Powinniśmy móc wywnioskować jakie pomiary są standardowo wykonywane oraz jakimi dodatkowymi informacjami dysponujemy – np o płci, wieku badanego. Określenie jakości zbioru danych determinuje kolejne kroki. Jeśli okaże się, że nie dysponujemy zbiorem danych o wystarczającej jakości, trzeba będzie odsunąć w czasie uczenie modelu na rzecz zbierania danych o dobrej jakości. Żeby poprawnie sklasyfikować prawdopodobieństwo wystąpienia choroby,dane wejściowe muszą nieść informacje o czynnikach wskazujących na jej wystąpienie. Bez możliwości parametryzacji danych  zdrowotnych pacjenta nie stworzymy dobrze działającego klasyfikatora.

Jeśli jednak ilość danych medycznych oraz ich jakość jest zadowalająca, specjalista machine learning można przejść do kolejnego etapu – uczenia modelu klasyfikatora.

Badania eksploracyjne 

Na tym etapie inżynier machine learning bada które współczynniki korelują z rezultatem badania. W tym celu używamy odpowiednich narzędzi matematycznych, porównujemy ich rezultaty i dobieramy te najlepiej rokujące. Kiedy zauważamy tendencję wyników, zapisujemy rezultaty i prezentujemy je w sposób graficzny, tak, aby były możliwe do przeanalizowania przez specjalistów z zakresu medycyny. Etap ten jest najważniejszy w całym procesie. Pozwala na wyekstrahowanie ukrytych trendów dzięki analizie ogromnych ilości danych w różnych konfiguracjach. Podczas takich analiz jesteśmy w stanie odkryć, że zestawienie kilku konkretnych parametrów, posiadających odpowiednie progi, pozwala przewidzieć możliwość powstania choroby z prawdopodobieństwem na poziomie np. 80%. Jeśli wyniki będą statystycznie istotne,  możemy stwierdzić, że znaleźliśmy zmienne wskazujące na ryzyko wystąpienia choroby. Wykorzystanie znajomości tych zmiennych umożliwi nam stworzenie systemu rekomendacji kolejności do badania.

Tworzenie algorytmu

Po przeprowadzeniu badań i weryfikacji wyników oraz po otrzymaniu komentarza od  specjalistów medycyny, możemy zadecydować o kontynuacji prac (posiadamy dostatecznie dużo wiedzy), lub cofnięciu się do etapu zbierania danych. Jeśli nasze analizy okazały się trafne, przystępujemy do stworzenia modelu. W tym celu używamy… wyżej wspomnianych zmiennych. Dalej badamy kombinacje zmiennych które tłumaczą największy procent wariancji. To umożliwia nam wybranie najbardziej odpowiedniego algorytmu klasyfikującego. 

W tym celu używamy zestawu narzędzi i metod machine learning, które zostaną przedstawione w kontynuacji tego artykułu.

Tak stworzony moduł poddajemy testom. Ze względu na powagę dziedziny w jakiej system rekomendacji ma działać, czyli medycyny, model musi zostać przetestowany z maksymalną dokładnością. 

Mechanizm douczania modelu

Podczas działania aplikacji zdobywamy kolejne wyniki pozwalające na uszczegółowienie “wiedzy” naszego modelu machine learning. System zbiera dane – wiemy jakie osoby zostały skierowane na badania z wyższym poziomem pewności dot. wystąpienia choroby, mamy również wynik samego badania. Daje nam to informację będącą sprzężeniem zwrotnym całego układu. Model może się rozwijać wraz z czasem swojego działania. Nabywa wiedzy, która jest wykorzystywana do modyfikacji jego parametrów za pomocą mechanizmu douczania. 

Po każdym procesie ponownego nauczania modelu należy przeprowadzać serię dokładnych testów. Trzeba nadzorować rezultaty po kolejnych etapach uczenia, tak, aby móc najszybciej jak to możliwe zdiagnozować anomalie będące wynikiem uszkodzonych danych uczących bądź innych zjawisk, np. przeuczenia.

Mamy algorytm, co dalej

Stworzony przez nas model nie musi być osobnym programem, który obudowany jest w wiele dodatkowych funkcjonalności. Model machine learning należy potraktować jako samoistny serwis którego funkcją jest jedynie podawanie wyniku na podstawie wprowadzonych danych pacjenta. Traktujemy go jako osobną aplikację, którą można swobodnie osadzić w architekturze microservices lub hexagonalnej. Wydzielenie algorytmu do osobnego serwisu pozwala inżynierom na prowadzenie prac nad jego rozwojem bez potrzeby ingerencji w inne części systemu. Jeśli dana jednostka medyczna posiada już system kolejkowy, taki serwis może zostać zaimplementowany do działającego systemu. Aby serwis mógł porozumiewać się z innymi częściami aplikacji, wyposażamy go w interfejsy. 

Interfejs wejściowy oczekuje wymaganego kompletu danych o pacjencie, na wyjściu zaś daje wynik w postaci prawdopodobieństwa wystąpienia choroby.

 

rys. 4 przykład interfejsu serwisu

 

Po stronie systemu do zarządzania kolejką jest decyzja co zrobi z informacją o prawdopodobieństwu wystąpienia choroby. 

Podsumowanie

Powyżej opisaliśmy model machine learning który ma potencjał istotnie poprawiać skuteczność wykrycia osteoporozy na wczesnym etapie. To świetny przykład, jak systemy IT mogą polepszać jakość życia przeciętnego człowieka, choćby z punktu widzenia medycyny.

Powyższa treść stanowi wstęp do miniserii na temat procesowania danych. W kolejnych artykułach opiszemy jak zacząć tego typu projekt. Podzielimy się naszym doświadczeniem zarówno z zakresu zbierania wymagań, użycia narzędzi, jak i całościowego podejścia do tworzenia tego typu modeli.

Pamiętajmy, że prezentowane przez nas treści nie stanowią przepisu na stworzenie projektu. Jest to zbiór doświadczeń i dobrych praktyk którymi, jako firma zajmująca się na co dzień podobnymi problemami, chcemy się podzielić.

Artykuł opracowali developerzy z zespołu Data Processing & AI w 4soft: Michał Będkowski i Bartosz Roguski.

Similar blog posts

Blockchain publiczny vs. blockchain prywatny: definicje, różnice, podobieństwa

8 min

W ostatnich latach technologia blockchain szturmem zdobyła branżę technologiczną, oferując przedsiębiorstwom zupełnie nowy, a przy tym bardzo bezpieczny sposób obsługi transakcji. Możemy zakładać, że to dopiero początek, a w przyszłości aplikacje blockchain będą rewolucjonizować także inne branże.

pon./paź/2021
Więcej

Czy pracownicy marnują czas na home office?

9 min

Przymus pracy zdalnej spadł na przedsiębiorców jak grom z jasnego nieba. Z dnia na dzień miliony osób na całym świecie znalazło się w pracy, nie ruszając się z domu: bez wcześniejszego przygotowania, stosownego przeszkolenia i ustalenia jasnych zasad co do tego, jak ich praca powinna teraz wyglądać. Taka sytuacja generuje konflikty i rodzi pytania o efektywność pracy zdalnej.

pt./lut/2021
Więcej

Blockchain Wallet – czym jest? Wprowadzenie

7 min

Chociaż produkty oparte na blockchainie są dostępne na rynku już od kilku lat, wielu klientów wciąż ma pewne wątpliwości co do tego, jak działają niektóre mechanizmy łańcucha. Jednym z nich jest Blockchain Wallet, cyfrowy produkt, który zapewnia określone korzyści użytkownikom, którzy chcą przechowywać coiny, takie jak Bitcoin lub Ether, i zarządzać nimi.

pt./wrz/2021
Więcej

Czym jest DeFi? Korzyści i zastosowania zdecentralizowanych finansów

9 min

Jeżeli jesteś na bieżąco ze światową sceną blockchain, prawdopodobnie słyszałeś już o zdecentralizowanych finansach (w skrócie DeFi, od ang. decentralised finance). Jest to zbiorcze określenie dla całego ekosystemu trendów, teorii oraz rozwiązań, które aktualnie pojawiają się na rynkach krypto, fintech i innych.

pt./sie/2021
Więcej