martes, 27 de mayo de 2014

Big Data: Gestión de datos no estructurados


La gestión de los datos no estructurados se ha convertido en uno de los principales retos a los que hacen frente las compañías en lo relativo a gestión de información. En este post damos una breve introducción al tratamiento de los mismos y las problemáticas más comunes en su gestión.






Definición de datos no estructurados:

Una posible definición de datos no estructurados,  son aquellos datos no almacenados en una base de datos tradicional. La información no estructurada no puede ser almacenada en estructuras de datos relacionales predefinidas.
Se pueden establecer diferentes clasificaciones, vamos a considerar dos de ellas.

  • Datos no estructurados y semiestructurados. Los datos semiestructurados serían aquellos datos que no residen de bases de datos relacionales, pero presentan una organización interna que facilita su tratamiento, tales como documentos XML y datos almacenados en bases de datos NoSQL.
  • Datos de tipo texto y no-texto. Datos no estructurados de tipo texto podrían ser datos generados en las redes sociales, foros, e-mails, presentaciones Power Point o documentos Word, mientras que datos no-texto podrían ser ficheros de  imágenes jpeg, ficheros de audio mp3 o ficheros de video tipo flash.

Características de datos no estructurados:

Las principales características de los datos no estructurados son las siguientes:
  • Volumen y crecimiento: el volumen de datos y la tasa de crecimiento de los datos no estructurados es muy superior al de los datos estructurados. Por ejemplo, twitter genera 12 Terabytes de información cada día. De acuerdo con Gartner, la tasa anual de crecimiento de datos es del 40 a 60 por ciento, pero para los datos no estructurados en empresas, la tasa de crecimiento puede llegar al 80 por ciento (informe 2012).
  •  Orígenes de datos:  El origen de los datos es muy diverso: datos generados en redes sociales, datos generados en foros, e-mails, datos extraídos de la web empleando técnicas de web semántica, documentos internos de la compañía (word, pdf, ppt).
  • Almacenamiento: Debido a su estructura no podemos emplear arquitectura relacional, siendo necesario trabajar con herramientas ‘Big Data’, siendo crítico en estas arquitecturas los aspectos relacionados con la escalabilidad y paralelismo. Según el tipo de dato se impone el almacenamiento cloud.  Monitorizar la frecuencia de uso y la detección de datos inactivos son aspectos críticos de cara a reducir costes de almacenamiento.
  • Terminología e idiomas: La terminología es una cuestión crítica tratando datos no estructurados de tipo texto. Es habitual llamar a lo mismo de diferentes formas, de tal modo que es necesario una racionalización de la terminología. Otra cuestión es el idioma en el que se he generado la información tratada. 
  • Seguridad: Hay que considerar que algunos datos no estructurados de tipo texto, pueden no ser seguros. Por otra parte el control de accesos a los mismos es complejo debido a cuestiones de confidencialidad y la difícil clasificación del dato.

Tratamiento de dato no estructurados:

Las principales cuestiones a considerar en el tratamiento de información no estructurada son las siguientes:



  • Crear una plataforma escalable (infraestructura y procesos) que permita tratar grandes cantidades de datos.  Las tecnologías RDBMS son insuficientes para tratar información no estructurada.  Es necesaria una capacidad de almacenamiento y una capacidad de proceso escalable.  Teniendo en cuenta que el coste económico de mantener plataformas escalables, hay que considerar la opción cloud. Desde el punto de vista de los procesos, en ocasiones es interesante utilizar in-memory analytics.
  • Añadir información/estructura complementaria a los datos no estructurados. Es importante añadir algún tipo de estructura a los datos no estructurados que ayude a su tratamiento. Por ejemplo, en una colección de tweets de redes sociales puede ser interesante añadir  campos tales como el idioma, la localización geográfica para su posterior procesado. Esta estructura adicional que añadimos debe ser modelizada de cara a estar en constante evolución.
  • Crear conjuntos reducidos de datos que sean representativos. Dado el volumen ingente  de información, es importante trabajar con muestras de datos que sean estadísticamente representativos sobre los datos a analizar. Muchos análisis pueden llevarse a cabo con un grado de exactitud razonable, utilizando conjuntos de datos que son más pequeños en un orden de magnitud que la información en bruto.
  • Desarrollo de algoritmos. Hay diferentes tipos de aproximación hacia la información no estructurada. Por ejemplo, para procesos de text mining, puede utilizarse natural language processing combinado con redes neuronales. Otras técnicas como redes bayesianas permiten descubrir patrones sobre múltiples dimensiones. Son importantes también las técnicas de visualización de datos.
  •  Procesos de depuración/limpiado de datos. Dado el ingente volumen de datos, se convierte en crítico la correcta gestión del histórico de datos. Detección de datos no usados o de frecuencia de consulta muy baja con objeto de limpiar información y liberar espacio.

Ejemplo sencillo tratamiento datos no estructurados (redes sociales):

Dada la variada naturaleza de los datos no estructurados, hay infinidad de posibles procesos relacionados con ellos.  A continuación mostramos un sencillo ejemplo de tratamiento de datos provenientes de redes sociales. El objetivo de este análisis de datos es conocer la percepción que existe sobre el precio de determinado producto en twitter.


  • Extracción:  Utilizando una clase de java (ejemplo twitter4j) leemos el feed de Twitter disponible en https://twitter.com/search/realtime. Añadimos a los campos disponibles calificaciones del tipo: idioma, localización geográfica.
  • Transformación: Filtramos todos aquellos tuits que contengan el nombre del producto. Refinamos el filtro introduciendo campos del tipo (“precio” ) +  (“barato”, “caro”, “económico” etc..) , teniendo en cuenta el idioma en el que  se generan lo tuits. Valorar la opción en base al volumen de obtener una muestra representativa de los datos extraídos y filtrados.
  • Volcado a BBDD : Insertamos en una tabla el registro del tuit con la calificación identificada (idioma, localización geográfica).
  • Informes: Creamos informe que permita realizar análisis por tiempo y campos de calificación. Hay que considerar que este informe puede ser actualizado en tiempo real. 

viernes, 2 de mayo de 2014

Correlación entre variables y regresión lineal en SAS

Dentro de las actividades habituales en minería de datos, se encuentra el estudio de correlaciones entre variables. En este post vamos a realizar un ejemplo sencillo de estudio de correlación entre variables.

Nuestro conjunto de datos de entrada es el que se muestra a continuación y nuestro objetivo es determinar si existe correlación entre las variables var1 y var2.


var1
var2
1
6
2
9
3
10
4
12
5
16
6
18
7
19
8
21
9
22
10
24
11
29
12
30
13
34
14
32
15
39
16
38
17
40
18
44
19
48
20
46

En primer lugar utilizamos el procedimiento proc corr de SAS con objeto de obtener la matriz de correlación entre las 2 variables.

proc corr outp=tabla outs=correl;
var var1 var2;
run;

MEAN

10.5
26.85
STD

59.160.797.831
13.031.439.715
N

20
20
CORR
var1
1
0.9954887218
CORR
var2
0.9954887218
1

En la matriz se obtiene el coeficiente de correlación de Pearson que al ser mayor que cero indica que existe una correlación positiva y al ser próxima a 1, indica que la correlación es fuerte.

Una vez detectada la correlación, el siguiente paso es obtener qué tipo de relación existe entre las variables. Como primer paso pintamos un gráfico con var2 en el eje-y y var1 en el eje-x, utilizando el procedimiento proc gplot.

proc gplot data=tabla;
plot var2*var1;
run;



El gráfico muestra una posible relación lineal, de modo que utilizamos el procedimiento proc reg, con objeto de obtener los coeficientes de la regresión lineal.

proc reg data=tabla;
model var2=var1;
run;

The REG Procedure
Model: MODEL1
Dependent variable: var2
Number of Observations Read
20
Number of Observations Used
20
 
Analysis of Variance
Source
DF
Sum of Squares
Mean Square
F Value
Pr > F
Model
1
3190.06353
3190.06353
1573.77
<.0001
Error
18
36.48647
2.02703


Corrected Total
19
3226.55000



 
Root MSE
1.423737
R-Square
0.988692
Dependent Mean
26.850000
Adj R-Sq
0.988064
Coeff Var
5.302557

 
Parameter Estimates
Variable
DF
Parameter Estimate
Standard Error
t Value
Pr > |t|
Intercept
1
3.85263
0.66137
5.83
<.0001
var1
1
2.19023
0.05521
39.67
<.0001

Obtenemos como resultado la siguiente regresión lineal:

var2 = 2,19*var1 + 3,85

Lógicamente los pasos a dar una vez detectada una correlación entre variables dependerá del tipo de relación que hayamos detectado.

Formación SAS