Algoritmo de Selección Negativa
El algoritmo de selección negativa se inspira en el sistema inmunológico biológico que distingue entre propio y no propio. Las células T que reaccionan a lo propio son eliminadas, dejando solo aquellas capaces de reconocer invasores extraños. El algoritmo define propio (datos normales), genera detectores que no coinciden con lo propio y los utiliza para detectar anomalías.
El proceso implica tres pasos:
- Generar un conjunto representativo de muestras propias para capturar el comportamiento normal del sistema;
- Crear una gran cantidad de detectores aleatorios;
- Eliminar los detectores que coincidan con lo propio, dejando detectores activos que señalan anomalías cuando coinciden con nuevos datos.
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)
Fortalezas y limitaciones del algoritmo de selección negativa
El algoritmo de selección negativa proporciona un método sencillo para la detección de anomalías, inspirado en los sistemas inmunológicos. Principales fortalezas:
- Capacidad para detectar anomalías no vistas al enfocarse en datos fuera del conjunto propio;
- No requiere conocimiento previo de patrones anómalos, solo una definición clara del conjunto propio.
Las limitaciones incluyen:
- La generación de detectores se vuelve lenta a medida que crece el conjunto propio;
- Menor eficacia para datos de alta dimensión o continuos debido a la cobertura dispersa del conjunto no propio;
- Potencial de falsos positivos o negativos si el conjunto propio no es completamente representativo o los detectores están mal definidos.
A pesar de estos problemas, el algoritmo de selección negativa es una idea central en los sistemas inmunológicos artificiales y en la detección robusta de anomalías.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 6.25
Algoritmo de Selección Negativa
Desliza para mostrar el menú
El algoritmo de selección negativa se inspira en el sistema inmunológico biológico que distingue entre propio y no propio. Las células T que reaccionan a lo propio son eliminadas, dejando solo aquellas capaces de reconocer invasores extraños. El algoritmo define propio (datos normales), genera detectores que no coinciden con lo propio y los utiliza para detectar anomalías.
El proceso implica tres pasos:
- Generar un conjunto representativo de muestras propias para capturar el comportamiento normal del sistema;
- Crear una gran cantidad de detectores aleatorios;
- Eliminar los detectores que coincidan con lo propio, dejando detectores activos que señalan anomalías cuando coinciden con nuevos datos.
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)
Fortalezas y limitaciones del algoritmo de selección negativa
El algoritmo de selección negativa proporciona un método sencillo para la detección de anomalías, inspirado en los sistemas inmunológicos. Principales fortalezas:
- Capacidad para detectar anomalías no vistas al enfocarse en datos fuera del conjunto propio;
- No requiere conocimiento previo de patrones anómalos, solo una definición clara del conjunto propio.
Las limitaciones incluyen:
- La generación de detectores se vuelve lenta a medida que crece el conjunto propio;
- Menor eficacia para datos de alta dimensión o continuos debido a la cobertura dispersa del conjunto no propio;
- Potencial de falsos positivos o negativos si el conjunto propio no es completamente representativo o los detectores están mal definidos.
A pesar de estos problemas, el algoritmo de selección negativa es una idea central en los sistemas inmunológicos artificiales y en la detección robusta de anomalías.
¡Gracias por tus comentarios!