Comment gérer les facteurs aux niveaux rares en validation croisée?

9

Supposons que dans une analyse de régression dans R, j'ai une variable indépendante de type de facteur avec 3 niveaux dans mon jeu de données de train. Mais dans l'ensemble de données de test, la même variable de facteur a 5 niveaux. Par conséquent, je ne peux pas prédire les valeurs de réponse pour l'ensemble de données de test. Que faut-il faire dans ce cas?

JRK
la source
1
Il ne s'agit pas principalement de savoir comment utiliser R. & s'il ne s'agissait que de savoir comment utiliser R, ce serait hors sujet ici. Il y a cependant une bonne question statistique.
gung - Rétablir Monica
1
Pouvez-vous ajouter quelques exemples de données? Il sera plus facile de traiter de cette façon.
Andrew Owens

Réponses:

8

À première vue, cela signifie qu'au moins votre ensemble de formation n'est pas représentatif des données d'application. La question de savoir si l'ensemble de tests est représentatif est une question que vous devriez considérer à mon humble avis très attentivement. Dans ce contexte, il est également important de savoir si ces classes manquantes sont un problème de l'ensemble de formation particulier étant trop petit, ou si c'est une caractéristique générale du problème / tâche / application. C'est-à-dire, si de nouvelles classes qui n'ont jamais été rencontrées auparavant apparaîtront tout le temps.

En principe, je vois deux possibilités pour faire face à cette situation:

  • Dites que l'ensemble de formation n'est certainement pas représentatif et demandez plus de données, en particulier pour les données des classes manquantes. Cela a du sens si vous arrivez à la conclusion que le problème réside dans l'ensemble de formation particulier, et non dans les caractéristiques générales de l'application.

  • Dans tous les cas, sachant que les données d'entraînement manquent les cours, j'envisagerais d'utiliser un classificateur à une classe. C'est-à-dire un classificateur qui traite chaque classe indépendamment de toute autre classe possible. Idéalement, un classificateur à une classe devrait renvoyer une "classe inconnue" pour les cas de test des classes qui n'ont pas été disponibles pour la formation. Pour les classificateurs à une classe, tester ce «rejet» des cas appartenant à des classes vraiment inconnues est en fait logique.


modifier le commentaire de wrt @ gung: Je suppose que la séparation train / test est corrigée pour une bonne raison, espérons-le .

cbeleites mécontents de SX
la source
Serait-il judicieux de partitionner vos données w / i à chaque niveau, puis de les combiner dans les plis? Par exemple, X1 a 2 niveaux avec 90 et 10 données; vous pourriez partitionner les 10 en 10 singletons et les 90 en 10 ensembles de 9, puis vous combineriez un ensemble de chacun pour former chacun de vos 10 plis pour CV. C'est ce qui m'est venu à l'esprit lorsque j'ai lu le Q, mais il ne semble pas que vous suggériez cela. Est-ce une solution valable? (Je pourrais demander un nouveau Q, si vous préférez.)
gung - Réintégrer Monica
@gung: Je pense que c'est logiquement une question distincte, oui. Je vois également une énorme différence principale entre l'ensemble de formation ne couvrant pas toutes les classes et la garantie que toutes les classes d'un petit ensemble de données donné apparaissent dans les divisions de formation et de test (= stratification).
cbeleites mécontents de SX