J'ai un réseau de neurones mis en place pour prédire quelque chose où la variable de sortie est ordinale. Je décrirai ci-dessous en utilisant trois sorties possibles A <B <C.
Il est assez évident de savoir comment utiliser un réseau de neurones pour produire des données catégorielles: la sortie est juste un softmax de la dernière couche (généralement entièrement connectée), une par catégorie, et la catégorie prédite est celle avec la plus grande valeur de sortie (c'est par défaut dans de nombreux modèles populaires). J'utilise la même configuration pour les valeurs ordinales. Cependant, dans ce cas, les sorties n'ont souvent pas de sens, par exemple les sorties réseau pour A et C sont élevées mais B est faible: ce n'est pas plausible pour les valeurs ordinales.
J'ai une idée pour cela, qui est de calculer la perte en comparant les sorties avec 1 0 0 pour A, 1 1 0 pour B et 1 1 1 pour C. Les seuils exacts peuvent être réglés plus tard en utilisant un autre classificateur (par exemple bayésien ), mais cela semble saisir l'idée essentielle d'un ordre des entrées, sans prescrire d'échelle d'intervalle spécifique.
Quelle est la manière standard de résoudre ce problème? Existe-t-il des recherches ou des références décrivant les avantages et les inconvénients de différentes approches?
Réponses:
Mais certaines personnes ont réussi à inventer un encodage intelligent pour vos classes ordinales (voir cette réponse stackoverflow ). C'est une sorte d'encodage à chaud,
la classe 1 est représentée par [0 0 0 0 ...]
la classe 2 est représentée par [1 0 0 0 ...]
la classe 3 est représentée par [1 1 0 0 ...]
np.sum
Cette stratégie ressemble à l'ensemble de Frank et Hall , et je pense que c'est la première publication de ce genre.
la source