Question

Je suis en train de créer un classificateur dans lequel il y a moins de travail « manuel » pour l'utilisateur. Pour le travail manuel, je veux dire que il n'y aura pas une phase initiale de l'étiquetage manuel d'un ensemble de formation , comme dans l'apprentissage machine (supervisé)

Mon jeu de données est composé par des instances qui sont vraiment différentes par classe. Ce sont des documents dans lesquels il y a des commandes de produits spécifiques pour différents clients. Et chaque client a obtenu son modèle.

Par exemple, je suis arrivé:

[Client A]
Image
Date: xxx  Order: 
Products:
Table

[Client B]
Date: xxx
Order
Image
Products:
table
Image

Maintenant, je fais le classement de faire une simple vérification sur tous les documents, la présence d'une caractéristique spécifiée, qui est identifié manuellement par un utilisateur (par zone et en utilisant la distance d'édition)

Les classes sont vraiment différentes (dans certains cas), et d'essayer un classificateur non supervisé comme un agglomératif cluster les classes sont divisées vraiment bien. Après cela, en utilisant des mesures comme TF / ICF souvent les caractéristiques (dans mon cas j'utiliser tokenizés et texte normalisé comme caractéristiques) qui a obtenu les valeurs plus élevées sont celles qui sont utilisées dans ma classification manuelle.

Les critères que j'utilise pour arrêter le regroupement itération sont différentes (I got configuration différente) comme la distance maximum ou le nombre maximum de grappes.

Après cela, je pense que lorsque les groupes seront créés un utilisateur à la fin étiquettera chaque groupe identifiant la classe par le meilleur TF / ICF (fréquence terme, la fréquence de cluster inverse) fonctionnalités de chaque groupe. Et après que les groupes seront utilisés comme « classificateur ». Je sais que cette approche conduira à pire classement, mais pas un problème.

Le problème est que lorsque deux classes sont vraiment similaires (je suis arrivé dans les classes où la différence est que le code client, par exemple) ils sont vraiment difficiles à séparer.

Toute idée sur la façon aborder ce problème? Et, il y a une façon dont mon algorithme peut savoir s'il y a une « nouvelle classe » dans le flux?

Était-ce utile?

La solution

Si vous avez une bonne quantité de cas pour toutes les classes, vous pouvez essayer d'utiliser une approche basée sur la densité pour le regroupement, avec des algorithmes tels que dbscan.

Si vous pouvez marquer au moins quelques-uns des documents, vous pouvez utiliser l'apprentissage semi-supervisé. Habituellement, lorsque SSL est utilisé pour le regroupement, vous devez spécifier « ne peut pas lier » et contraintes « lien must » pour certaines paires de cas, ce qui est essentiellement l'étiquetage certains cas. Un algorithme qui suit cette approche est HMRF-KMeans (Hidden Markov aléatoire Les champs KMeans).

Autres conseils

Je ne peux pas commenter parce que du manque de réputation. Avez-vous d'utiliser uniquement le « regroupement Ascendante »?

Je pense qu'il vaut mieux K-means pour votre utilisation. Vous pouvez détecter quelques différences avec k-means.

Si besoin d'utiliser le « regroupement Ascendante » vous shoul tweak la mesure de dissemblance.

Licencié sous: CC-BY-SA avec attribution
scroll top