Mi tesis

Decidí escribir sobre mi tesis.

Primero hablaré el porque tome este camino y no pasantía. Lo primero, trabajo para mi mismo y mi compañero, es decir, yo dispongo de mi tiempo. Segundo, trabajar usualemente es algo muy mecánico y en la cual uno no toca temas interesantes  de la teoría de la computación, la cual me parece full interesante. Con éstas razones, sumándole de tener un buen compañero y una profesora dispuesta a ser tutora, se dió el proyecto.

Mi tesis trata sobre clustering de datos, el cual hoy en día es usado en diversas aplicaciones, como lo son Data Mining, preprocesamiento de imágenes, etc. Es una búsqueda no supervisada (no se tiene información previa y se clasifica desde cero). Es un problema NP-Hard.

La manera para atacarlo fue mediante metaheurísticas. Éstas son algoritmos, génericos, por ello la palabra meta, que usan suposiciones/intuiciones que no siempre dan resultados exactos, de ahí la palabra heurística. Hay montones: genético, búsqueda Tabu, algoritmo hormiga, PSO, simulated anieling, etc. Mi compañero y yo implementamos 5 de ellas, basadas todas en población e inteligencia colectiva.

La implementación fue en C++. Para este tipo de problemas se quiere un lenguaje que compile a código de máquina. Se busca eficiencia. La diferencia entre C y C++ es mínima en tiempo, siendo este último preferible por ser orientado a objetos.

De todo lo que se hizo, lo que mejor quedó fue el algoritmo genético. Dió los mejores resultados, es muy flexible, eficiente, etc. Mi compañero y yo hemos estados haciendo pruebas, cambiando y mejorando el código para ver si con la tutora, que tenemos abandonada, logramos escribir una publicación. El código ha sido reescrito y mejorado. Ahora es super entendible y a su vez bastante efieciente. Ya en uno de mis post toque el tema de mis intentos y logros por hacer el código mas efieciente.

Es bastante divertido saber la cantidad de lenguajes que usamos. Además de C++, se usan Python, Haskell y Latex, cada uno para cosas diferentes. Para el manejo de versiones se usa GIT. Ya veremos que sucede, posteo unas imágenes para demostrar lo que es capaz de hacer:

Antes:

Peppers

Después:

Peppers, Resultado

Antes:

Lenna

Después:

Lenna, Resultado

Antes:

Fotografía

Después:

Fotografía, Resultado

Finalmente una imagen de la cual se pueden conseguir patrones escondidos:

John Lennon

Eso es todo, hablamos !

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s