Filtro de Kalman

professor

O que é o filtro de Kalman?

O filtro de Kalman é um algoritmo de estimação recursiva que combina previsões e medições ruidosas. Ele foi desenvolvido por Rudolf E. Kálmán na década de 1960 para sistemas lineares gaussianos. O filtro mantém uma estimativa do estado oculto e sua incerteza (covariância). A cada passo, ele faz uma previsão (modelo dinâmico) e uma correção (medição). A correção é ponderada pela confiança em cada fonte: o ganho de Kalman. Esse ganho minimiza o erro quadrático médio da estimativa. O filtro é ótimo para sistemas lineares com ruídos gaussianos brancos. Ele é amplamente usado em navegação, controle, visão computacional e finanças. Sua implementação é eficiente, exigindo apenas operações matriciais.

Características fundamentais

O filtro de Kalman possui três características principais que o definem. Primeiro, ele é recursivo: não precisa de todo o histórico, apenas do estado atual. Segundo, ele fornece uma estimativa de incerteza (matriz de covariância) junto com o estado. Terceiro, ele é ótimo no sentido de mínimos quadrados para sistemas lineares. Ele também pode lidar com medições de diferentes frequências ou com dados faltantes. A predição usa um modelo de transição de estado (matriz A) e controle (B). A correção usa um modelo de observação (matriz H) que relaciona estado e medição.

Vantagens e aplicações típicas

A principal vantagem é a capacidade de fundir dados de múltiplos sensores ruidosos. Ele é usado em GPS, rastreamento de alvos, robótica e economia. Também é aplicado em filtragem de sinais e previsão de séries temporais. Contudo, ele falha em sistemas não-lineares; para esses, usa-se o filtro estendido (EKF) ou unscented (UKF).

O filtro de Kalman é um caso especial de inferência bayesiana em redes gaussianas dinâmicas. A predição é o passo de “propagação” da crença usando o modelo dinâmico. A correção é o passo de “atualização” usando a verossimilhança da medição. O ganho de Kalman K = P_pred * H^T * (H * P_pred * H^T + R)^(-1). Ele equilibra a incerteza da previsão (P_pred) e o ruído da medição (R). Se o ruído de medição é alto, K é pequeno, confiando mais na previsão. Se a previsão é incerta, K é grande, confiando mais na medição. O filtro converge rapidamente e é estável para sistemas detectáveis. A matriz de covariância P evolui e diminui com o tempo, convergindo para um valor estacionário. O filtro também pode estimar parâmetros desconhecidos (filtro de Kalman estendido dual). Ele é a base de sistemas de navegação inercial (INS/GPS) em aviões e carros autônomos. No rastreamento de objetos, ele prevê a posição futura e corrige com detecções visuais. O filtro de Kalman é frequentemente o primeiro algoritmo ensinado em cursos de estimação. Assim, ele é uma ferramenta essencial para engenheiros e cientistas de dados.

Um exemplo clássico é rastrear a posição de um carro em movimento retilíneo uniforme. O estado é [posição, velocidade]. A medição é a posição com ruído. O modelo de transição é posição += velocidade*dt, velocidade constante. O filtro estima a posição suavizada e a velocidade mesmo com medições ruidosas.


Enunciado do exemplo clássico

Implemente o filtro de Kalman para rastrear um objeto em 1D com movimento uniforme. Estado: [posição (m), velocidade (m/s)]. dt = 0.1 s. Modelo dinâmico: posição = posição + velocidade*dt + ruído de processo (q=0.5). Medição: posição observada com ruído gaussiano (r=2.0). Gere 50 medições sintéticas a partir de uma trajetória real (posição inicial 0, vel=3 m/s). Execute o filtro e plote a posição real, as medições e a estimativa filtrada.

Este código implementa o filtro de Kalman para rastreamento 1D. As medições ruidosas são suavizadas pela estimativa recursiva. O intervalo de confiança (2σ) mostra a incerteza da estimativa. A velocidade é estimada indiretamente, mesmo sem ser medida diretamente. Para iniciantes, este exemplo demonstra o poder da fusão de dados. O filtro de Kalman é, portanto, uma ferramenta fundamental em engenharia de controle.

Redes Bayesianas para Classificação

professor

O que são redes bayesianas para classificação?

Redes bayesianas para classificação são modelos gráficos probabilísticos que predizem uma variável alvo discreta. Elas representam dependências entre atributos e a classe usando um grafo acíclico direcionado. Cada nó é uma variável, e arestas indicam influência condicional entre elas. A classe geralmente é um nó especial, frequentemente com pais ou filhos. A classificação é feita calculando P(classe | evidência) via inferência na rede. Diferentemente do Naive Bayes, elas permitem dependências entre atributos. Isso aumenta a acurácia quando atributos são correlacionados. Além disso, redes bayesianas podem lidar com dados faltantes e variáveis latentes. Elas são interpretáveis: cada aresta tem um significado causal ou associativo. Portanto, são usadas em diagnósticos, sistemas especialistas e bioinformática.

Características fundamentais

Redes para classificação possuem três características principais que as definem. Primeiro, a estrutura pode ser aprendida a partir dos dados (aprendizado de estrutura). Segundo, a inferência pode ser exata (para redes pequenas) ou aproximada (MCMC). Terceiro, elas fornecem distribuições de probabilidade sobre as classes, não apenas rótulos. Isso é essencial para decisões com custos assimétricos. A classe pode ser um nó raiz (causa) ou um nó folha (efeito). Quando a classe é raiz, o modelo é gerativo (ex.: Naive Bayes). Quando é folha, é discriminativo (ex.: redes de regressão logística bayesiana).

Vantagens e aplicações típicas

A principal vantagem é a flexibilidade para modelar relações complexas entre atributos. Elas são usadas em classificação de textos, imagens e sinais médicos. Também são aplicadas em sistemas de recomendação e detecção de intrusão. Contudo, o aprendizado de estrutura é computacionalmente caro.

O classificador TAN (Tree-Augmented Naive Bayes) é um exemplo prático. Ele adiciona arestas entre atributos para capturar as correlações mais fortes. A estrutura é aprendida usando árvore de máxima extensão ponderada por informação mútua. Outra abordagem é usar redes bayesianas completas com restrição de treewidth. Isso permite inferência exata com complexidade controlada. Na classificação, a variável alvo pode ter múltiplos estados (ex.: doença, estágio). As redes bayesianas também podem integrar conhecimento de especialistas via estrutura manual. Isso é valioso quando os dados são escassos ou ruidosos. A predição é feita por propagação de evidências para o nó classe. Algoritmos como eliminação de variáveis ou amostragem são usados. A saída probabilística permite calibrar a confiança da classificação. Por exemplo, pode-se rejeitar amostras com baixa probabilidade máxima. Redes bayesianas também suportam aprendizado incremental com novos dados. Assim, elas são ferramentas poderosas para classificação robusta e interpretável.

Um exemplo clássico é a classificação de risco de crédito com variáveis: renda, idade, histórico, e empréstimo (classe). A rede modela que renda e idade influenciam histórico, e histórico influencia o risco. Dadas as evidências, a rede calcula P(risco | dados) para decisão de aprovação.


Enunciado do exemplo clássico

Implemente uma rede bayesiana para classificar se um paciente tem gripe (G) ou resfriado (R) com base em: Febre (F), Tosse (T) e Dor de Cabeça (D). Todas binárias. Relações: G e R influenciam F, T e D de forma independente (Naive Bayes com duas classes). Defina CPTs manualmente. Dados de treino: 50 pacientes com rótulos. Calcule a acurácia em 20 novos pacientes (gerados sinteticamente). Plote a estrutura da rede e a matriz de confusão.

Este código implementa uma rede Naive Bayes para classificação com duas classes. A estrutura mostra a classe como nó raiz influenciando todos os sintomas. A matriz de confusão revela o desempenho do modelo nos dados de teste. O modelo estima probabilidades diretamente dos dados de treino. Para iniciantes, este exemplo demonstra como redes bayesianas resolvem classificação. Redes bayesianas para classificação são, portanto, práticas e interpretáveis.