Algoritmo de Seleção Negativa
O algoritmo de seleção negativa é inspirado no sistema imunológico biológico, que distingue próprio de não-próprio. Os linfócitos T que reagem ao próprio são eliminados, restando apenas aqueles capazes de reconhecer invasores estrangeiros. O algoritmo define o próprio (dados normais), gera detectores que não correspondem ao próprio e os utiliza para detectar anomalias.
O processo envolve três etapas:
- Gerar um conjunto representativo de amostras do próprio para capturar o comportamento normal do sistema;
- Criar um grande número de detectores aleatórios;
- Eliminar detectores que correspondam ao próprio, restando detectores ativos que sinalizam anomalias quando correspondem a novos dados.
12345678910111213141516171819202122232425262728293031323334import random def generate_random_detector(length): """Generate a random binary string detector of given length.""" return ''.join(random.choice('01') for _ in range(length)) def match(detector, self_set, r): """ Returns True if detector matches any string in self_set with at least r contiguous matching bits. """ for self_str in self_set: for i in range(len(self_str) - r + 1): if detector[i:i+r] == self_str[i:i+r]: return True return False def negative_selection(self_set, num_detectors, length, r): """ Generate detectors that do not match any self string with at least r contiguous matching bits. """ detectors = [] while len(detectors) < num_detectors: detector = generate_random_detector(length) if not match(detector, self_set, r): detectors.append(detector) return detectors # Example usage: self_set = ['11001', '10011', '11100'] detectors = negative_selection(self_set, num_detectors=5, length=5, r=3) print("Generated detectors:", detectors)
Pontos Fortes e Limitações do Algoritmo de Seleção Negativa
O algoritmo de seleção negativa oferece um método direto para detecção de anomalias, inspirado em sistemas imunológicos. Principais pontos fortes:
- Capacidade de detectar anomalias desconhecidas ao focar em dados fora do conjunto próprio;
- Não requer conhecimento prévio de padrões anômalos, apenas uma definição clara do conjunto próprio.
Limitações incluem:
- A geração de detectores torna-se lenta à medida que o conjunto próprio cresce;
- Menor eficácia para dados de alta dimensionalidade ou contínuos devido à cobertura esparsa do não-próprio;
- Potencial para falsos positivos ou negativos se o conjunto próprio não for totalmente representativo ou se os detectores forem mal definidos.
Apesar dessas questões, o algoritmo de seleção negativa é uma ideia central em sistemas imunológicos artificiais e detecção robusta de anomalias.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 6.25
Algoritmo de Seleção Negativa
Deslize para mostrar o menu
O algoritmo de seleção negativa é inspirado no sistema imunológico biológico, que distingue próprio de não-próprio. Os linfócitos T que reagem ao próprio são eliminados, restando apenas aqueles capazes de reconhecer invasores estrangeiros. O algoritmo define o próprio (dados normais), gera detectores que não correspondem ao próprio e os utiliza para detectar anomalias.
O processo envolve três etapas:
- Gerar um conjunto representativo de amostras do próprio para capturar o comportamento normal do sistema;
- Criar um grande número de detectores aleatórios;
- Eliminar detectores que correspondam ao próprio, restando detectores ativos que sinalizam anomalias quando correspondem a novos dados.
12345678910111213141516171819202122232425262728293031323334import random def generate_random_detector(length): """Generate a random binary string detector of given length.""" return ''.join(random.choice('01') for _ in range(length)) def match(detector, self_set, r): """ Returns True if detector matches any string in self_set with at least r contiguous matching bits. """ for self_str in self_set: for i in range(len(self_str) - r + 1): if detector[i:i+r] == self_str[i:i+r]: return True return False def negative_selection(self_set, num_detectors, length, r): """ Generate detectors that do not match any self string with at least r contiguous matching bits. """ detectors = [] while len(detectors) < num_detectors: detector = generate_random_detector(length) if not match(detector, self_set, r): detectors.append(detector) return detectors # Example usage: self_set = ['11001', '10011', '11100'] detectors = negative_selection(self_set, num_detectors=5, length=5, r=3) print("Generated detectors:", detectors)
Pontos Fortes e Limitações do Algoritmo de Seleção Negativa
O algoritmo de seleção negativa oferece um método direto para detecção de anomalias, inspirado em sistemas imunológicos. Principais pontos fortes:
- Capacidade de detectar anomalias desconhecidas ao focar em dados fora do conjunto próprio;
- Não requer conhecimento prévio de padrões anômalos, apenas uma definição clara do conjunto próprio.
Limitações incluem:
- A geração de detectores torna-se lenta à medida que o conjunto próprio cresce;
- Menor eficácia para dados de alta dimensionalidade ou contínuos devido à cobertura esparsa do não-próprio;
- Potencial para falsos positivos ou negativos se o conjunto próprio não for totalmente representativo ou se os detectores forem mal definidos.
Apesar dessas questões, o algoritmo de seleção negativa é uma ideia central em sistemas imunológicos artificiais e detecção robusta de anomalias.
Obrigado pelo seu feedback!