Je suis Kubota de NTT Docomo. C'est la deuxième apparition.
Connaissez-vous la technologie appelée Item2Vec? Item2Vec est une technologie qui applique Word2Vec, qui acquiert des expressions distribuées de mots à partir de phrases, au système de recommandation. Plus précisément, lors de l'examen des recommandations sur les sites EC, nous avons acquis des expressions distribuées d'articles en utilisant des mots Word2Vec comme produits et des phrases comme un ensemble d'articles évalués par l'utilisateur et recommandés en fonction du degré de similitude entre les articles. J'ai envie de le faire.
Comme il est facile à mettre en œuvre, il y a de nombreux articles que j'ai essayés relativement, mais il y a quelques points à prendre en compte lorsque l'on considère réellement l'application au système de recommandation.
Il existe une bibliothèque d'analyse de sujets appelée gensim, qui facilite l'implémentation de Item2Vec. Vous pouvez entraîner le modèle en saisissant un ensemble d'éléments évalués par l'utilisateur sur une ligne et un fichier texte (cette fois, item_buskets.txt) séparés par des espaces pour chaque élément, comme illustré dans l'exemple suivant. Les paramètres seront expliqués plus tard. C'est vraiment simple!
from gensim.models import word2vec
sentences = word2vec.LineSentence('item_buskets.txt')
model = word2vec.Word2Vec(sentences)
Vous pouvez facilement implémenter Item2Vec en utilisant gensim, une bibliothèque d'analyse de sujets. Cependant, comme gensim a été créé à l'origine avec l'application au traitement du langage naturel à l'esprit, il est nécessaire d'apporter des modifications en fonction du paramètre de problème lors de son application à un système de recommandation avec un paramètre de problème différent.
Différences de jeu de données Le corpus géré par Word2Vec étant une phrase, il s'agit d'une structure de données restreinte en tant que phrase telle que la grammaire, tandis que l'ensemble d'articles tel que l'historique des achats du commerce électronique géré par Item2Vec est défini par le comportement de l'utilisateur et la nature de l'article. Structure de données. Par conséquent, la nature de l'ensemble de données peut être différente.
Différences dans les champs applicables Le traitement du langage naturel, qui est le domaine d'application de Word2Vec, et le système de recommandation, qui est le domaine d'application de Item2Vec, sont différents en premier lieu. Dans le traitement du langage naturel, l'obtention d'une représentation distribuée précise des mots fréquemment utilisés qui apparaissent dans diverses phrases peut indirectement affecter la précision, mais elle ne doit pas être définitive. D'un autre côté, dans le système de recommandation, l'acquisition d'une représentation distribuée précise des produits achetés par différents utilisateurs est décisivement efficace pour augmenter le taux de conversion que le système de recommandation souhaite atteindre.
À partir de ces différences, on suppose que les hyperparamètres de Word2Vec et Item2Vec seront différents.
Un article qui a testé cette hypothèse a été Word2vec appliqué à la recommandation: Hyperparameters Matter rapporté à recsys 2018. Les paramètres expérimentaux et les résultats d'évaluation suivants sont extraits de cet article.
La distribution est assez caractéristique selon l'ensemble de données. 30 Ensemble de données musical qui sont les données de last.fm et de données Deezer qui sont les données de Deezer Est un système de streaming musical, et il y a une différence considérable entre les chansons populaires et les chansons impopulaires. Il existe également une différence de popularité et d'impopularité en ce qui concerne les ensembles de données Click-Stream. D'autre part, le jeu de données E-commerce a une courbe plus douce que les deux précédents.
Architecture J'utilise Skip-gramme avec échantillonnage négatif (SGNS).
Configuration du problème Le problème est défini pour prédire l'action suivante à partir de l'historique des actions passées. Lors de l'entraînement réel du modèle, le modèle SGNS est entraîné jusqu'au $ (n-1) $ th, et le $ n $ th est prédit et évalué.
Indice d'évaluation (Hit Ratio @ K (HR @ K)) Il s'agit d'un index qui crée une liste de K éléments par utilisateur, définit 1 si l'élément $ n $ th est inclus, 0 s'il n'est pas inclus et divise leur somme par le nombre d'utilisateurs. Le plus grand K, le plus grand HR.
Indice d'évaluation (gain cumulé actualisé normalisé @ K (NDCG @ K)) NDCG est un indice d'évaluation du classement, et c'est un index pour évaluer dans quel ordre la prédiction de l'élément $ n $ th a été réellement atteinte avec les K éléments présentés. Plus la valeur est élevée, meilleur est le classement.
NDCG@K = \left\{
\begin{array}{ll}
\frac{1}{\log_{2} (j+1)} & (\text{if} \ j^{th} \ \text{predicted item is correct}) \\
0 & (\text{otherwise})
\end{array}
\right.
Dans l'article ci-dessus, les paramètres suivants sont recherchés et évalués.
Paramètres | Options correspondantes dans Word2Vec de gensim |
---|---|
window size $ L $ | window |
epochs $ n $ | iter |
sub-sampling parameter $ t $ | sample |
negative sampling distribution parameter $ \alpha $ | ns_exponent |
embedding size | size |
the number of negative samples | negative |
learning rate | alpha, min_alpha |
Probablement pas très familier, donc je pense que c'est $ t $ et $ \ alpha $. Le paramètre de sous-échantillonnage $ t $ est un paramètre lié au sous-échantillonnage des mots à haute fréquence. Dans le traitement du langage naturel, les mots à haute fréquence "a" et "le" sont sous-échantillonnés parce qu'ils n'ont pas beaucoup d'informations par rapport aux mots à basse fréquence. Dans la définition du problème du système de recommandation, les éléments populaires qui sont des mots fréquemment utilisés devraient avoir un effet considérable sur la précision du système de recommandation, il est donc compréhensible que l'influence des paramètres soit probablement élevée.
Ensuite, le paramètre de distribution d'échantillonnage négatif $ \ alpha $ est un paramètre qui modifie la forme de la distribution à échantillonner négativement. La valeur par défaut pour gensim est 0,75. $ \ Alpha = 1 $ entraîne un échantillonnage basé sur la fréquence des mots, $ \ alpha = 0 $ entraîne un échantillonnage aléatoire et les valeurs négatives facilitent l'échantillonnage des mots peu fréquents.
Dans l'article, il semble que les paramètres indiqués dans le tableau aient été étudiés, mais il semble que les performances n'ont pas été significativement affectées sauf pour les quatre paramètres en gras, et une évaluation détaillée est faite pour les quatre paramètres.
La figure ci-dessous montre les résultats de l'évaluation de l'article. Si vous regardez uniquement Item2Vec (SGNS prêt à l'emploi dans le tableau) implémenté avec les paramètres par défaut de gensim et Item2Vec (SGNS entièrement optimisé dans le tableau) avec les quatre paramètres comme paramètres optimaux, je pense que c'est correct pour le moment.
La performance des jeux de données musicaux (30 jeux de données Music et jeu de données Deezer), qui présentaient une grande différence entre les éléments populaires et les éléments impopulaires, est environ deux fois la valeur par défaut! L'ensemble de données Click-Stream est environ 10 fois plus précis, ce qui est incroyable.
L'article montre la relation entre la distribution et la précision de $ \ alpha $ (ns_exponent pour gensim), qui est un paramètre de la distribution d'échantillonnage négative dans un ensemble de données 30 Music. Vous pouvez voir que le paramètre par défaut du gensim, 0,75, n'est pas le paramètre optimal. D'ailleurs, sur la base des résultats de cet article, ns_exponent, qui correspond à $ \ alpha $, a été ajouté comme option de gensim.
C'était une introduction d'un article qui tentait de définir des hyper paramètres en fonction du problème. Étant donné que ○○ Vec est assez populaire, il peut être intéressant de rechercher une optimisation avec quels paramètres.
Recommended Posts