Comment calculer le score et prédire le résultat après N jours

Nov 20 2020

Disons que j'ai un ensemble de données médicales / DSE qui est de nature rétrospective et longitudinale. Cela signifie qu'une personne a plusieurs mesures sur plusieurs points temporels (dans le passé). J'ai posté ici mais je n'ai pas obtenu de réponse. Alors, publiez-le ici

Cet ensemble de données contient des informations sur le diagnostic des patients, l'indicateur de mortalité, les laboratoires, les admissions et les médicaments consommés, etc.

Maintenant, si je souhaite trouver des prédicteurs qui peuvent influencer la mortalité, je peux utiliser la régression logistique (que le patient mourra ou non).

Mais mon objectif est de découvrir quels sont les prédicteurs qui peuvent m'aider à prédire si une personne mourra dans les 30 prochains jours ou les 240 prochains jours , comment puis-je faire cela en utilisant les techniques ML / Data Analysis?

En outre, je voudrais également calculer un score qui peut indiquer la probabilité que cette personne décède dans les 30 prochains jours? Comment puis-je calculer les scores? Des liens de tutoriels sur la façon dont ce score est dérivé?, S'il vous plaît?

Pouvez-vous s'il vous plaît me faire savoir quelles sont les différentes techniques analytiques que je peux utiliser pour résoudre ce problème et les différentes approches pour calculer le score?

J'aimerais lire et essayer de résoudre des problèmes comme celui-ci

Réponses

2 Erwan Nov 21 2020 at 07:43

Cela pourrait être considéré comme un problème de classification binaire «simple». Je veux dire que le type de problème est "simple", la tâche elle-même ne l'est certainement pas ... Et je ne vais même pas évoquer les graves problèmes éthiques liés à ses applications potentielles!

Tout d'abord, vous devez évidemment avoir une entrée dans vos données pour le décès d'un patient. Je ne suis pas tout à fait clair si vous avez ces informations? Il est important que chaque fois qu'un patient est décédé, cela soit signalé dans les données, sinon vous ne pouvez pas distinguer les deux classes.

Ainsi, la conception pourrait être comme ceci:

  • Une instance représente un seul historique patient à la fois $t$, et il est étiqueté comme vivant ou mort à $t+N$ journées.
  • Cela nécessite de refactoriser les données. En supposant que les données couvrent une période de 0 à$T$, vous pouvez prendre plusieurs points dans le temps $t$ avec $t<T-N$ (par exemple tous les mois de 0 à $T-N$). Notez qu'en théorie je pense que des moments différents$t$ pour le même patient peuvent être utilisées dans les données, à condition que toutes les instances représentent systématiquement la même durée et que leurs caractéristiques et étiquettes soient calculées en conséquence.
  • La conception des fonctionnalités est certainement la partie la plus délicate: bien sûr, les fonctionnalités doivent avoir des valeurs pour toutes les instances, vous ne pouvez donc pas vous fier à des tests spécifiques qui ont été effectués uniquement sur certains patients (enfin, vous pouvez, mais il y a un biais pour ces fonctionnalités ).
    • Pour être honnête, je doute que cette partie puisse être effectuée de manière fiable: soit les caractéristiques sont constituées d'indicateurs homogènes standard, mais alors ces indicateurs sont probablement de mauvais prédicteurs de la mort en général; ou ils contiennent des tests de diagnostic spécialisés pour certains patients, mais ils ne sont pas homogènes entre les patients, de sorte que le modèle va être biaisé et susceptible de sur-adapter.

Idéalement, je recommanderais de diviser entre les données d'entraînement et les données de test avant même de préparer les données de cette manière, généralement en choisissant une période pour les données d'entraînement et une autre pour les données de test.

Une fois les données préparées, en théorie toute méthode de classification binaire peut être appliquée. Bien sûr, un classificateur probabiliste peut être utilisé pour prédire une probabilité, mais cela peut être trompeur alors soyez très prudent: la probabilité elle-même est une prédiction , elle ne peut pas être interprétée comme les vraies chances du patient de mourir ou non. Par exemple, Naive Bayes est connu pour donner empiriquement toujours des probabilités extrêmes, c'est-à-dire proches de 0 ou proches de 1, et bien souvent il est complètement faux dans sa prédiction. Cela signifie qu'en général, la probabilité prédite n'est qu'une estimation, elle ne peut pas être utilisée pour représenter la confiance.


[modifier: exemple]

Disons que nous avons:

  • données pour les années 2000 à 2005
  • N = 1, c'est-à-dire que nous regardons si un patient décède l'année prochaine.
  • un seul indicateur, par exemple le taux de cholestérol. Bien sûr, en réalité, vous auriez de nombreuses autres fonctionnalités.
  • pour chaque fois $t$ dans les fonctionnalités, nous représentons la "valeur de test" des 2 dernières années à l'année en cours $t$. Cela signifie que nous pouvons itérer$t$ de 2002 (2000 + 2) à 2004 (2005-N)

Imaginons les données suivantes (pour simplifier, je suppose que l'unité de temps est l'année):

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

Cela se transformerait en ceci:

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

Notez que j'ai écrit les deux premières colonnes uniquement pour montrer comment les données sont calculées, ces deux ne font pas partie des fonctionnalités.

2 Allohvk Nov 21 2020 at 14:30

Pour clarifier les questions soulevées par l'utilisateur en réponse à la bonne solution donnée par Erwan - la solution propose de remonter dans le temps pour préparer les données à travers une série d'horodatages.

Il y aura plusieurs moments dans le temps «t» où l'entrée sera toutes les différentes caractéristiques sur la santé des patients, les médicaments, les rapports, etc. vous devez voir comment ils peuvent être convertis au mieux en vecteurs de représentation. Les étiquettes seraient un binaire et indiqueraient si le patient a vécu après t + N jours..où N peut être 30,60,240 etc. «t» lui-même peut être pris semaine sur semaine ou mois sur mois.

Une fois que les données sont préparées de cette manière, elles deviennent un exercice de classification binaire.

La seule considération supplémentaire qui peut être ajoutée est - il pourrait y avoir des éléments de RNN ici. Les données d'entraînement ne sont pas indépendantes les unes des autres et peuvent contenir des données récurrentes du même patient sur plusieurs horodatages et il est peut-être possible de capturer ces informations pour mieux modéliser la situation.