Ir al contenido principal

Entradas

Clasificación con k-nearest neighbors

En un artículo anterior hablamos de NumPy y me hubiera gustado completarlo con algún ejemplo concreto. Así que voy a aprovechar este artículo para presentaros un algoritmo muy usado en machine learning y de camino a ilustrarlo con código Python (y la librería NumPy).
El algoritmo k-nearest neighbors (abreviado como k-nn) o en español, k vecinos más cercanos, es un algoritmo conceptualmente sencillo y también fácil de implementar, pero que para ciertas tareas puede tener una eficacia más que razonable. En lo que sigue os voy a contar cómo funciona y lo vamos a implementar en Python. En un siguiente artículo, aplicaremos el algoritmo a un problema del mundo real.
K-nn pertenece a la familia de algoritmos de clasificación supervisada, es decir, que necesitan la intervención humana para realizar su aprendizaje. Esta familia de algoritmos son capaces de clasificar elementos dentro de una serie de categorías prefijadas. De forma genérica, esta tarea se llama entrenamiento, y consiste en o…
Entradas recientes

Breve introducción a las matrices con NumPy

La librería NumPy traslada la potencia de entornos como Matlab u Octave al lenguaje de programación Python. Acometer un proyecto de Machine Learning o IA requiere un manejo intensivo y eficaz de cálculo matricial, y NumPy pone a nuestra disposición toda esa potencia. La libraría dispone de un montón de herramientas y capacidades que no es posible acometer en un artículo como este, sin embargo, me dispongo a contaros lo más importante en cuanto al manejo de matrices con NumPy.

Empecemos por un ejemplo sencillo: vamos a crear una matriz.
import numpy as np matrix1 = np.matrix([[1, 2, 3, 4], [5, 6, 7, 8]]) print (matrix) [[1 2 3 4] [5 6 7 8]] La primera línea importa la librería para poder usarla en el programa y seguidamente se crea una matriz de dimensión 2x4. Alternativamente, podemos usar una sintaxis al estilo de Matlab.
matrix1 = np.matrix('1 2 3 4; 5 6 7 8') Existen otras tres funciones que nos facilitan la creación de matrices: zeros() crea una matriz inicializada con el…

Selección de atributos relevantes usando la entropía de Shannon

Hoy en día, la detección de amenazas está cada vez más ligada al aprendizaje automático. Si queremos que un IDS o un antivirus pueda lidiar con amenazas nuevas, además de métodos heurísticos hay que recurrir técnicas de clasificación, una parte importante de la IA. En los problemas de clasificación, una de las tareas a la que nos enfrentamos es seleccionar aquellos atributos que mejor describen la variable objetivo. Esto es, elegir aquellos atributos que aportan más información y tienen mayor correlación con la variable explicada. Por ejemplo, si queremos establecer la probabilidad de que alguien padezca cáncer de pulmón o no, una variable que va a ser muy significativa es si es fumadora. En el otro extremo, el color de los ojos de la persona, por poner un ejemplo muy claro, no aporta información relevante.

Detección de Malware usando los contadores hardware

Os dejo una parte de mi proyecto de fin de master (muchas gracias a Jordi Serra por ser mi director de proyecto). Se llama Anomaly Detection For Malware Identification Using Hardware Performance Counters.
La idea principal es que es posible, usando aprendizaje automático (machine learning), en concreto las técnicas de detección de anomalías, detectar comportamientos extraños en la ejecución de un software (normalmente el malware trata de desbordar la pila o algún buffer del programa). El algoritmo usa los contadores hardware de los micros modernos para analizar el comportamiento del ejecutable. Os dejo con el artículo.


Criptografía con curvas elípticas

Hace tiempo que le doy vueltas a la idea de hacer un post sobre criptografía basada en curvas elípticas, pero hasta ahora me he resistido porque no es un tema fácil de tratar de forma divulgativa sin meterse en berenjenales matemáticos de mucho cuidado.
Aun así, me voy a atrever por dos motivos. Porque me apetece, que para eso es mi blog, y porque personalmente creo que es un campo muy prometedor para la investigación en criptografía.
Voy a tratar de simplificar al máximo y voy a ahorrarte demostraciones matemáticas y formulitas todo lo que pueda, pero avisado quedas de que este es un artículo donde se presupone que el lector tiene cierta competencia matemática.
Sin más preámbulos, vamos al lío.

Ataques y debilidades de RSA

Siempre que se habla de criptografía de clave pública es obligado nombrar RSA como indiscutible rey. Otras cifras muy usadas son ElGamal y las basadas en curvas elípticas, a la que dedicaré un artículo en cuanto saque algo de tiempo. Después de más de 20 años de uso, que sepamos, RSA sigue siendo un criptosistema seguro. En cualquier caso, como ya os conté en otro artículo, si se usan valores pequeños para el módulo, éste es fácilmente factorizable en un tiempo razonable. Sin embargo, éste no es el único problema que puede presentar RSA. En este artículo vamos a hacer un repaso de algunas de las posibles debilidades de este criptosistema y, por lo tanto, posibles vectores de ataque.

¿Qué es la Criptografía Cuántica?

La computación cuántica se va perfilando como la próxima revolución en computación. Es todo un cambio de paradigma en la forma de procesar información, aunque probablemente, los computadores cuánticos del futuro serán de propósito específico y no ordenadores para uso general como los que usamos ahora. Una de estas aplicaciones específicas es la Criptografía Cuántica, que promete crear un canal cifrado teóricamente inexpugnable. Desgraciadamente, la computación cuántica también llega con la promesa de poner en jaque a la actual criptografía de clave pública. Analicemos por qué.