Comment calculer le score et prédire le résultat après N jours
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
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.
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.