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
Genial!
Completion tasa mejorada a 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!