2013-08-18 4 views
0

J'ai lu quelques articles sur les CRF et je suis un peu confus au sujet des fonctions. Les caractéristiques unaires (nœud) et binaires (bord) f sont normalement de la formeFonctions de fonction de champ aléatoire conditionnel

f (yc, xc) = 1 {yc = y c} fg (xc). Où {.} Est la fonction de l'indicateur évaluant à 1 si la condition incluse est vraie, et 0 dans le cas contraire. fg est une fonction de la donnée xc qui extrait les attributs (caractéristiques) utiles des données.

Maintenant, il me semble que pour créer des fonctions CRF, les vraies étiquettes (yc) doivent être connues. C'est vrai pour l'entraînement, mais pour la phase de test, les véritables étiquettes de classe sont inconnues (puisque nous essayons de déterminer leur valeur la plus probable).

Ai-je raté quelque chose? Comment cela peut-il être correctement mis en œuvre?

Répondre

2

L'idée avec le CRF est qu'il attribue un score à chaque paramètre des étiquettes. Donc, ce que vous faites, théoriquement, est de calculer les scores pour toutes les affectations d'étiquettes possibles et ensuite quel que soit l'étiquetage obtient le plus grand score est ce que le CRF prédit/produit. Cela n'aura de sens que si le CRF donne des scores différents aux différentes affectations d'étiquettes. Quand vous pensez de cette façon, il est clair que les étiquettes doivent être impliquées dans les fonctions pour que cela fonctionne. Donc, disons que la fonction de probabilité de log pour votre CRF est F (x, y). Il assigne donc un nombre à chaque combinaison d'un échantillon de données x et d'un étiquetage y. Ainsi, lorsque vous obtenez un nouvel échantillon de données, l'étiquette prédite pendant le temps de test est juste argmax_y F (new_x, y). C'est-à-dire que vous trouvez la valeur de y qui fait de F (new_x, y) le plus grand et c'est l'étiquetage prédit.

+0

Je vois ce que vous voulez dire. Donc, pour l'estimation des paramètres qui a du sens. Une fois que vous connaissez les paramètres du modèle CRF et que vous voulez prédire un exemple de test, comment cela fonctionne-t-il? Puisque les étiquettes sont inconnues pour un exemple de test –

+1

Vous prédisez littéralement la valeur y qui a le plus grand score. Vous devez donc écrire du code qui, implicitement ou explicitement, calcule le score pour toutes les valeurs possibles de y, puis renvoie celui qui a obtenu le score le plus élevé. C'est la prédiction au moment du test. –

+0

merci beaucoup pour l'explication. logique! –

Questions connexes