MCP HubMCP Hub
스킬 목록으로 돌아가기

model-markov-chain

pjt222
업데이트됨 Yesterday
1 조회
17
2
17
GitHub에서 보기
디자인aidesign

정보

이 스킬은 이산 또는 연속 마르코프 체인을 구축하고 분석하며, 전이 행렬 구성, 상태 분류, 정상 분포 계산을 포함합니다. 관찰된 전이 횟수/비율로 무기억 시스템을 모델링하거나 장기 정상 상태 확률을 계산할 때 사용하세요. 또한 예상 도달 시간, 흡수 확률을 결정하고, 은닉 마르코프 모델이나 강화 학습 MDP의 기초로 활용하는 데에도 유용합니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/model-markov-chain

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

Model Markov Chain

Construir, clasificar y analizar cadenas de Markov de tiempo discreto o continuo a partir de datos de transición crudos o especificaciones de dominio, produciendo distribuciones estacionarias, tiempos medios de primer paso y validación basada en simulación. Cubre flujos de trabajo DTMC y CTMC de principio a fin.

Cuándo Usar

  • Necesitas modelar un sistema cuyo estado futuro depende solo de su estado actual (propiedad sin memoria)
  • Tienes conteos o tasas de transición observados entre un conjunto finito de estados
  • Quieres calcular probabilidades de estado estacionario a largo plazo para un proceso
  • Necesitas determinar tiempos de golpe esperados o probabilidades de absorción
  • Estás clasificando estados como transitorios, recurrentes o absorbentes para análisis estructural
  • Quieres comparar modelos de Markov alternativos para el mismo sistema
  • Estás construyendo una base para modelos más avanzados (modelos ocultos de Markov, MDPs de aprendizaje por refuerzo)

Entradas

Requerido

EntradaTipoDescripción
state_spacelist/vectorEnumeración exhaustiva de todos los estados en la cadena
transition_datamatrix, data frame, o edge listConteos de transición crudos, una matriz de probabilidad, o una matriz de tasas (para CTMC)
chain_typestringYa sea "discrete" (DTMC) o "continuous" (CTMC)

Opcional

EntradaTipoPredeterminadoDescripción
initial_distributionvectoruniformeProbabilidades del estado inicial
time_horizoninteger/float100Número de pasos (DTMC) o unidades de tiempo (CTMC) para simulación
tolerancefloat1e-10Tolerancia de convergencia para cálculos iterativos
absorbing_stateslistauto-detecciónEstados explícitamente marcados como absorbentes
labelslistíndices de estadoNombres legibles para cada estado
methodstring"eigen"Método de resolución: "eigen", "power", o "linear_system"

Procedimiento

Paso 1: Definir espacio de estados y transiciones

1.1. Enumerar todos los estados distintos. Confirmar que la lista es exhaustiva y mutuamente excluyente.

1.2. Si se trabaja desde observaciones crudas, tabular conteos de transición en una matriz de conteos n x n C donde C[i,j] es el número de transiciones observadas del estado i al estado j.

1.3. Para cadenas de tiempo continuo, recopilar tiempos de permanencia en cada estado junto con los destinos de transición.

1.4. Verificar que ningún estado falta de la enumeración comprobando que cada origen y destino observado aparece en el espacio de estados.

1.5. Documentar la fuente de datos, período de observación, y cualquier filtrado aplicado. Este registro de procedencia es esencial para reproducir el análisis y explicar anomalías.

Esperado: Un espacio de estados bien definido de tamaño n y ya sea una matriz de conteos o una lista de tuplas (origen, destino, tasa/conteo) cubriendo todas las transiciones observadas. El espacio de estados debe ser suficientemente pequeño para operaciones matriciales (típicamente n < 10000 para métodos densos).

En caso de fallo: Si faltan estados, re-examinar los datos fuente y expandir la enumeración. Si el espacio de estados es demasiado grande para métodos matriciales, considerar agrupar estados raros en un estado agregado "otro" o cambiar a análisis basado en simulación. Si la matriz de conteos es extremadamente dispersa, verificar que el período de observación es suficientemente largo para capturar transiciones típicas.

Paso 2: Construir la matriz de transición o generador

2.1. Tiempo discreto (DTMC): Normalizar cada fila de la matriz de conteos para obtener la matriz de probabilidad de transición P:

  • P[i,j] = C[i,j] / sum(C[i,])
  • Verificar que cada fila suma 1 (dentro de la tolerancia).

2.2. Tiempo continuo (CTMC): Construir la matriz de tasas (generador) Q:

  • Fuera de diagonal: Q[i,j] = tasa de transición de i a j
  • Diagonal: Q[i,i] = -sum(Q[i,j] para j != i)
  • Verificar que cada fila suma 0 (dentro de la tolerancia).

2.3. Manejar filas con conteo cero (estados nunca observados como orígenes) decidiendo una estrategia de suavizado: suavizado de Laplace, convención de absorción, o marcado para revisión.

2.4. Almacenar la matriz en un formato adecuado para cómputo posterior (denso para cadenas pequeñas, disperso para grandes).

Esperado: Una matriz estocástica válida P (filas suman 1) o matriz generadora Q (filas suman 0) sin entradas negativas fuera de diagonal en P y sin entradas diagonales positivas en Q.

En caso de fallo: Si las sumas de filas se desvían más allá de la tolerancia, verificar corrupción de datos o problemas de punto flotante. Re-normalizar o re-examinar los datos fuente.

Paso 3: Clasificar estados

3.1. Calcular las clases de comunicación encontrando componentes fuertemente conectados del grafo dirigido inducido por la matriz de transición (solo aristas con probabilidad positiva).

3.2. Para cada clase de comunicación, determinar:

  • Recurrente si la clase no tiene aristas salientes hacia otras clases.
  • Transitoria si tiene aristas salientes.
  • Absorbente si la clase consiste en un solo estado con P[i,i] = 1.

3.3. Verificar periodicidad para cada clase recurrente calculando el MCD de todas las longitudes de ciclo alcanzables desde cualquier estado en la clase.

  • Período = 1 significa aperiódico.

3.4. Determinar si la cadena es irreducible (una sola clase de comunicación) o reducible (múltiples clases).

3.5. Resumir: listar cada clase, su tipo (transitoria/recurrente), su período, y si existen estados absorbentes.

Esperado: Una clasificación completa: cada estado asignado a una clase de comunicación con etiquetas (transitoria, positivamente recurrente, nulamente recurrente, absorbente) y periodicidad.

En caso de fallo: Si el análisis del grafo es inconsistente, verificar que la matriz de transición no tiene entradas negativas y las filas suman correctamente. Para cadenas muy grandes, usar algoritmos de grafos iterativos en lugar de potencias de matriz completas.

Paso 4: Calcular la distribución estacionaria

4.1. Cadena irreducible aperiódica: Resolver pi * P = pi sujeto a sum(pi) = 1.

  • Reformular como pi * (P - I) = 0 con la restricción de normalización.
  • Usar descomposición de eigenvalores: pi es el eigenvector izquierdo de P correspondiente al eigenvalor 1, normalizado para sumar 1.

4.2. Cadena irreducible periódica: La distribución estacionaria todavía existe pero la cadena no converge a ella desde estados iniciales arbitrarios. Calcularla de la misma manera que 4.1.

4.3. Cadena reducible: Calcular la distribución estacionaria para cada clase recurrente independientemente. La distribución estacionaria general es una combinación convexa dependiendo de las probabilidades de absorción desde estados transitorios.

4.4. CTMC: Resolver pi * Q = 0 con sum(pi) = 1.

4.5. Verificar: multiplicar el pi calculado por P (o Q) y confirmar que el resultado es igual a pi dentro de la tolerancia.

4.6. Para cadenas reducibles, calcular las probabilidades de absorción desde cada estado transitorio a cada clase recurrente. Estas probabilidades, combinadas con las distribuciones estacionarias por clase, dan el comportamiento a largo plazo condicionado al estado inicial.

4.7. Registrar la brecha espectral (diferencia entre las magnitudes del mayor y segundo mayor eigenvalor). Esta cantidad gobierna la tasa de convergencia a la estacionariedad y es útil para determinar cuántos pasos de simulación se necesitan en el Paso 6.

Esperado: Un vector de probabilidad pi de longitud n con todas las entradas no negativas, sumando 1, satisfaciendo las ecuaciones de balance dentro de la tolerancia. La brecha espectral debe ser positiva para cadenas irreducibles aperiódicas.

En caso de fallo: Si el solucionador de eigenvalores no converge, intentar el método iterativo de potencias (pi_k+1 = pi_k * P hasta convergencia). Si múltiples eigenvalores igualan 1, la cadena es reducible -- manejar según el Paso 4.3. Si la brecha espectral es extremadamente pequeña, la cadena mezcla lentamente y requerirá simulaciones muy largas para validación.

Paso 5: Calcular tiempos medios de primer paso

5.1. Definir el tiempo medio de primer paso m[i,j] como el número esperado de pasos para alcanzar el estado j partiendo del estado i.

5.2. Para una cadena irreducible, resolver el sistema de ecuaciones lineales:

  • m[i,j] = 1 + sum(P[i,k] * m[k,j] para k != j) para todo i != j
  • m[j,j] = 1 / pi[j] (tiempo medio de recurrencia)

5.3. Para cadenas absorbentes, calcular probabilidades de absorción y tiempos esperados hasta la absorción:

  • Particionar P en bloques transitorio (Q_t) y absorbente.
  • Matriz fundamental: N = (I - Q_t)^{-1}
  • Pasos esperados hasta absorción: N * 1 (vector columna de unos)
  • Probabilidades de absorción: N * R donde R es el bloque transitorio-a-absorbente.

5.4. Para CTMC, reemplazar conteos de pasos con tiempos de permanencia esperados usando la matriz generadora.

5.5. Presentar resultados como una matriz o tabla de tiempos de primer paso por pares para pares de estados clave.

Esperado: Una matriz de tiempos medios de primer paso donde las entradas diagonales igualan los tiempos medios de recurrencia (1/pi[j]) y las entradas fuera de diagonal son finitas para pares de estados comunicantes.

En caso de fallo: Si el sistema lineal es singular, la cadena tiene estados transitorios que no pueden alcanzar el objetivo. Reportar pares inalcanzables como infinito. Verificar la estructura de la cadena del Paso 3.

Paso 6: Validar con simulación

6.1. Simular K trayectorias muestrales independientes de la cadena por T pasos cada una, partiendo de la distribución inicial.

6.2. Estimar la distribución estacionaria empíricamente contando frecuencias de ocupación de estados en todas las trayectorias después de descartar un período de quemado.

6.3. Comparar frecuencias simuladas con la distribución estacionaria analítica. Calcular la distancia de variación total o el estadístico chi-cuadrado.

6.4. Estimar tiempos medios de primer paso empíricamente registrando el primer tiempo de golpe para cada estado objetivo a través de réplicas.

6.5. Reportar métricas de concordancia:

  • Desviación absoluta máxima entre probabilidades estacionarias analíticas y simuladas.
  • Intervalos de confianza del 95% para tiempos de primer paso simulados vs. valores analíticos.

6.6. Si las discrepancias exceden la tolerancia, re-examinar los pasos de construcción de la matriz de transición y clasificación.

Esperado: Distribución estacionaria simulada dentro de 0.01 de distancia de variación total de la solución analítica (para ejecuciones suficientemente largas). Tiempos medios de primer paso simulados dentro del 10% de los valores analíticos.

En caso de fallo: Aumentar la longitud de simulación T o el número de réplicas K. Si las discrepancias persisten, la solución analítica puede tener errores numéricos -- recalcular con mayor precisión.

Validación

  • La matriz de transición P tiene todas las entradas no negativas y cada fila suma 1 (o las filas de Q suman 0 para CTMC)
  • La distribución estacionaria pi es un vector de probabilidad válido que satisface pi * P = pi
  • Los tiempos medios de recurrencia igualan 1/pi[j] para cada estado recurrente j
  • Las frecuencias de estado simuladas convergen a la distribución estacionaria analítica
  • La clasificación de estados es consistente: ningún estado recurrente tiene aristas saliendo de su clase de comunicación
  • Todos los eigenvalores de P tienen magnitud a lo sumo 1, con exactamente un eigenvalor igual a 1 por clase recurrente
  • Para cadenas absorbentes: las probabilidades de absorción desde cada estado transitorio suman 1 en todas las clases absorbentes
  • La matriz fundamental N = (I - Q_t)^{-1} tiene todas las entradas positivas (los conteos de visitas esperados son positivos)
  • El balance detallado se cumple si y solo si la cadena es reversible: pi[i] * P[i,j] = pi[j] * P[j,i] para todo i,j

Errores Comunes

  • Espacio de estados no exhaustivo: Los estados faltantes producen una matriz sub-estocástica (filas suman menos de 1). Siempre verificar las sumas de filas antes del análisis.
  • Confundir DTMC y CTMC: Una matriz de tasas debe tener diagonal no positiva y filas sumando 0. Aplicar fórmulas de DTMC a una matriz de tasas produce sinsentido.
  • Ignorar periodicidad: Una cadena periódica tiene una distribución estacionaria válida pero no converge a ella en el sentido usual. El análisis de tiempo de mezcla debe considerar el período.
  • Inestabilidad numérica para cadenas grandes: La descomposición de eigenvalores de matrices densas grandes es costosa y puede perder precisión. Usar solucionadores dispersos o métodos iterativos para cadenas con más de unos cientos de estados.
  • Transiciones de probabilidad cero: Los ceros estructurales en la matriz de transición pueden hacer la cadena reducible. Verificar irreducibilidad antes de calcular una distribución estacionaria única.
  • Longitud de simulación insuficiente: Simulaciones cortas con mezcla pobre producen estimaciones sesgadas. Siempre calcular tamaño de muestra efectivo y verificar gráficos de traza.
  • Asumir reversibilidad sin verificar: Muchos atajos analíticos (ej., balance detallado) aplican solo a cadenas reversibles. Verificar pi[i] * P[i,j] = pi[j] * P[j,i] antes de usar resultados dependientes de reversibilidad.
  • Acumulación de punto flotante en método de potencias: Iterar pi * P muchas veces acumula errores de redondeo. Re-normalizar periódicamente pi para sumar 1 durante la iteración de potencias.

Habilidades Relacionadas

  • Fit Hidden Markov Model -- extiende cadenas de Markov a modelos de estados latentes con emisiones observadas
  • Simulate Stochastic Process -- marco general de simulación aplicable a trayectorias muestrales de cadenas de Markov y validación Monte Carlo

GitHub 저장소

pjt222/agent-almanac
경로: i18n/es/skills/model-markov-chain
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

executing-plans

디자인

executing-plans 스킬은 검토 체크포인트가 포함된 통제된 배치로 실행할 완전한 구현 계획이 있을 때 사용합니다. 이 스킬은 계획을 불러와 비판적으로 검토한 후, 소규모 배치(기본값 3개 작업)로 작업을 실행하면서 각 배치 사이에 진행 상황을 아키텍트 검토를 위해 보고합니다. 이를 통해 내재된 품질 관리 체크포인트를 갖춘 체계적인 구현이 보장됩니다.

스킬 보기

requesting-code-review

디자인

이 스킬은 코드 변경 사항을 요구 사항에 따라 분석하기 위해 코드 리뷰어 하위 에이전트를 호출합니다. 작업 완료 후, 주요 기능 구현 후, 또는 메인 브랜치에 병합하기 전에 사용해야 합니다. 이 리뷰는 현재 구현체와 원래 계획을 비교하여 문제를 조기에 발견하는 데 도움이 됩니다.

스킬 보기

connect-mcp-server

디자인

이 스킬은 개발자들이 HTTP, stdio 또는 SSE 전송 방식을 통해 MCP 서버를 Claude Code에 연결하는 포괄적인 가이드를 제공합니다. GitHub, Notion 및 사용자 정의 API와 같은 외부 서비스를 통합하기 위한 설치, 구성, 인증 및 보안을 다룹니다. MCP 통합 설정, 외부 도구 구성 또는 Claude의 모델 컨텍스트 프로토콜 작업 시 활용하세요.

스킬 보기

web-cli-teleport

디자인

이 스킬은 작업 분석을 기반으로 개발자가 Claude Code 웹 인터페이스와 CLI 인터페이스 중 선택할 수 있도록 돕고, 두 환경 간 원활한 세션 텔레포트를 가능하게 합니다. 웹, CLI 또는 모바일 환경 전환 시 세션 상태와 컨텍스트를 관리하여 워크플로를 최적화합니다. 다양한 단계에서 서로 다른 도구가 필요한 복잡한 프로젝트에 사용하세요.

스킬 보기