Análisis de datos: Cuando los hechos no son la realidad

Publicado en

Hace ya varios años que se me dio la oportunidad de publicar mi primer artículo, en la revista Software Guru número 28 y el gusto por escribir no me ha dejado desde esa época.

El año pasado tuve la oportunidad de ser autor de un libro[1] para la editorial Packt Publishing, acerca de una de mis grandes pasiones, el Análisis de Datos. En el libro exploro una gran cantidad de algoritmos y ejemplos concretos, siempre tratando de que los capítulos sean auto-contenidos. Debido a mi naturaleza de Ingeniero de Software siempre trato de expresarme con código así que encontraran una gran cantidad de código en cada capítulo. Para el libro, utilizo el lenguaje Python, aprovechando librerías para el análisis de datos y machine learning como Pandas, SciPy, NumPy, matplotlib y mlpy. Para el procesamiento de datos utilizo MongoDB por su flexibilidad y su soporte al paradigma MapReduce y para visualización presento múltiples ejemplos con D3js. En la sección de Biblioteca de la presente edición encontrarán más sobre mi libro “Practical Data Analysis”.

Análisis de Datos

El análisis de datos es el proceso en donde datos crudos son ordenados, limpiados y transformados, con la finalidad de ser usados en métodos que ayuden a explicar el pasado y a predecir el futuro. Sin embargo el análisis de datos no tiene que ver con simplemente procesar números, más bien tiene que ver con hacer preguntas y encontrar respuesta de valor a partir de los datos.

El uso que se le da de forma general al análisis de datos es: el de explicar un fenómeno a través de extraer proporciones, distribuciones y patrones. Cualquier tipo
de fenómeno, ya sea natural, artificial o social, estos fenómenos pueden ser medidos y persistidos en un “dataset”. El entender tus datos generalmente requiere una
combinación de habilidades analíticas, conocimiento del dominio y esfuerzo. El cómputo nos provee de herramientas que facilitan la extracción, limpieza, procesamiento e interpretación de dichos datasets. Herramientas como SQL, R, MongoDB y Hadoop nos permiten manipular datos con diferentes naturalezas y a diferentes escalas. Sin embargo el análisis de datos no es algo nuevo y como vemos en la figura 1 se puede de forma clásica decir que: Si buscamos las causas en los datos estamos usando métodos estadísticos y si queremos extrapolar los datos desde las causas estamos frente a modelos probabilísticos.

Figura 1. Forma clásica del análisis de datos.

El análisis de datos se puede dividir en 3 áreas generales: descriptivo, prescriptivo y predictivo.

El análisis descriptivo es el primer paso que debemos realizar para poder darnos una idea general de la distribución de nuestros datos y de aparentes patrones, para esto podemos ayudarnos de la visualización.

En contraste el análisis prescriptivo nos puede guiar a crear mejores modelos de datos este tipo de análisis no se utiliza directamente, más bien nos sirve para confirmar nuestra intuición acerca de un problema particular, técnicas de reducción de datos como PCA (Análisis de Componente Principal) nos permiten reducir la complejidad del problema y sirven en sí mismos como una forma de clasificación.

Por último el análisis predictivo nos ayuda a desarrollar modelos a través de entender los datos y las circunstancias en las que estos son creados.

Visualización

La visualización es una forma rápida de adentrarnos en datasets (pequeños o grandes) para describir, resumir y explorar de forma directa listas de datos que de otra forma sería muy difícil ver. Algunas de las ventajas de la visualización de datos son:

  • La detección de errores.
  • Encontrar patrones como tendencias.
  • Ayudarnos a seleccionar un tipo de modelo apropiado.
  • Determinar relaciones entre variables.

Sin embargo la visualización es sólo una herramienta del análisis y no un substituto de las habilidades analíticas, o substituto para la estadística o para los modelos predictivos. El Capítulo 3 del libro se dedica enteramente a la Visualización de múltiples tipos de datos con D3js que es una librería de javascript que facilita la visualización vía web que de paso es muy atractiva estéticamente hablando.

Análisis Predictivo

Hay una colección de algoritmos que intentan derivar información predictiva directamente de los datos. La construcción de modelos predictivos tiene por objetivo asistir en las decisiones del mundo real. En el libro me enfoco principalmente en estas familias de algoritmos proveyendo de ejemplos claros implementados en Python o MongoDB, pueden encontrar los códigos de todo el libro disponibles a través de GitHub[2].

Clasificación (Aprendizaje Supervisado)

En la clasificación el algoritmo asigna cada registro a una categoría previamente definida. Hay cuatro tipos de algoritmos para los diferentes problemas enfrentados por el análisis predictivo. Se considera aprendizaje supervisado debido a que las clases son conocidas de antemano, por ejemplo: Spam o No-Spam, Transacción Válida o Transacción Fraudulenta.

En el Capítulo 4 desarrollo un ejemplo de clasificación de Spam a través del algoritmo Naive Bayes y el Capítulo 11 desarrolla un modelo para determinar el sentimiento
(Sentiment Analysis) de mensajes de Twitter usando NLTK que es una librería para procesamiento de lenguaje natural.

Por último en el Capitulo 8 doy una breve introducción a las Máquinas de Soporte Vectorial (SVM) que son uno de los algoritmos más utilizados para clasificación ya que ofrecen excelentes resultados globales. Las SVM utilizan una frontera de decisión (como se muestra en la figura 2) y se apoya de puntos geométricos (Kernels) para crear vectores que se encuentren cerca de la frontera, esto para poder trazar de forma clara donde se dividen las clases de datos (define dónde se separan los puntos rellenados de los vacíos). Ver Figura 2.

Figura 2. Puntos geométricos (Kemeis)

Agrupación (Aprendizaje No-Supervisado)

En los algoritmos de agrupación los datos son organizados en clústeres, por número de categorías, forma y tamaño. Se le llama no supervisados debido a que los datos de los clústeres no son conocidos de antemano. El Capítulo 10 aborda como extraer información de Facebook en forma de un Grafo Social, para después utilizar algoritmos de agrupamiento para poder encontrar subcomunidades como “compañeros de escuela” o “familiares cercanos” sin saber de antemano el número de grupos.

Recomendaciones

Los sistemas de recomendación pueden ser vistos como una forma de agrupamiento donde podemos empezar desde un epicentro (un producto o una persona) y buscamos registros similares o relacionados con el epicentro. Las recomendaciones pueden ser explícitas del comportamiento humano. ¿Quiénes son mis amigos más cercanos?, ¿qué producto me conviene mas de acuerdo a mis preferencias?, ¿qué película me gustaría ver mañana?

El Capítulo 5 muestra paso a paso como crear un Motor de Búsqueda de imágenes sin usar metadatos y recomienda las imágenes más parecidas a la que buscamos.

Predicción de Series de Tiempo

Aquí aplicamos técnicas estadísticas para predecir el siguiente valor de una serie de mediciones con una periodicidad establecida.

En el Capítulo 7 presento un modelo basado en la serie de tiempo de todos los cambios en el precio del oro de los últimos
20 años y propongo una forma de predecir el valor para el siguiente mes.

Me gustaría terminar con palabras del famoso estadista George E. P. Box “todos los modelos están mal, pero algunos son útiles”.

Referencias

[1] Libro Practical Data Analysis http://bit.ly/1co6hOZ
[2] https://github.com/hmcuesta/PDA_Book

Bio

Hector Cuesta-Arvizu (@hmcuesta) es autor del libro “Practical Data Analysis” de la Editorial Packt Publishing. Provee servicios de consultoría en Ingeniería de Software y Análisis de Datos, adicionalmente se desempeña como instructor para NYCE en certificaciones de Desarrollo e Ingeniería de Software. Cuenta con maestría en ciencias de la computación y ha sido Revisor Técnico en los libros “Raspberry Pi Networking Cookbook”, “Raspberry Pi Robotic Projects” y “Hadoop Operations and Cluster Management” para Packt Publishing.