J'ai deux jeux de données A et B qui sont exactement les mêmes en termes de nombre de colonnes, de nom de colonnes et de valeurs. La seule différence est l'ordre de ces colonnes. Je forme ensuite le modèle LightGBM sur chacun des deux ensembles de données avec les étapes suivantes
- Divisez chaque ensemble de données en formation et test (utilisez la même graine aléatoire et le même rapport pour A et B)
- Laissez les hyperparamètres comme par défaut
- Définir un état aléatoire comme un nombre fixe (pour la reproduction)
- Réglez le learning_rate à l'aide d'une recherche de grille
- Entraînez un modèle LightGBM sur l'ensemble d'entraînement et testez-le sur l'ensemble d'essai
- Le taux d'apprentissage avec les meilleures performances sur l'ensemble de test sera choisi
Les modèles de sortie sur les deux jeux de données sont très différents, ce qui me fait penser que l'ordre des colonnes affecte les performances de la formation du modèle à l'aide de LightGBM.
Savez-vous pourquoi c'est le cas?
la source
lightgbm
permet à l'utilisateur de définir les graines aléatoires utilisées pour l'échantillonnage des lignes et des colonnes.Bien que l'ordre des données soit sans conséquence en théorie, il est important dans la pratique. Étant donné que vous avez pris des mesures pour garantir la reproductibilité, un ordre différent des données modifiera votre logique de fractionnement des tests de train (sauf si vous savez avec certitude que les rames et les jeux de test dans les deux cas sont exactement les mêmes). Bien que vous ne spécifiiez pas comment vous divisez les données, il est fort possible qu'un certain assortiment de points de données rende la machine plus robuste aux valeurs aberrantes et donc offre de meilleures performances du modèle. Dans le cas où les données de train et d'essai sont les mêmes dans les deux cas, vous devriez probablement voir s'il y a une mesure de semences / reproductibilité (dans n'importe quelle partie de votre code) que vous n'avez pas prise.
la source