PCA et train / test split


35

J'ai un jeu de données pour lequel j'ai plusieurs jeux d'étiquettes binaires. Pour chaque ensemble d'étiquettes, je forme un classificateur, en l'évaluant par validation croisée. Je souhaite réduire la dimensionnalité à l'aide de l'analyse en composantes principales (ACP). Ma question est:

Est-il possible d'effectuer l'APC une fois pour l'ensemble de données complet , puis d'utiliser le nouvel ensemble de données de dimensionnalité inférieure pour la validation croisée, comme décrit ci-dessus? Ou dois-je effectuer un PCA distinct pour chaque ensemble de formation (ce qui signifierait faire un PCA séparé pour chaque classificateur et pour chaque pli de validation croisée)?

D'une part, la PCA n'utilise pas les étiquettes. D'autre part, il utilise les données de test pour effectuer la transformation, alors je crains que cela ne biaise les résultats.

Je devrais mentionner que, en plus de me faire économiser du travail, effectuer l’ACP une fois sur l’ensemble du jeu de données me permettrait de le visualiser simultanément pour tous les ensembles d’étiquettes. Si j'ai une ACP différente pour chaque jeu d'étiquettes, je devrai visualiser chaque jeu d'étiquettes séparément.


Pour référence future. Voir cette question sur la façon de procéder à la validation croisée avec PCA in R avec caretpackage: PCA et validation croisée dans k-fold dans Caret .
amibe dit de réintégrer Monica le


Réponses:


34

Pour mesurer l'erreur de généralisation, vous devez effectuer cette dernière: un PCA distinct pour chaque ensemble de formation (ce qui signifierait faire un PCA séparé pour chaque classificateur et pour chaque pli de CV).

Vous appliquez ensuite la même transformation au jeu de tests: vous ne faites pas de PCA distinct sur le jeu de tests! Vous soustrayez la moyenne (et divisez si nécessaire par l'écart type) de l'ensemble d'apprentissage, comme expliqué ci-après: Centrer à zéro l'ensemble d'analyse après l'APC sur l'ensemble d'apprentissage . Ensuite, vous projetez les données sur les PC du kit de formation.


  • Vous devrez définir un critère automatique pour le nombre de PC à utiliser.
    Comme il ne s’agit que d’une première étape de réduction des données avant la classification «réelle», l’utilisation d’un nombre trop réduit de PC ne nuira probablement pas à la performance. Si vous vous attendez à savoir combien de PC serait bon de l'expérience, vous pouvez peut-être simplement l'utiliser.

  • Vous pouvez également vérifier par la suite si la reconstitution de la PCA pour chaque modèle de substitution était nécessaire (répétition de l'analyse avec un seul modèle de PCA). Je pense que le résultat de ce test mérite d'être signalé.

  • Une fois, j’ai mesuré le biais consistant à ne pas répéter l’ACP, et j’ai trouvé que, avec mes données de classification spectroscopique, je ne détectais que la moitié du taux d’erreur de généralisation lorsque je ne refaisais pas l’ACP pour chaque modèle de substitution.

Cela dit, vous pouvez créer un modèle PCA supplémentaire de l’ensemble des données à des fins descriptives (par exemple, visualisation). Assurez-vous simplement de séparer les deux approches.


J'ai toujours du mal à comprendre comment une ACP initiale sur l'ensemble de données biaiserait les résultats sans voir les étiquettes de classe.

Mais il voit les données. Et si la variance entre les classes est grande comparée à la variance au sein de la classe, la variance entre les classes influencera la projection de la CPA. En général, l'étape PCA est terminée car vous devez stabiliser la classification. C'est, dans une situation où des cas supplémentaires font influencer le modèle.

Si la variance entre les classes est faible, ce biais ne sera pas très important, mais dans ce cas, l'APC ne pourra pas aider à la classification: la projection de l'APC ne peut alors empêcher de mettre l'accent sur la séparation entre les classes.


Merci, c’est exactement ce que je pensais et c’est bien de l’entendre de la part d’une source indépendante. J'ai toujours du mal à comprendre comment une ACP initiale sur l'ensemble de données biaiserait les résultats sans voir les étiquettes de classe.
Bitwise

@Bitwise: s'il vous plaît voir mon édition
cbeleites soutient Monica

Bonjour @ cbeleites, je souhaite faire de ce fil un fil "canonique" pour les questions relatives à la PCA et au fractionnement de train / test (il y en a beaucoup!) Et de les marquer comme des doublons. J'ai pris la liberté d'ajouter une phrase à votre réponse qui pourrait dissiper un malentendu qui survient souvent dans les questions dupliquées. J'espère que vous êtes satisfait de mon montage, mais veuillez vérifier! +1, btw.
amibe dit de réintégrer Monica

@ amoeba, merci beaucoup. Oui, c'est un point important que vous avez ajouté. Merci beaucoup pour le travail que vous avez mis au nettoyage de la collection de questions.
cbeleites soutient Monica

1
@FelipeAlmeida: oui
cbeleites soutient Monica le

2

La réponse à cette question dépend de votre conception expérimentale. La PCA peut être réalisée sur l'ensemble des données tant que vous n'avez pas besoin de construire votre modèle avant de connaître les données que vous essayez de prédire. Si vous avez un ensemble de données dans lequel vous avez plusieurs échantillons dont certains sont connus et d'autres inconnus et que vous souhaitez prédire les inconnus, y compris les inconnus dans la PCA vous donneront une vision plus riche de la diversité des données et peuvent aider à améliorer les performances. du modèle. Puisque PCA n'est pas supervisé, il ne s'agit pas d'un "pic", car vous pouvez faire la même chose avec les échantillons inconnus et avec les échantillons connus.

Si, par contre, vous avez un ensemble de données dans lequel vous devez construire le modèle maintenant et que, à un moment donné, vous obtiendrez de nouveaux échantillons que vous devez prévoir à l'aide de ce modèle préconfiguré, vous devez effectuer une analyse PCA séparée dans chaque répertoire. pour être sûr qu'il va généraliser. Puisque dans ce cas, nous ne saurons pas à quoi les nouvelles fonctionnalités pourraient ressembler et nous ne pouvons pas reconstruire le modèle pour prendre en compte les nouvelles fonctionnalités, effectuer PCA sur les données de test créerait un "pic". Dans ce cas, les caractéristiques et les résultats des échantillons inconnus ne sont pas disponibles lorsque le modèle serait utilisé dans la pratique. Ils ne devraient donc pas être disponibles lors de la formation du modèle.


0

Est-ce que le dernier, PCA sur la formation a réglé chaque fois

En PCA, nous apprenons la matrice réduite: U qui nous aide à obtenir la projectionZ_train = U x X_train

Au moment du test, nous utilisons le même U appris lors de la phase d’entraînement, puis nous calculons la projectionZ_test = U x X_test

Nous projetons donc l’ensemble de tests sur l’espace de fonctionnalités réduites obtenu pendant la formation.

L’hypothèse sous-jacente est que l’essai et l’entraînement doivent provenir de la même distribution, ce qui explique la méthode ci-dessus.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.