You are on page 1of 13

Computacin II. Unidad III.

LICENCIATURA EN
MATEMTICAS

COMPUTACIN II.
UNIDAD 3. MINERA DE DATOS.
ACTIVIDAD 2.
Minera sobre el caso de estudio.

Mara de la Luz Prez Limn.


AL12525958.
Facilitador: Aldo lvarez Jurado.
Grupo: MT-MCOM2-1501S-B2-001

Computacin II. Unidad III.

ACTIVIDAD 2.
MINERA SOBRE EL CASO DE ESTUDIO.
A travs de esta actividad, realizars un anlisis y despus una conclusin
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 anlisis paso a paso.
2. Revisa los documentos sobre la descomposicin en valores singulares
que se encuentran en la seccin Para saber ms para ampliar tu
conocimiento sobre el uso de SVD.
3. Escribe un pequeo 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 enva tu script y documento a tu Facilitador(a) y espera la
retroalimentacin.

Computacin II. Unidad III.

1. CREA UN SCRIPT DE PYTHON.

Computacin II. Unidad III.

Computacin II. Unidad III.

2. DESCOMPOSICIN EN VALORES SINGULARES.


La Descomposicin en Valores Singulares (SVD-Singular Value
Decomposition), juegan un rol importante en el lgebra lineal numrica, y
tienen notables aplicaciones en varias reas, como la visin artificial,
recuperacin de informacin en bases de datos, procesamiento de seales e
imgenes, computacin lingstica, entre muchas otras. Son esenciales para
el clculo 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 mtodos de factorizacin ms
conocidos.
DEFINICIN.

Computacin II. Unidad III.


Dada una matriz A de dimensiones m n con m n , su
descomposicin en valores singulares viene dada por:
J

A=U V = j u j v T j
T

j =1

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 adems
1 2 r > 0 con r n , es decir son decrecientes.
Los valores singulares se obtienen como las races cuadradas de los
autovalores de la matriz de covarianza A T A .
Por ejemplo, si se tiene la matriz:

( )

1 1
A= 1 0
0 1

La matriz de covarianza es:

( )

A T A= 2 1
1 2

Sus autovalores son


1= 3 , 2 = 1 .

1=3, 2=1

y por tanto sus valores singulares son

Ahora bien, el rango r de la matriz A se puede obtener del nmero de


valores singulares no nulos de la matriz .
3. SVD SOBRE LOS DATOS EN EL CASO DE ESTUDIO
VINOS.
Como resea, 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 descomposicin SVD de los datos
en el caso de estudio de los vinos, se puede realizar por medio de
Python. En primer trmino, abrimos los datos de wine.txt y los

Computacin II. Unidad III.


colocamos en la matriz L, que luego transformaremos en una array,
por medio de la librera Numpy.
Codificacin:
# -*- coding: utf-8 -*# Crear archivo txt de vinos.data
import numpy as np
import csv
from matplotlib import pyplot as plt
from numpy.linalg import svd
p=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 descomposicin 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 nmero de valores
singulares de la matriz s que no son nulos. Para saber los elementos de s
ponemos la siguiente instruccin 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.shape
print b
4. GRFICA DE LOS VALORES SINGULARES.
Para la graficacin de la posicin 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)

Computacin 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 grfica, se recomienda el uso de una escala logartmica para
el eje y debido a los valores numricos de los valores singulares; veamos, en
la grfica siguiente, se muestra la misma escala natural tanto del eje x como
del y.

Como ejemplo, por medio de estas grficas podemos observar , el orden


decreciente de los valores singulares, lo que indica que la mayor cantidad de
informacin relevante est contenida para los valores singulares ms
grandes. Sin embargo, de la grfica parece que a lo ms son slo dos de
estos valores, pero esto se debe a la escala pues los ltimos dos valores son
mucho mayores numricamente que los dems; en la segunda, al emplearse
la escala logartmica para el eje y, se puede tener una idea ms 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 ms
importantes para la clasificacin inicial.

Computacin II. Unidad III.


En las grficas siguientes, observamos la grfica de los valores singulares
calculados con Python, la primera grfica, se toma a clase como atributo,
la segunda, analiza los dems atributos.
Codificacin:
#Descomposicin en valores singulares devuelve los siguientes valores
# Mtodo 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 caracteristicas
data = np.genfromtxt("C:\Users\Salvador\Desktop\wine.data", dtype=float,
delimiter=',', skip_header=0)
y_wine = data[:,0]
X_wine = data[:,1:]
#Descomposicin Singular incluyendo primera columna
U,s[0],Vt = np.linalg.svd(data, full_matrices=False)
S=np.diag(s[0])
S[:14,:14] = np.diag(s[0])
print
print "La validacin de A=U*S*V es ", np.allclose(data,np.dot(U,np.dot(S,Vt)))
print
print "Los valores Singulares 's'"
print s[0]
print
#Descomposicin Singular sin incluir la primera columna
U,s[1],Vt = np.linalg.svd(X_wine, full_matrices=False)
S=np.diag(s[1])
S[:13,:13] = np.diag(s[1])
print
print "La validacin de A=U*S*V es ", np.allclose(X_wine,np.dot(U,np.dot(S,Vt)))
print
print "Los valores Singulares 's'"
print s[1]
print
for 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()

Computacin II. Unidad III.

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

5.- ATRIBUTOS NO IMPORTANTES PARA EXPLICAR DATOS


ORIGINALES.
El anlisis se realiza sobre una matriz de datos y a travs de la
descomposicin de la matriz en valores singulares (SVD) se puede obtener
la calidad de representacin de los ejes. A continuacin, se muestra el
clculo de valores propios de la matriz factorizada y la cantidad de
informacin capturada por cada eje.

Computacin II. Unidad III.


Cdificacin:

#Analisis de los Atributos y su variabilidad


S13=s[1]**2
Sum13=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 Representacin de los ejes
print 'Atributos \t\t Valor propio \t Variablidad Explicada \t Variabilidad
Acumulada'
SumTotal=0
for i in range(0,13):
np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
SumTotal=SumTotal+S13[i]/Sum13*100
print
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 clster, por lo que podemos excluirlos del
anlisis.
Relacin entre variables de los valores singulares.

Computacin II. Unidad III.

Computacin II. Unidad III.

CONCLUSIN.
Podemos observar que el clster 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 Mlico.
Entonces, se concluye que los atributos Alcohol, Ceniza e Intensidad ,Color
los podemos excluir al realizar el anlisis.

Fuentes consultadas:
Curso de Computacin 2, Programa desarrollado unidad 3, UNADM, 2015.
http://www.mate.unlp.edu.ar/practicas/70_18_0911201012951.
pdf
http://web.mit.edu/be.400/www/SVD/Singular_Value_Decomposition.htm
http://www.puffinwarellc.com/index.php/news-and-articles/articles/30singular-value-decomposition-tutorial.html
http://www.portalprogramas.com/software-libre/rankinguniversidades/
2014/analisis-biplot

You might also like