Un dossier médical, c'est un mélange de chiffres, de diagnostics et de catégories. Un réseau de neurones classique (un programme qui apprend) s'y perd, car il ne peut pas faire le lien entre le taux d'une protéine (un nombre), le diagnostic (oui/non) et le sous-type de tumeur (une catégorie). Leurs erreurs sont incomparables, comme si un traducteur confondait les centimètres et les kilos. Les auteurs de l'étude ont abandonné les valeurs exactes et ont tout traduit dans le langage de l'ordre. Le programme se demande simplement : chez ce patient, l'indicateur est-il plus élevé ou plus bas que chez son voisin ? Ce classement rend les erreurs comparables.
D'abord, un bloc commun du réseau de neurones passe au crible des centaines de gènes, ne gardant que ceux qui sont importants pour toutes les tâches à la fois. Une astuce particulière (elle met à zéro la contribution des gènes inutiles) élimine le bruit. Ensuite, pour chaque tâche, le réseau de neurones attribue des scores conditionnels et les compare par ordre. La question « le diagnostic est-il correct ? » et « le taux de protéine est-il précis ? » se ramène à une seule : l'ordre entre les patients est-il bien deviné ?
Sur 234 patients atteints d'un cancer du poumon, la précision est passée de 0.951 à 0.968 — sur mille patients, cela représente 17 personnes sauvées d'un faux diagnostic. Parmi les gènes sélectionnés, on trouve non seulement des gènes pulmonaires : E2F1 (auparavant associé au cancer du sein) et Scd1 (métabolisme des graisses). Ainsi, le « traducteur ordinal » trouve un langage commun entre immunité et tumeur.
La règle stricte « plus/moins » a été remplacée par une courbe lisse en forme de S, pour que l'ordinateur apprenne progressivement, sans à-coups. Et l'idée même de comparer des ordres a été proposée dès 1987.
C'est comme un traducteur universel de film de science-fiction, mais au lieu de langues, ce sont des types de données médicales.