Proyecto Semestral : Análisis de Datos de Solotodo

El objetivo de este proyecto es realizar análisis sobre los datos extraídos del sitio “Solotodo.com” el cual corresponde a una empresa que se dedica al seguimiento de los precios y características de una gran variedad de productos tecnológicos que se venden en Chile, y que presta servicios a otras compañías como Daewoo, LG, Toshiba, ASUS, Movistar (indirectamente), y Linio, por mencionar algunas.

Los datos sobre los que se trabajará corresponde a la información publicada por múltiples tiendas con respecto a distintos productos electrónicos que se encuentran a la venta. De esta manera se espera que al realizar minería sobre este conjunto de datos se pueda obtener información relevante con respecto al comportamiento que tienen los productos con respecto al paso del tiempo, ya sea variaciones en su precio, tendencia que se repiten dependiendo de la categoría a que estos pertenecen, etc.

La estructura de este reporte se dividirá en 3 secciones, primero se dará a conocer la información obtenida en la etapa de exploración de los datos, luego se informara los resultados preliminares obtenidos en una etapa de avance del proyecto para finalmente dar a conocer los resultados finales a los que se logró llegar al finalizar el proyecto.

Exploración de Datos

El dataset con el que se trabajo corresponde a una base de datos de alrededor de 11 GB (de forma comprimida) que contiene el historial de los múltiples productos disponibles en las distintas tiendas donde estos son vendidos.

A continuación se presenta parte de la información más relevante que se encontró en esta etapa de exploración la cual se pensó que podría ser un aspecto relevante a analizar cuando se apliquen técnicas de minería sobre estos datos.

  1. El sitio maneja 34 categorías de productos, los cuales se pueden apreciar en la siguiente tabla
Smiley face
  1. Existen 149235877 entidades distintas las cuales corresponden a productos publicados en una tienda en un determinado lapso de tiempo, el mismo producto en tiendas distintas equivalen a diferentes entidades, sin embargo un mismo producto en una determinada tienda que sufre variación en su precio es una sola entidad que contiene un historial de pago diferente.

  2. Existen 23767 productos distintos, en este caso no se hace distinción entre la tienda en que se encuentra el producto.

  3. Los el precio de los productos varían desde los $0 (celulares con planes) a $17.000.000 (televisores de ultima generación)

  4. Dentro de los atributos relevantes a cada entidad que pueden ser útiles al momento de analizar su respectivo valor se encuentran los siguientes datos
  1. La distribución de los distintos productos dependiendo de su categoría se puede apreciar en el siguiente gráfico:

Con esta información obtenida de los datos, si bien en un principio se tenían distintas ideas sobre que tema trabajar, al final se decidió que el aspecto sobre el cual se enfocaría el trabajo corresponderá a analizar el comportamiento que tiene las variaciones de los precios en los determinados productos, de esta manera se espera que al finalizar el análisis se pueda predecir conductas tales como saber en que periodo de tiempo un producto tendrá una alza o baja en su precio ya sea por el periodo del año en que se produce o bien por la categoría a que pertenece, entre otras posibles razones.

Etapa de avance del Proyecto

Como primera etapa de avances del proyecto, se inició por un trabajo de limpieza y pre-procesamiento de los datos, la idea de esta etapa era generar distintas vistas materializadas que concentraran la información de los cambios mensuales de precio de los productos separando estos principalmente por la categoría a la cual pertenezcan. Para tener estos valores se generó un valor mensual del producto el cual correspondería al precio promedio que este tuvo durante el mes, además de obtener el número de variaciones que sufre el precio durante el periodo, este proceso solo se realizó para productos disponibles para el año 2015. La idea de esta etapa era poder distinguir aquellos productos que eran más sensibles a cambios en su precio para posteriormente realizar un análisis más detallado sobre esta categoría o bien tenerla como referencia para compararla con las demás categorías.

En esta etapa de pre-procesamiento y limpieza se redujo de 149235877 historiales a una tabla de 103276 datos, sobre los cuales se aplicaron técnicas de minería de datos.

Para poder analizar los datos, se decidió realizar clusterizacion sobre los datos para ver si se lograba encontrar agrupaciones de los datos según su comportamiento. La idea de esta etapa es utilizar K-means sobre el conjunto de datos para lo cual primero se tiene que determinar el parámetro K, esto se realizó graficando la suma de los errores al cuadrado para distintos valores de K.

Aquí se puede ver que el error comienza a sufrir menores variaciones a partir de un valor de k = 10, por lo que se tomará este valor como parámetro para realizar K-means.

El resultado de aplicar K-means a distintas categorías se puede mostrar en los siguientes gráficos.

Tablets

Impresoras

Lavadoras

celulares

Discos duros

Explicación de los resultados

Como se puede apreciar en los distintos clusters, todos se encuentran cargados hacia el origen (coordenada (0,0) de su gráfico respectivo) donde se concentra la mayoría de los puntos, y dependiendo de la categoría este centro se ve más ramificado, donde claramente las categorías que tienen más productos se ven más dispersos.

Esto se puede deber a que los datos se hayan visto adulterados al momento de realizar la etapa de limpieza de los datos, pues como se mencionó anteriormente, para los días en que no existía información del producto se reemplazó los respectivos null de la base de datos por 0, lo cual claramente puede haber condicionado el comportamiento de los datos.

Etapa final del Proyecto

Exploración de Resultados

En esta última etapa del proyecto se decidió realizar un mejor análisis de los resultados obtenidos en la etapa anterior y a partir de esto ver si los datos se encuentran condicionados a las decisiones tomadas en la etapa de procesamiento o bien se estos reflejan su real comportamiento.

En una primera etapa para analizar de mejor manera los clusteres obtenidos, se pensó que la mala visualización en los respectivos gráficos se podía deber a la reducción de dimensiones que se realiza para poder graficar los distintos resultados. Para analizar este factor, se decidió realizar un análisis de componentes (PCA) la cual corresponde a una técnica que sirve para disminuir la dimensionalidad de un conjunto de datos haciendola independiente de aquellas componente que no entreguen tanta información.

Realizando PCA sobre la categoria de lavadoras se obtienen los siguientes porcentajes acumulativos de varianza:

18.90031  34.06142  45.90095  55.66528  63.25875  69.95843  76.34460  82.07962  87.35456  91.96363  96.09083 100.00000

Ahora tomando los porcentajes absolutos se obtiene:

18.900313 15.161110 11.839527  9.764333  7.593463  6.699683  6.386168  5.735018  5.274948  4.609068  4.127200  3.909169

Como resultado de este primer análisis se puede ver que no se puede eliminar ninguna de las componentes que conforman el cluster pues si bien las componentes más bajas tienen bajo porcentaje de la información, la correlación que existe considerando el resto de las componentes no se puede despreciar.

Análisis más fino de los datos

Como no se pudo extraer mucha información de los resultados obtenidos en las etapas anteriores y considerando que existe la opción de que el comportamiento de los datos haya sido adulterado en la etapa de pre-procesamiento, se decidió volver a trabajar sobre los datos esta vez intentando obtener información más detallada con respecto a las variaciones además de no intentar adulterar los datos de la manera que este cambio genere en el menor impacto posible.

Para esto se decidió realizar agrupaciones semanales en vez de mensuales al momento de analizar los periodos de tiempo de los respectivos productos, de esta manera se espera poder apreciar con mayor precisión si existen periodos específicos en que los productos se encuentran más propensos a variar en su valor.

Otro aspecto donde se cambio el análisis corresponde a considerar las variaciones de precio separando los casos en que estos corresponden a alzas o bajas en su valor. Para realizar esto básicamente se fue comparando pares de semanas consecutivas de tal manera que al realizar la comparación entre los precios se puede apreciar si el precio de un respectivo producto se mantuvo constante o bien sufrió una variación.

El aspecto que tuvo mayor dificultad correspondió a solucionar el problema de los datos faltantes que se encontraban en la base de datos. Esta vez para no rellenar el valor con 0, se decidió rellenar estos valores con el último precio válido encontrado del producto. Con esto se esta suponiendo que en aquellos periodos donde no se tiene información con respecto al producto su precio se mantuvo constante hasta que vuelve a aparecer en el mercado. Si bien este supuesto puede que no refleje de mejor manera el comportamiento real del producto, se piensa que es mejor solución que rellenar los valores faltantes con 0 además que permitirá analizar si el resultado de los clusteres obtenidos en la etapa anterior estaba sujeta a esta decisión. El principal problema que llevó el realizar este nuevo procesamiento sobre los datos es el tiempo que tarda rellenar los valores faltantes dado a que se debía iterar sobre todas las entidades (149235877) y sobre todos los años (2012-2016) y para cada día ver las distintas opciones de pago (por lo general 4 o 5) y copiar esos valores en los faltantes.

149235877*(5*365)*5
## [1] 1.361777e+12

En el computador en que se tenía cargada la base de datos es un i5 4210H, 2.90GHz. 8GB RAM. Se creó un script en python (dado que el proyecto original es en Django) el que podía procesar cerca de 530 entidades por hora por lo que esto hacia imposible poder procesar toda la base de datos en el tiempo restante

149235877/(530*24*365)
## [1] 32.14351

Por esta razón, para poder simplificar el resultado se decidió realizar un análisis sobre una categoría que no posea tantos elementos como lo es la de “Lavadoras y Secadoras”, con esto se espera ver si la modificación realizada entrega mejores resultados para saber si vale la pena realizar un análisis similar para el resto de las categorías.

Repetición de analisis

Del gráfico de cluster ya se puede apreciar que existe mucha menos variación entre los cluster pero igual se hizo un análisis pca pero tampoco se pudieron descartar ningún eje.

dev2.502393 2.482593 2.458402 2.423788 2.414084 2.349063 2.345866 2.332853 2.295432 2.294023 2.283227 2.244610 2.239906 2.208224 2.182576 2.153601 2.130237 2.088901 2.082666 2.070950 2.066824 2.040267 2.008349 1.996723 1.965465 1.961728 1.900384 1.888186 1.882431 1.825628 1.808623 1.792603 1.768688 1.747242 1.732438 1.708656 1.700668 1.682280 1.674255 1.625399 1.593748 1.572258 1.562511 1.533479 1.510870 1.481372 1.471982 1.443917 1.430165 1.382527 1.352523 1.304415

Conclusiones

A partir del trabajo realizado, no se pudo llegar a una clara conclusión con respecto al comportamiento de los precios de los productos. Esto se debió principalmente al manejo de los datos lo cual llevó la mayor parte del trabajo realizado ya sea en la etapa de pre-procesamiento para poder ocupar los datos como comprender los resultados obtenidos.

Si bien al momento de realizar un mejor análisis en la segunda etapa de trabajo no se pudo trabajar con todas las categorias, suponiendo que la categoria escogida puede representar el comportamiento de los demás tipos de productos, al no encontrar una clara predominancia con respecto a sus componenetes principales se puede decir que no se encuentra un cierto comportamiento predominante en los datos, lo cual no ayuda al momento de querer encontrar ciertos patrones o conductas con respecto como evolucionan los precios.