Jak obliczyć wynik i przewidzieć wynik po N dniach

Nov 20 2020

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

2 Erwan Nov 21 2020 at 07:43

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.

2 Allohvk Nov 21 2020 at 14:30

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.