Jak obliczyć wynik i przewidzieć wynik po N dniach
Załóżmy, że mam zbiór danych medycznych / zbiór danych EHR, który ma charakter retrospektywny i ma charakter podłużny. Oznacza to, że jedna osoba wykonuje wiele pomiarów w wielu punktach czasowych (w przeszłości). Opublikowałem tutaj, ale nie mogłem uzyskać żadnej odpowiedzi. Więc zamieszczam to tutaj
Ten zbiór danych zawiera informacje o diagnozie pacjentów, flagach śmiertelności, laboratoriach, przyjęciach i zażywanych lekach itp.
Teraz, jeśli chciałbym znaleźć predyktory, które mogą wpływać na śmiertelność, mogę użyć regresji logistycznej (czy pacjent umrze, czy nie).
Ale moim celem jest dowiedzieć się, jakie predyktory mogą pomóc mi przewidzieć, czy dana osoba umrze w ciągu najbliższych 30 dni lub następnych 240 dni , jak mogę to zrobić za pomocą technik ML / analizy danych?
Ponadto chciałbym również obliczyć wynik, który może wskazać prawdopodobieństwo, że ta osoba umrze w ciągu najbliższych 30 dni? Jak mogę obliczyć wyniki? Jakieś linki do samouczków na temat tego, jak jest obliczany ten wynik ?, proszę?
Czy możesz mi powiedzieć, jakie są różne techniki analityczne, których mogę użyć, aby rozwiązać ten problem, i różne podejścia do obliczania wyniku?
Chciałbym przeczytać i spróbować rozwiązać takie problemy
Odpowiedzi
Można to postrzegać jako „prosty” problem klasyfikacji binarnej. Chodzi mi o to, że typ problemu jest „prosty”, samo zadanie z pewnością nie jest… I nie zamierzam nawet wspominać o poważnych kwestiach etycznych związanych z jego potencjalnymi zastosowaniami!
Po pierwsze, musisz oczywiście mieć wpis w swoich danych na wypadek śmierci pacjenta. Nie jest dla mnie całkowicie jasne, czy masz te informacje? Ważne jest, aby dane o śmierci pacjenta były zgłaszane, w przeciwnym razie nie można rozróżnić tych dwóch klas.
Więc projekt mógłby wyglądać tak:
- Instancja reprezentuje pojedynczą historię pacjenta w danym momencie $t$i jest oznaczony jako żywy lub martwy w $t+N$ dni.
- Wymaga to refaktoryzacji danych. Zakładając, że dane obejmują okres od 0 do$T$, możesz wziąć wiele punktów w czasie $t$ z $t<T-N$ (na przykład co miesiąc od 0 do $T-N$). Zauważ, że teoretycznie myślę, że w różnych czasach$t$ dla tego samego pacjenta mogą być użyte w danych, o ile wszystkie instancje konsekwentnie reprezentują ten sam czas trwania, a ich cechy i etykiety są odpowiednio obliczane.
- Projektowanie funkcji jest z pewnością najtrudniejszą częścią: oczywiście cechy muszą mieć wartości dla wszystkich instancji, więc nie można polegać na konkretnych testach, które zostały wykonane tylko na niektórych pacjentach (cóż, można, ale te cechy są stronnicze) ).
- Szczerze mówiąc, wątpię, aby tę część można było wykonać niezawodnie: albo cechy są wykonane ze standardowych, jednorodnych wskaźników, ale wtedy te wskaźniki są prawdopodobnie ogólnie słabymi predyktorami śmierci; lub zawierają specjalistyczne testy diagnostyczne dla niektórych pacjentów, ale wtedy nie są one jednorodne dla wszystkich pacjentów, więc model będzie tendencyjny i prawdopodobnie nadmiernie dopasowany.
Najlepiej byłoby, gdybyś rozdzielił dane treningowe i testowe przed nawet przygotowaniem danych w ten sposób, zazwyczaj wybierając okres czasu na dane treningowe i inny na dane testowe.
Po przygotowaniu danych teoretycznie można zastosować dowolną metodę klasyfikacji binarnej. Oczywiście do przewidywania prawdopodobieństwa można użyć klasyfikatora probabilistycznego, ale może to być mylące, dlatego należy być bardzo ostrożnym: samo prawdopodobieństwo jest prognozą , nie można go interpretować jako rzeczywistych szans pacjenta na śmierć lub nie. Na przykład wiadomo, że Naive Bayes empirycznie zawsze podaje ekstremalne prawdopodobieństwa, tj. Bliskie 0 lub bliskie 1, i dość często jest to całkowicie błędne przewidywanie. Oznacza to, że ogólnie przewidywane prawdopodobieństwo jest tylko przypuszczeniem i nie może być używane do reprezentowania ufności.
[edytuj: przykład]
Powiedzmy, że mamy:
- dane za lata 2000–2005
- N = 1, czyli patrzymy, czy pacjent umrze w następnym roku.
- pojedynczy wskaźnik, na przykład poziom cholesterolu. Oczywiście w rzeczywistości miałbyś wiele innych funkcji.
- za każdym razem $t$ w cechach przedstawiamy „wartość testową” z ostatnich 2 lat do bieżącego roku $t$. Oznacza to, że możemy iterować$t$ od 2002 (2000 + 2) do 2004 (2005-N)
Wyobraźmy sobie następujące dane (dla uproszczenia zakładam, że jednostką czasu jest rok):
patientId birthYear year indicator
1 1987 2000 26
1 1987 2001 34
1 1987 2002 18
1 1987 2003 43
1 1987 2004 31
1 1987 2005 36
2 1953 2000 47
2 1953 2001 67
2 1953 2002 56
2 1953 2003 69
2 1953 2004 - DEATH
3 1969 2000 37
3 1969 2001 31
3 1969 2002 25
3 1969 2003 27
3 1969 2004 15
3 1969 2005 - DEATH
4 1936 2000 41
4 1936 2001 39
4 1936 2002 43
4 1936 2003 43
4 1936 2004 40
4 1936 2005 38
To zostałoby przekształcone w to:
patientId yearT age indicatorT-2 indicatorT-1 indicatorT-0 label
1 2002 15 26 34 18 0
1 2003 16 34 18 43 0
1 2004 17 18 43 31 0
2 2002 49 47 67 56 0
2 2003 50 67 56 69 1
3 2002 33 37 31 25 0
3 2003 34 31 25 27 0
3 2004 35 25 27 15 1
4 2002 66 41 39 43 0
4 2003 67 39 43 43 0
4 2004 68 43 43 40 0
Zwróć uwagę, że napisałem pierwsze dwie kolumny tylko po to, aby pokazać, jak obliczane są dane, te dwie nie są częścią funkcji.
Wyjaśnienie pytań zadawanych przez użytkownika w odpowiedzi na poprawne rozwiązanie podane przez Erwana - rozwiązanie proponuje cofnięcie się w czasie w celu przygotowania danych w szeregu znaczników czasowych.
Będzie wiele punktów w czasie „t”, w których dane wejściowe obejmowałyby różne cechy dotyczące stanu zdrowia pacjenta, leków, raportów itp. Musisz zobaczyć, jak najlepiej można je przekształcić w wektory reprezentacyjne. Etykiety byłyby binarne i wskazywałyby, czy pacjent przeżył po t + N dni, gdzie N może wynosić 30,60,240 itd. Samo „t” można przyjmować tydzień w tydzień lub miesiąc w miesiącu.
Gdy dane zostaną przygotowane w ten sposób, stają się ćwiczeniem klasyfikacji binarnej.
Jedyną dodatkową kwestią, którą można dodać, jest to, że mogą tu znajdować się elementy RNN. Dane szkoleniowe nie są od siebie niezależne i mogą zawierać powtarzające się dane tego samego pacjenta na wielu znacznikach czasowych i być może istnieje możliwość przechwycenia tych informacji w celu lepszego modelowania sytuacji.