4. Marco teórico
4.1.8. Algoritmo AdaBoost
AdaBoost es, entre los algoritmos de boosting, el más popular y quizá también el más importante históricamente ya que fue la primera formulación de un algoritmo que pudo aprender a partir de los clasificadores débiles.
El algoritmo AdaBoost para categorización binario, en general, funciona de la siguiente manera: 1. Forma un conjunto grande de características sencillas
2. Inicializa pesos para entrenar imágenes 3. Para T iteraciones:
a) Normalización de pesos,
b) Para las características disponibles del conjunto, entrenamiento de un clasificador utilizando solo una característica y evaluación del error de formación
c) Selección del clasificador con el error más bajo,
d) Actualización los pesos de las imágenes de formación: aumenta el peso si el clasificador clasifica de forma errónea el objeto, disminuye si lo hace correctamente
4.2.
Fugas de datos
La fuga de datos, o en inglés data leakage, es la creación de información adicional e inesperada en los datos de entrenamiento, permitiendo a un modelo de aprendizaje automático hacer predicciones excesivamente optimistas. Las fugas de datos hacen parecer que un modelo es muy preciso hasta que llega el momento de probarlo en la realidad, momento en el cual se comprueba que es altamente impreciso. Pueden ser producidos por fallos humanos o mecánicos. Las fugas de datos se pueden producir: por el tipo de características utilizadas o por un indebido manejo de datos.
Tipos de fugas de datos:
Por el tipo de características utilizadas:
Se produce cuando las características utilizadas para predecir los resultados contienen datos con los que es imposible contar en el momento de hacer la predicción.
Un ejemplo es si queremos predecir el precio que va a tener un producto con un mes de antelación y utilizamos una variable que indica qué precio tendrá el producto 2 semanas antes.
Por un manejo incorrecto de los datos:
Este tipo de fuga de datos se produce cuando tomamos decisiones en función de los datos de test o de las predicciones.
Esto sucede cuando se hace un filtrado de características entrenando dicho filtro con el conjunto completo de datos, o con subconjuntos de datos de los que no dispondríamos en un escenario real. La manera correcta de manejar los datos es:
1. Dividir las características que forman el conjunto de datos en subconjunto de características predictoras (X) y características a predecir (y).
2. Dividir las muestras que forman el conjunto de datos en subconjunto de muestras de entrenamiento (X_train e y_train) y subconjunto de muestras de test (X_test e y_test), 3. El filtro de características se entrena utilizando las características predictoras de X_train. 4. Una vez se ha entrenado el filtro, se aplica la transformación que produce a las características
predictoras de los subconjuntos de entrenamiento y test.
De esta manera habremos aplicado el filtro de características tomando las decisiones de filtrado basándonos únicamente en las características predictoras del subconjunto de entrenamiento.
5
Metodología y diseño
Para llevar a cabo el estudio objeto de este proyecto se ha implementado una herramienta que cumple los siguientes requisitos:
5.1.
Requisitos funcionales
El programa es capaz de:
Leer el conjunto de ficheros binarios de goodware y malware, Hacer el análisis estático de cada uno de los ficheros binarios,
Traducir los reportes de análisis estático de cada fichero binario a vector numéricos, Entrenar varios modelos de aprendizaje automático supervisado diferentes,
Obtener de cada modelo sus predicciones,
El programa cumple la anterior funcionalidad siguiendo los siquientes requisitos: Tener probada su ejecución en un sistema Debian GNU/Linux.
Comportamiento configurable por medio de un fichero de configuración.
Permitir configurar el comportamiento del programa en función de una etiqueta introducible por argumento que coincide con una etiqueta del fichero de configuración,
No existen valores mágicos dentro del código, a lo sumo en constantes definidas al principio del código.
5.2.
Requisitos software.
La funcionalidad descrita en los requisitos funcionales se consigue con un software que cumple las siguientes especificaciones:
se escribe en lenguaje Python 3.6,
puede hacer uso de las herramientas del sistema que se consideren convenientes, como es el caso de readelf y file.
lee la configuración de un fichero de configuración que contará con las siguientes secciones: • sección de valores por defecto.
• sección de configuraciones especificas que el usuario puede elegir en el momento de ejecutar el programa a través de un argumento de entrada.
utiliza un logger para los mensajes informativos o de error que deban guardarse en un fichero de log,
contiene la clase Dataset, la cual describe la forma y funcionalidad que necesita tener nuestro dataset.
contiene la clase Binary_file, la cual describe la forma y funcionalidad que representa cada fichero binario.
funcionalidad probada en el mismo sistema del cual procede el dataset analizado, es decir, un sistema Debian GNU/Linux Buster.
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
5.3.
Proceso
Para la realización de este proyecto se han seguido dos caminos que se pueden considerar inversos: del dato al modelo y del modelo al dato.
El flujo habitual de un proyecto de aprendizaje automático es el descrito en 5.1 y corresponde a lo que en este proyecto se ha llamadodel dato al modelo.
Figura 5.1: Flujo de trabajo de aprendizaje automático supervisado Del dato al modelo:
1. Elección del dataset.
2. Elección de las herramientas a utilizar.
3. Análisis estático y generación de submatrices de características.
4. Filtrado de características por limitaciones de computabilidad por el criterio de menor varianza. 5. Selección de las K mejores características para clasificación por el criterio de Chi².
6. Entrenamiento de los modelos estadísticos elegidos, predicción y validación de resultados. 7. Análisis critico sobre los resultados obtenidos.
Además se ha realizado un camino lógicamente inverso, al cual hemos llamado del modelo al dato, que ha consistido en identificar qué características o palabras corresponden a unos ciertos vectores de características. Este proceso se ha hecho con el objetivo de conocer mejor la información basada en datos utilizada por los algoritmos para su toma de decisiones. Este procedimiento permitirá llegar a un modelo de detección de malware.
Del modelo al dato:
8. Reiteración de las fases 5, 6 y 7 con diferente número de K-mejores características. 9. Identificación de las características utilizadas.
10. Conclusiones.