Question

Ok, voici donc un problème analogue à mon problème (je vais élaborer sur le vrai problème ci-dessous, mais je pense que cette analogie sera plus facile à comprendre).

J'ai une étrange pièce de deux côtés qui ne vient que des têtes (au hasard) 1 dans tous les 1.001 lancers (les queues étant restant). En d'autres termes, pour chaque tranche de 1000 queues que je vois, il y aura 1 têtes.

J'ai une maladie particulière où je remarque que 1 sur 1000 queues que je vois, mais je remarque que toutes les têtes, et il me semble que le taux de remarquer une tête ou la queue est de 0,5. Bien sûr, je suis au courant de cette maladie et ses effets, je peux compenser.

Quelqu'un me donne maintenant une nouvelle pièce, et je remarque que le taux de remarquer la tête est maintenant 0,6. Étant donné que ma maladie n'a pas changé (je reste seulement 1 avis sur 1000 queues), comment puis-je calculer le rapport réel des têtes à queue que cette nouvelle pièce produit?


Ok, alors quel est le vrai problème? Eh bien, j'ai un tas de données comprenant des entrées et des sorties qui sont 1 et 0. Je veux enseigner un algorithme d'apprentissage automatique supervisé pour prédire la sortie attendue (un flotteur entre 0 et 1) donné une entrée. Le problème est que les 1 sont très rares, et ce plisse le calcul interne car il devient très sensible aux erreurs d'arrondi -. Même avec les mathématiques à virgule flottante de haute précision

Alors, je normalise les données en omettant au hasard la plupart des échantillons de formation 0 de sorte qu'il semble qu'il y ait un rapport à peu près égale de 1 et de 0. Bien sûr, cela signifie que maintenant la machine de sortie de l'algorithme d'apprentissage est désormais plus prédire une probabilité, par exemple. au lieu de prédire 0.001 comme il faut, il serait maintenant prévoir 0,5.

Je besoin d'un moyen pour convertir la sortie de l'algorithme d'apprentissage automatique de retour à une probabilité dans l'ensemble de la formation initiale.

Note de l'auteur (07/10/2015): J'ai découvert plus tard que cette technique est communément appelée "sous-échantillonnage"

Était-ce utile?

La solution

Vous calculez les éléments suivants

calculatedRatio = heads / (heads + tails / 1000)

et vous avez besoin

realRatio = heads / (heads + tails)

Résolution des équations pour les deux queues donne les équations suivantes.

tails = 1000 / calculatedRatio - 1000
tails = 1 / realRatio - 1

Combinant à la fois donne le résultat suivant.

1000 / calculateRatio - 1000 = 1 / realRatio - 1

Et enfin résoudre pour realRatio.

realRatio = 1 / (1000 / calculatedRatio - 999)

Il semble être correct. calculatedRatio 0,5 rendements realRatio 1/1001, 0,6 rendements 3/2003.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top