mcom2_u3_a2_mapl

15
Computación II. Unidad III. LICENCIATURA EN MATEMÁTICAS COMPUTACIÓN II. UNIDAD 3. MINERÍA DE DATOS. ACTIVIDAD 2. Minería sobre el caso de estudio. María de la Luz Pérez Limón. AL12525958. Facilitador: Aldo Álvarez Jurado.

Upload: marialuzperez

Post on 02-Dec-2015

221 views

Category:

Documents


3 download

DESCRIPTION

Curso de Computación IIActividad 2, Unidad 3

TRANSCRIPT

Page 1: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

LICENCIATURA EN MATEMÁTICAS

COMPUTACIÓN II.

UNIDAD 3. MINERÍA DE DATOS.

ACTIVIDAD 2.Minería sobre el caso de estudio.

AL12525958.Facilitador: Aldo Álvarez Jurado.Grupo:

Page 2: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

ACTIVIDAD 2.

MINERÍA SOBRE EL CASO DE ESTUDIO.

A través de esta actividad, realizarás un análisis y después una conclusión

sobre un conjunto de datos en el caso de estudio.

Instrucciones.

1. Crea un script de Python donde escribas las instrucciones seguidas

para realizar tu análisis paso a paso.

2. Revisa los documentos sobre la descomposición en valores singulares

que se encuentran en la sección Para saber más para ampliar tu

conocimiento sobre el uso de SVD.

3. Escribe un pequeño resumen en un documento de texto.

4. Usando SVD sobre las observaciones determina el rango de la matriz

de observaciones. 

5. Grafica  los valores singulares. 

6. Determina, a partir de la matriz de valore singulares, qué variables no

son tan importantes para explicar los datos originales. 

7. Guarda y envía tu script y documento a tu Facilitador(a) y espera la

retroalimentación.

Page 3: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

1. CREA UN SCRIPT DE PYTHON.

Page 4: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

2. DESCOMPOSICIÓN EN VALORES SINGULARES.

La Descomposición en Valores Singulares (SVD-Singular Value Decomposition), juegan un rol importante en el álgebra lineal numérica, y tienen notables aplicaciones en varias áreas, como la visión artificial, recuperación de información en bases de datos, procesamiento de señales e imágenes, computación lingüística, entre muchas otras. Son esenciales para el cálculo confiable de cantidades tan importantes, como el rango de una matriz, o la distancia de una matriz no singular al conjunto de las matrices singulares, por lo cual es uno de los métodos de factorización más conocidos.

DEFINICIÓN.

Page 5: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

Dada una matriz A de dimensiones m ×n con m ≥n , su descomposición en valores singulares viene dada por:

A=U Σ V T=∑j=1

J

σ j u j vT

j

Donde la matriz U de dimensiones m ×m está compuesta de los vectores singulares izquierdos, la matriz V T de dimensiones n × n está compuesta por los vectores singulares derechos y la matriz Σ es la matriz diagonal compuesta por los valores singulares ordenados de mayor a menor, es decir, Σ=diag [σ 1 , …, σ m] estos valores pues son no negativos y ademásσ 1≥ σ2 ≥ …≥ σ r>0 con r ≤ n , es decir son decrecientes.

Los valores singulares se obtienen como las raíces cuadradas de los autovalores de la matriz de covarianza AT A .

Por ejemplo, si se tiene la matriz:

A=(1 11 00 1)

La matriz de covarianza es:

AT A=(2 11 2)

Sus autovalores son λ1=3 , λ2=1 y por tanto sus valores singulares son σ 1=√3 ,σ 2=√1.

Ahora bien, el rango r de la matriz A se puede obtener del número de valores singulares no nulos de la matriz Σ.

3. SVD SOBRE LOS DATOS EN EL CASO DE ESTUDIO “VINOS”.

Como reseña, en la unidad dos, se creó el archivo “wine.txt” a partir del archivo “wine.data” para tener los datos, digamos, mejor organizados, entonces para hacer la descomposición SVD de los datos en el caso de estudio de los vinos, se puede realizar por medio de Python. En primer término, abrimos los datos de “wine.txt” y los

Page 6: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

colocamos en la matriz L, que luego transformaremos en una array, por medio de la librería Numpy.

Codificación:

# -*- coding: utf-8 -*-# Crear archivo txt de vinos.dataimport numpy as npimport csvfrom matplotlib import pyplot as pltfrom numpy.linalg import svdp=csv.reader(open('C:\wine.txt','r'), delimiter=',')L=[]for i in p: L.append(map(float, i))K=np.array(L)Para realizar la descomposición de la matriz K, se pone:U,s,V = svd(K, full_matrices=False)

Como vimos en el resumen, el rango de la matriz K es el número de valores singulares de la matriz s que no son nulos. Para saber los elementos de s ponemos la siguiente instrucción que nos devuelve los elementos de la diagonal principal de s, que en este caso son 14 y por tanto el rango de K es 14.

b=s.shapeprint b

4. GRÁFICA DE LOS VALORES SINGULARES.

Para la graficación de la posición de los valores, formamos un array que corresponde al eje x (las posiciones de los valores singulares) y para el eje y utilizamos s que en Python, es un array. Las instrucciones son las siguientes:

x=[0,1,2,3,4,5,6,7,8,9,10,11,12,13]plt.semilogy(x,s,'ro')plt.semilogy(x, s)

Page 7: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

plt.title('VALORES SINGULARES')plt.axis('normal')plt.xlabel('Posicion')plt.ylabel('Valores_singulares')plt.xlim(-1,14)plt.ylim(0,130000)plt.grid(True)plt.show()

En este tipo de gráfica, se recomienda el uso de una escala logarítmica para el eje y debido a los valores numéricos de los valores singulares; veamos, en la gráfica siguiente, se muestra la misma escala natural tanto del eje x como del y.

Como ejemplo, por medio de estas gráficas podemos observar , el orden decreciente de los valores singulares, lo que indica que la mayor cantidad de información relevante está contenida para los valores singulares más grandes. Sin embargo, de la gráfica parece que a lo más son sólo dos de estos valores, pero esto se debe a la escala pues los últimos dos valores son mucho mayores numéricamente que los demás; en la segunda, al emplearse la escala logarítmica para el eje y, se puede tener una idea más precisa y determinada de los valores singulares, por lo que podemos decir que con la mitad de éstos, los datos o variables correspondientes son las más importantes para la clasificación inicial.

Page 8: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

En las gráficas siguientes, observamos la gráfica de los valores singulares calculados con Python, la primera gráfica, se toma a ”clase” como atributo, la segunda, analiza los demás atributos.

Codificación:

#Descomposición en valores singulares devuelve los siguientes valores# Método svd# U: Matriz unitaria.# s: Valores singulares de cada matriz.# V: Matriz unitaria.fig, axes = plt.subplots(nrows=1, ncols=2)fig.tight_layout()s=[0,0]#Lectura del Archivo wine.data y caracteristicasdata = np.genfromtxt("C:\Users\Salvador\Desktop\wine.data", dtype=float, delimiter=',', skip_header=0)y_wine = data[:,0]X_wine = data[:,1:]#Descomposición Singular incluyendo primera columnaU,s[0],Vt = np.linalg.svd(data, full_matrices=False)S=np.diag(s[0])S[:14,:14] = np.diag(s[0])printprint "La validación de A=U*S*V es ", np.allclose(data,np.dot(U,np.dot(S,Vt)))printprint "Los valores Singulares 's'"print s[0]print#Descomposición Singular sin incluir la primera columnaU,s[1],Vt = np.linalg.svd(X_wine, full_matrices=False)S=np.diag(s[1])S[:13,:13] = np.diag(s[1])printprint "La validación de A=U*S*V es ", np.allclose(X_wine,np.dot(U,np.dot(S,Vt)))printprint "Los valores Singulares 's'"print s[1]printfor ax,i,c,text in zip(axes,(0,1),('b*-','r*-'),('con','sin')):ax.set_title("Valores Singulares "+text+" Clase")ax.set_xlabel("")ax.set_ylabel("")ax.plot(s[i],c)plt.show()

Page 9: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

Los resultados del Script son los siguientes, donde el primer vector pertenece a la primera gráfica y el segundo vector a la segunda.

5.- ATRIBUTOS NO IMPORTANTES PARA EXPLICAR DATOS ORIGINALES.

El análisis se realiza sobre una matriz de datos y a través de la descomposición de la matriz en valores singulares (SVD) se puede obtenerla calidad de representación de los ejes. A continuación, se muestra el cálculo de valores propios de la matriz factorizada y la cantidad de información capturada por cada eje.

Page 10: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

Códificación:#Analisis de los Atributos y su variabilidadS13=s[1]**2Sum13=eval('+'.join(map(str,S13)))Nombres13 = ["Alcohol ","AcidoMalico ","Ceniza ","AlcalinidadCeniza ","Magnesio ","TotalFenoles ","Flavonoides ","FenolesNoFlavonoides","Proantocianinas ","IntensidadColor ","Matiz ","OD280-OD315 ","Prolina "]evals13 = np.linalg.eigvals(np.dot(X_wine.T,X_wine))#Calidad de Representación de los ejesprint 'Atributos \t\t Valor propio \t Variablidad Explicada \t Variabilidad Acumulada'SumTotal=0for i in range(0,13):np.set_printoptions(formatter={'float': '{: 0.3f}'.format})SumTotal=SumTotal+S13[i]/Sum13*100print Nombres13[i]+"\t"+str(S13[i])+"\t"+str(S13[i]/Sum13*100)+"% \t"+str(SumTotal)

Resultados en la pantalla:

Considero que los atributos Alcohol, Ceniza e IntensidadColor no describen correctamente a ninguno de los 3 clúster, por lo que podemos excluirlos del análisis.

Relación entre variables de los valores singulares.

Page 11: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

Page 12: MCOM2_U3_A2_MAPL

Computación II. Unidad III.

CONCLUSIÓN.Podemos observar que el clúster 1 cuenta con valores intermedios con fuerza en las dimensiones, Matiz, Flavonoides, Proantocianinas,Total Fenoles, Prolina y Magnesio; el 2 arroja resultados no favorables de todos los indicadores y el 3, cuenta con valores intermedios con fuerza en las dimensiones, Alcalinidad , Ceniza, Fenoles, NoFlavonoides, Ácido Málico.Entonces, se concluye que los atributos Alcohol, Ceniza e Intensidad ,Color los podemos excluir al realizar el análisis.

Fuentes consultadas:Curso de Computación 2, Programa desarrollado unidad 3, UNADM, 2015.

http://www.mate.unlp.edu.ar/practicas/70_18_0911201012951.pdfhttp://web.mit.edu/be.400/www/SVD/Singular_Value_Decomposition.htm

http://www.puffinwarellc.com/index.php/news-and-articles/articles/30-singular-value-decomposition-tutorial.html

http://www.portalprogramas.com/software-libre/rankinguniversidades/2014/analisis-biplot