title: Campo aleatorio condicional
text: # Campo aleatorio condicional
  
  Un campo aleatorio condicional (Conditional Random Field o CRF en inglés) es un modelo estocástico utilizado habitualmente para etiquetar y segmentar secuencias de datos o extraer información de documentos. En algunos contextos también se lo denomina campo aleatorio de Márkov (inglés: Markov random Fields, MRF).
  
  ## Concepto
  
  Dada una secuencia de datos $O_{1},...O_{N}$ este modelo asigna una etiqueta $S_{i}$ para cada elemento $O_{i}$. Aunque presenta similitudes con los modelos ocultos de Márkov, estos son modelos generativos que modelan conjuntamente la distribución de probabilidad de las etiquetas (o estados) y las observaciones, $P(S,O)$, mientras que los campos aleatorios condicionales modelan la probabilidad de la secuencia correcta de etiquetas condicionada por las observaciones, $P(S|O)$, es decir, son modelos discriminativos.
  
  Se puede representar con un grafo no dirigido $G=(V,E)\,$ en el que cada vértice represente una variable aleatoria cuya distribución de probabilidad debe ser deducida, y cada arista indique una dependencia entre las variables de los vértices que conecta. El grafo obedece la propiedad de Márkov extendida a grafos:
  
      $P(S_{i}|O,S_{j};i\neq j)=P(S_{i}|O,S_{j};S_{i}\sim S_{j})$
  
  donde $\sim$ significa que los vértices $S_{i}$ y $S_{j}$ están conectados por una arista. En cuanto a los datos $O_{i}$, también llamados observaciones, lo más frecuente es que sean también una secuencia. Además, es frecuente que cada $O_{i}$ sea un vector, no un valor escalar, en cuyo caso tendríamos observaciones multimensionales.
  
  El grafo puede tener una estructura arbitrariamente compleja, aunque lo más común es que sea una cadena o un "rejilla". En una cadena, cada vértice está únicamente conectado con el vértice predecesor y con sus sucesor (se asume que los vértices están ordenados). En una rejilla, cada vértice está conectado con otros 4, excepto en los extremos; un vértice $S_{ij}$ estará conectado con $S_{i,j-1},S_{i,j+1},S_{i-1,j}$ y $S_{i+1,j}$. En el caso de la cadena la propiedad de Márkov puede reescribirse de la siguiente forma:
  
      $P(S_{i}|O,S_{j};i\neq j)=P(S_{i}|O,S_{j};S_{i-1},S_{i+1})$
  
  ## Entrenamiento y uso
  
  Estos modelos necesitan ser entrenados con N muestras $(O^{(i)},S^{(i)})_{N}^{1}$; cada una contiene un conjunto de observaciones así como las etiquetas asociadas a esas observaciones. El modelo extrae un conjunto de características $f(i,S_{i},S_{i+1})$ y $g(i,S_{i},O)$ que representan las dependencias existentes entre diferentes estados y entre estos y la secuencia de observaciones. Al contrario que en los modelos ocultos de Márkov en donde cada estado $S_{i}$ depende únicamente de la observación $O_{i}$, aquí cada estado puede depender de varias observaciones al mismo tiempo, incluso de la secuencia completa si fuese necesario. En el entrenamiento del modelo éste asigna unos pesos a cada una de esas características, indicando su relativa importancia según el caso. Puesto que el entrenamiento puede ser muy costoso en tiempo y en espacio, lo habitual es usar algoritmos de optimización numérica, como el denominado L-BFGS. En cuanto al uso, el algoritmo de Viterbi de los modelos ocultos de Márkov puede ser adaptado con facilidad. También se puede usar el algoritmo de propagación de creencias (belief propagation en inglés).
  
  ## Herramientas
  
  Algunas implementaciones de este modelo son las siguientes:
  
  