Fondamentalement, je veux convertir les mesures de similitude en poids qui sont utilisés comme prédicteurs. Les similitudes seront sur [0,1], et je limiterai les poids à également sur [0,1]. J'aimerais une fonction paramétrique qui effectue cette cartographie que j'optimiserai probablement en utilisant la descente de gradient. Les exigences sont que 0 correspond à 0, 1 correspond à 1 et il doit être strictement croissant. Un dérivé simple est également apprécié. Merci d'avance
Edit: Merci pour les réponses jusqu'à présent, celles-ci sont très utiles. Pour clarifier mon objectif, la tâche est la prédiction. Mes observations sont des vecteurs extrêmement clairsemés avec une seule dimension à prévoir. Mes dimensions d'entrée sont utilisées pour calculer la similitude. Ma prédiction est alors une somme pondérée de la valeur d'autres observations pour le prédicteur où le poids est fonction de la similitude. Je limite mes poids sur [0,1] pour plus de simplicité. Nous espérons maintenant clairement pourquoi j'ai besoin de 0 pour mapper sur 0, 1 pour mapper sur 1, et pour que cela augmente strictement. Comme l'a souligné whuber, l'utilisation de f (x) = x répond à ces exigences et fonctionne plutôt bien. Cependant, il n'a aucun paramètre à optimiser. J'ai beaucoup d'observations donc je peux tolérer beaucoup de paramètres. Je vais coder manuellement la descente du gradient, d'où ma préférence pour une dérivée simple.
Par exemple, la plupart des réponses données sont symétriques par rapport à 0,5. Il serait utile d'avoir un paramètre pour décaler vers la gauche / droite (comme avec la distribution bêta)
la source
Réponses:
En voici un:
où est > 0β > 0
] 2
la source
Comme déjà commenté par @whuber, la fonction satisfait les trois exigences que vous avez mentionnées (c.-à-d. 0 correspond à 0, 1 correspond à 1 et la fonction augmente strictement). Dans le titre de votre question, vous semblez indiquer que la fonction en forme de S vous intéresse également, comme dans la courbe sigmoïde / logistique. Est-ce correct? Dans ce cas, vous devriez certainement essayer la fonction logistique suivante qui répondra approximativement aux 4 critères que vous avez spécifiés: 1F( x ) = x .
Le dans cette équation contrôlera la pente de votre courbe. La modification de k vous permettra également de contrôler la distance entre f ( 0 ) et f ( 1 ) respectivement à 0 et 1. Par exemple, pour k = 20 , f ( 0 ) = 4,539787 e - 05 et f ( 1 ) = 0,9999546 .k k F( 0 ) F( 1 ) k = 20 F( 0 ) = 4,539787 e - 05 F( 1 ) = 0,9999546
La dérivée de cette fonction est facilement calculée comme:
la source
Permettez-moi de vous proposer la solution la plus générale conforme aux exigences: cela vous donnera le plus de flexibilité pour choisir et optimiser.
Nous pouvons interpréter "en forme de S" comme une courbe augmentant de façon monotone (parce que la transformation doit être biunivoque) composée d'une partie concave vers le haut et d'une autre partie concave vers le bas. Nous pouvons nous concentrer sur la réduction de la moitié gauche concave, car l'autre type (avec la moitié gauche concave vers le haut) est obtenu en inversant de telles transformations.
Cette dérivée seconde peut pratiquement tout faire : tout ce dont nous avons besoin, c'est que
il est intégrable,
et
R
la source
Ce que vous essayez d'utiliser pour cela n'est pas particulièrement clair pour moi, donc je ne peux pas dire si cela a du sens, mais répondre à tous vos critères semble être assez trivial.
Alors pourquoi ne pas simplement prendre n'importe quelle famille spécifique de distributions unimodales * continues sur [0,1] dont le pdf est "simple"? Cela semble remplir chaque partie de ce que vous y énumérez.
* (dont le mode est délimité des points de terminaison)
courbe en s - garantie par l'unimodalité (avec le mode pas aux points terminaux)
paramétrique - en donnant n'importe quelle famille spécifique qui a des paramètres
0 correspond à 0, 1 correspond à 1 strictement - c'est ce que font les fonctions de distribution sur [0,1]; vous avez juste besoin que la densité soit> 0 in (0,1)
dérivé simple - c'est le pdf, donc si le pdf est "simple" selon le critère qui vous convient, vous avez terminé.
Il y en a (comme l'a dit Alex R) un nombre infini. La bêta qu'il mentionne est évidente, mais le cdf est la fonction bêta incomplète, donc vous auriez besoin de quelque chose pour l'évaluer --- c'est une fonction standard dans de nombreux packages (y compris presque tous les packages de statistiques décents), donc je doute que être difficile. Notez cependant que tous les bêtas ne sont pas unimodaux (avec le mode pas aux extrémités), donc la famille comprend également les cdfs qui ne sont pas en forme de "s".
Voici des photos de trois familles relativement simples:
Il existe de nombreux autres choix et de nouveaux peuvent facilement être construits.
-
En réponse à la modification de la question:
la source