2010-03-11 11 views
0

Ceci est pour http://cssfingerprint.comai: Déterminer les tests à exécuter pour obtenir des données les plus utiles

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

  • J'ai besoin de sortir un classement liste, les documents confidentiels, des catégories qui correspondent à une caractéristique particulière vecteur
  • les vecteurs de caractéristiques binaires sont une liste de sites ID & si cette session a détecté un coup
  • vecteurs de caractéristiques sont, pour une catégorisation donnée, un peu pas ISY (sites se décomposeront sur l'histoire, et les gens vont visiter des sites qu'ils ne visitent pas normalement)
  • catégories sont un grand ensemble non fermé (ID utilisateur)
  • mon espace caractéristique total est d'environ 50 millions d'articles (URL)
  • pour un test donné, je peux seulement interroger env. 0,2% de cet espace
  • Je ne peux que prendre la décision de ce pour interroger, basé sur les résultats jusqu'à présent, ~ 10-30 fois, et doit le faire en < ~ 100ms (bien que je puisse prendre beaucoup plus de temps à faire post-traitement, agrégation pertinente, etc.)
  • obtenir le classement des catégories de l'IA en fonction des résultats jusqu'à maintenant est légèrement coûteux; Idéalement, la décision dépendra principalement de quelques requêtes sql bon marché
  • J'ai des données d'apprentissage qui peuvent dire de façon autoritaire que deux vecteurs caractéristiques sont de la même catégorie mais pas qu'ils sont différents (les gens oublient parfois leurs codes et en utilisent de nouveaux, faire un nouvel ID utilisateur)

je besoin d'un algorithme pour déterminer quelles sont les caractéristiques (sites) sont plus susceptibles d'avoir un retour sur investissement élevé pour interroger (c.-à-mieux discriminer entre les catégories possibles si lointain [utilisateurs], et pour augmenter la certitude que c'est un donné). Cela doit prendre en compte l'exploitation de l'équilibre (test basé sur des données de test antérieures) et l'exploration (tester des éléments qui n'ont pas été suffisamment testés pour savoir comment ils fonctionnent). Il y a another question qui traite du classement a priori; celui-ci est spécifiquement sur a posteriori classement basé sur les résultats recueillis jusqu'à présent.

En ce moment, j'ai assez peu de données que je peux toujours tester tout que tout le monde a déjà eu un succès, mais finalement ce ne sera pas le cas, à quel point ce problème devra être résolu. J'imagine que c'est un problème assez standard dans l'IA - avoir une heuristique bon marché pour ce que les requêtes coûteuses à faire - mais il n'a pas été couvert dans ma classe AI, donc je ne sais pas vraiment s'il y a une réponse standard . Donc, une lecture pertinente qui n'est pas trop lourde en mathématiques serait utile, ainsi que des suggestions pour des algorithmes particuliers.

Quelle est une bonne façon d'aborder ce problème?

Répondre

0

Si vous ne connaissez rien aux fonctionnalités que vous n'avez pas encore échantillonnées, vous n'avez pas grand-chose à faire lorsque vous décidez d'explorer ou d'exploiter vos données. Si vous pouvez exprimer votre retour sur investissement en tant que nombre unique après chaque requête, il existe un moyen optimal de faire ce choix en gardant une trace des limites de confiance supérieures.Voir l'article Analyse en temps fini du problème de bandit multi-armée.