2017-01-29 7 views
3

J'ai plusieurs milliers d'échantillons, qui sont déjà étiquetés comme "A" ou "Non A". Chaque échantillon a été assigné à des catégories [0-n]. Ce que j'essaye de réaliser est de trouver quelles catégories sont appropriées pour étiqueter un nouvel échantillon comme "A" ou "pas A". Mon approche consiste à scinder les échantillons en deux ensembles, l'un contenant tous les échantillons étiquetés «A» et l'autre contenant «Non A».Estimation d'étiquette (apprentissage supervisé)

Maintenant, je crée un ensemble de toutes les catégories différentes et compte combien de fois chaque catégorie se produit dans le "A" ensemble et le "Non A" ensemble.

Ensuite, je calcule un taux d'erreur basé sur les occurrences dans les deux ensembles (#occurrences dans "Not A"/(#occurrences dans "A" + #occurrences dans "Not A")) pour chaque catégorie. Ceux-ci sont ensuite triés par ordre croissant (en fonction du taux d'erreur). Alors, le défi consiste maintenant à déterminer lesquelles de ces catégories sont appropriées pour désigner un échantillon comme «A».

---------------------------------------------------- 
| Category | error ratio | #occ "A" | #occ "Not A" | 
-------------------------------------------------- 
| V  | 0   | 2  | 0   | 
---------------------------------------------------- 
| W  | 0   | 59  | 0   | 
---------------------------------------------------- 
| X  | 0,138  | 125  | 20   | 
---------------------------------------------------- 
| Y  | 0,901  | 9  | 82   | 
---------------------------------------------------- 
| Z  | 1   | 1  | 0   | 
---------------------------------------------------- 

Donc, tout d'abord, j'ai besoin de décider combien d'observations sont nécessaires pour continuer à traiter mes catégories. Dans le tableau illustré, V et Z ne sont probablement pas de bonnes catégories à choisir, car il y a trop peu d'occurrences. Mais y a-t-il une approche statistique pour décider quelles catégories devraient être écartées? Après cela, j'ai besoin de choisir où se trouve ma limite de décision. Je pensais à créer toutes les combinaisons possibles de catégories, puis mesurer la précision et choisir le plus grand ensemble avec une précision supérieure à ~ 95%.

Dans la première étape, j'utiliserais seulement {V} pour décider si un échantillon est "A" ou "Non A". Alors {W}, ... {V, W}, {V, X}, ... {V, W, X}, ... {V, W, X, Y, Z}. Ce qui semble être la complexité de (2^n - 1).

Comme j'ai plusieurs milliers de catégories, c'est impossible. Existe-t-il un algorithme d'optimisation que je peux utiliser à cette fin?

+0

Vous pouvez trier les catégories en fonction du taux d'erreur O (nlogn) petit à grand. Ensuite, choisissez les k-catégories supérieures en fonction du taux d'erreur cumulé basé sur les comptes cumulatifs d'occ "A" et d'occ "Not A" pour les catégories k-top, O (n). De plus, vous pouvez considérer "prior" en ajoutant des constantes à #occ "A" et #occ "Not A" pour que les catégories avec un taux d'erreur moins certain puissent être filtrées d'une manière ou d'une autre. –

Répondre

0

Vous n'avez probablement pas besoin d'inventer des vélos.

Vous pouvez encoder vos données d'une manière binaire, comme ceci:

A V W X Y Z 
1 1 1 0 0 1 
0 0 1 1 0 0 
1 0 1 1 1 0 
... 

Par la suite, vous pouvez nourrir vos données à un algorithme de classification, comme Naive Bayes, régression logistique, classificateur arbre de décision, SVM, et cetera.