0 votes

Ai: Déterminer quels tests exécuter pour obtenir les données les plus utiles

Ceci est pour http://cssfingerprint.com

J'ai un système (voir la page à propos sur le site pour plus de détails) où :

  • J'ai besoin de produire une liste classée, avec des confiances, des catégories qui correspondent à un vecteur de caractéristiques particulier
  • les vecteurs de caractéristiques binaires sont une liste d'identifiants de site et que cette session a détecté un clic
  • les vecteurs de caractéristiques sont, pour une catégorisation donnée, quelque peu bruyants (les sites sortiront de l'historique, et les gens visiteront des sites qu'ils ne visitent pas normalement)
  • les catégories sont un ensemble important, non fermé (identifiants d'utilisateur)
  • mon espace de caractéristiques total est d'environ 50 millions d'éléments (URL)
  • pour un test donné, je ne peux interroger qu'environ 0,2% de cet espace
  • je ne peux prendre la décision de quoi interroger que sur la base des résultats jusqu'à présent, environ 10 à 30 fois, et je dois le faire en moins de 100ms (bien que je puisse prendre beaucoup plus de temps pour le post-traitement, l'agrégation pertinente, etc.)
  • obtenir le classement probabiliste de l'IA des catégories sur la base des résultats jusqu'à présent est quelque peu coûteux ; idéalement, la décision dépendra principalement de quelques requêtes sql bon marché
  • J'ai des données d'entraînement qui peuvent affirmer que deux vecteurs de caractéristiques sont de la même catégorie mais pas qu'ils sont différents (les gens oublient parfois leurs codes et utilisent de nouveaux, créant ainsi un nouvel identifiant d'utilisateur)

J'ai besoin d'un algorithme pour déterminer quelles caractéristiques (sites) sont les plus susceptibles d'avoir un retour sur investissement élevé à interroger (c'est-à-dire pour mieux discriminer entre des catégories plausibles jusqu'à présent [utilisateurs], et pour augmenter la certitude que c'est n'importe laquelle).

Cela doit prendre en compte l'exploitation (test basé sur les données de test précédentes) et l'exploration (tester des choses qui n'ont pas été suffisamment testées pour savoir comment elles se comportent).

Il y a une autre question qui traite du classement a priori ; celui-ci concerne spécifiquement le classement a posteriori basé sur les résultats recueillis jusqu'à présent.

À l'heure actuelle, j'ai assez peu de données pour tester tout ce que quiconque a jamais eu un clic, mais éventuellement ce ne sera plus le cas, à ce moment-là, ce problème devra être résolu.

J'imagine que c'est un problème assez courant en IA - avoir une heuristique bon marché pour des requêtes coûteuses à faire - mais cela n'a pas été abordé dans mon cours d'IA, donc je ne sais pas vraiment s'il y a une réponse standard. Ainsi, une lecture pertinente qui n'est pas trop mathématique serait utile, ainsi que des suggestions pour des algorithmes particuliers.

Quelle est la meilleure façon d'aborder ce problème ?

0voto

Don Reba Points 6642

Si vous ne savez rien sur les fonctionnalités que vous n'avez pas échantillonnées, alors vous avez peu d'éléments pour décider si vous devez explorer ou exploiter vos données. Si vous pouvez exprimer votre ROI sous la forme d'un seul chiffre après chaque requête, alors il existe un moyen optimal de faire ce choix en suivant les bornes de confiance supérieures. Voir l'article Analyse en temps fini du problème du bandit manchot multi-armes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X