0

J'ai une question concernant les forêts aléatoires. Imaginez que j'ai des données sur les utilisateurs interagissant avec des éléments. Le nombre d'éléments est important, environ 10 000. Mon résultat de la forêt aléatoire doit être les éléments avec lesquels l'utilisateur est susceptible d'interagir (comme un système de recommandation). Pour tout utilisateur, je souhaite utiliser une fonctionnalité décrivant les éléments avec lesquels l'utilisateur a interagi dans le passé. Toutefois, le mappage de la caractéristique de produit catégorique comme un codage à chaud unique semble très inefficace en termes de mémoire car un utilisateur n'interagit pas plus de quelques centaines d'éléments au maximum, et parfois aussi peu que 5.Variables catégorielles avec de grandes quantités de catégories dans XGBoost/CatBoost

Comment allez-vous? à propos de la construction d'une forêt aléatoire lorsque l'une des entités en entrée est une variable catégorique avec ~ 10 000 valeurs possibles et la sortie est une variable catégorique avec ~ 10 000 valeurs possibles? Devrais-je utiliser CatBoost avec les fonctionnalités aussi catégoriques? Ou devrais-je utiliser un codage à chaud unique, et si oui, pensez-vous que XGBoost ou CatBoost fait mieux?

+0

Cela pourrait être mieux de demander à https://datascience.stackexchange.com/ - il semble un peu plus théorique que sur le code? – josh

+0

Okay va essayer là à la place, merci –

Répondre

0

En supposant que vous ayez une expertise suffisante du domaine, vous pouvez créer une nouvelle colonne catégorielle à partir d'une colonne existante. ex: - si vous colonne présente des valeurs ci-dessous

A,B,C,D,E,F,G,H 

si vous savez que A, B, C sont D similaires, E, F sont semblables et G, H sont similaires votre nouvelle colonne serait

Z,Z,Z,Y,Y,Y,X,X. 

Dans votre modèle de forêt aléatoire, vous devez supprimer la colonne précédente et inclure uniquement cette nouvelle colonne. En transformant vos fonctionnalités, vous perdriez l'explicabilité de votre mode.

0

XGBoost ne prend pas en charge les fonctionnalités catégorielles directement, vous devez effectuer le prétraitement pour l'utiliser avec catfeatures. Par exemple, vous pouvez effectuer un codage à chaud unique. L'encodage à chaud unique fonctionne généralement bien s'il existe des valeurs fréquentes de votre fonctionnalité chat.

CatBoost prend en charge les fonctions catégorielles - à la fois, le codage à chaud unique et le calcul de statistiques différentes sur les entités catégorielles. Pour utiliser le codage à chaud, vous devez l'activer avec le paramètre one_hot_max_size. Par défaut, les statistiques sont calculées. Les statistiques fonctionnent généralement mieux pour les entités catégorielles avec de nombreuses valeurs.