Algorithme d'apprentissage automatique pour le classement

10

J'ai un ensemble d'éléments que je peux décrire selon caractéristiques. Donc:Xn

Xje:{cje1,cje2,,cjen}XjeX

où est l'évaluation (numérique) de l'élément selon les caractéristiques . Ainsi, mes éléments peuvent être considérés comme des points dans un espace à n dimensions.cjejjejn

Selon mes lectures, il existe des algorithmes comme le "Bayes Classifier" qui peuvent me fournir un type de réponse "oui" ou "non" sur n'importe quel élément de mon ensemble, à condition que j'utilise un "ensemble d'entraînement" composé de éléments de mon ensemble, et le résultat attendu de l'algorithme. Sur la base de ces données, l'algorithme devrait pouvoir prendre tout autre élément, ne faisant pas partie de l'ensemble de formation, et fournir une réponse «oui» ou «non» en fonction de ce qu'il a appris grâce à l'ensemble de formation. C'est très bien si vous avez une idée de ce que vous attendez (ensemble de formation) mais que vous n'êtes pas sûr des règles spécifiques qui aboutissent à ce résultat.

Ce que je voudrais faire avec mes données, ce n'est pas obtenir un type de réponse «oui» ou «non», mais je voudrais introduire un classement dans les éléments. Certains d'entre eux sont «meilleurs» que d'autres. Tout comme pour le filtre Bayes, j'ai une idée générique de ce que j'attends. Je pourrais ainsi générer un «classement d'entraînement» tiré d'un sous-ensemble de mes éléments, que j'alimenterais au MLA. Sur la base de cette formation, il serait en mesure de classer l'ensemble de mon ensemble.

Pour ce faire, je vois deux approches:

  1. Chaque élément se verrait attribuer un score par le MLA, puis classerait les éléments en fonction du score.
  2. Le MLA pourrait prendre deux éléments Xje et Xj et déterminer lequel est le meilleur (comparaisons par paires). Utilisez quicksort en utilisant cette opération de comparaison.

Remarque: basée sur un score, la fonction par paire est triviale à implémenter, et basée sur une fonction par paire, il est trivial de générer un score, donc ce ne sont que deux approches pour donner les mêmes résultats.

Existe-t-il des exemples de MLA qui peuvent fournir une fonction de notation ou une fonction de comparaison par paire?

EDIT: Afin d'ajouter plus de contexte: actuellement mes articles sont classés selon un algorithme qui génère un score (nombre réel) pour chaque article en faisant des calculs sur le . Bien que le classement généré soit tout à fait correct, je dois souvent modifier l'algorithme pour le modifier d'une manière ou d'une autre, car je peux clairement voir certains éléments qui ne sont pas classés selon ce à quoi je m'attendais.cjej

Donc actuellement mon processus de conception est:

  1. Ayez une idée de ce que serait un classement parfait
  2. Essayez de dériver (manuellement) un algorithme qui classerait les éléments comme ça
  3. Observez les résultats
  4. Adapter l'algorithme

J'ai donc pensé aux MLA car le point de départ de mon processus est ce qui pourrait être utilisé comme données de formation. Je commencerais probablement par prendre le rang actuel, échanger des articles selon mes besoins et les nourrir.

chl
la source

Réponses:

3

De nombreux algorithmes de classification font déjà exactement ce que vous recherchez, mais présentent souvent leurs réponses aux utilisateurs sous la forme d'un jugement binaire (ou n-way). Par exemple, SVMLight est une implémentation de l'algorithme de classification des machines à vecteurs de support; les gens l'utilisent couramment pour porter des jugements binaires sur certains ensembles de données. Cependant, ce qui se passe sous le capot, c'est que l'algorithme attribue des jugements de confiance signés aux données. Ceux-ci sont liés entre -1,0 et 1,0 et sont ce que vous devez utiliser pour classer vos données!

Kyle.
la source
2

Il semble que vous pouvez utiliser une analyse de régression . De plus, vous devrez probablement attribuer des scores (nombres réels) aux éléments de votre ensemble d'entraînement, si vous ne les avez pas. Bien que vous puissiez simplement utiliser le rang comme valeur cible, cela vous fera obtenir un mauvais modèle si vous n'avez qu'un petit ensemble d'échantillons d'entraînement.

Peter H
la source
0

Je pense que vous attendez trop des algorithmes d'apprentissage automatique. Un ordinateur ne peut pas décider si l'élément 1 est meilleur que l'élément 2 seul. Ce qu'un algorithme d'apprentissage automatique peut faire, c'est que si vous lui donnez quelques exemples où vous avez évalué un élément 1 comme meilleur que l'élément 2, alors il peut apprendre à classer les éléments [1]. Mais vous avez toujours besoin de données de formation dans lesquelles vous fournissez des exemples d'articles et des informations indiquant si l'élément 1 est supérieur à l'élément 2 pour tous les éléments des données de formation.

[1] http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html

TenaliRaman
la source
Merci beaucoup pour le lien. Et je comprends parfaitement que je devrai fournir un ensemble de formation à l'algorithme afin qu'il puisse classer les éléments suivants.