10529 Informática Empotrada y Aplicaciones

Anuncio
10529 Informática Empotrada y Aplicaciones
Máster en Tecnologı́as de la Información y las Comunicaciones
Universitat de les Illes Balears
29 de enero de 2011
1.
Introducción
Esta práctica consiste en resolver una serie de problemas con ayuda de Matlab. Hay que presentar una única
documentación que detalle tanto el código fuente utilizado como los resultados obtenidos. Cada grupo ha de trabajar
con un conjunto diferente de clases y caracterı́sticas, de acuerdo con la siguiente tabla:
grupo
1
2
3
4
5
6
7
8
ejercicios con 2 clases: ω1 - ω2
apple - bird
chopper - classic
apple - bell
bell - carriage
carriage - cellular phone
carriage - chopper
hammer - ray
rat - ray
ejercicios con 3 clases: ω1 - ω2 - ω3
apple - bird - children
chopper - classic - hammer
apple - bell - fork
bell - carriage - children
carriage - cellular phone - ray
carriage - chopper - classic
hammer - ray - shoe
rat - ray - shoe
Los datos de esta práctica se encuentran en el fichero http://dmi.uib.es/aortiz/IEA10529/10529 formas.zip. Tras
descargarlo en el directorio de trabajo, y descomprimirlo conservando la estructura de directorios, se creará un directorio por cada forma diferente de la anterior tabla (el nombre del directorio coincide con el de la forma). Cada directorio
contiene 20 imágenes binarias cuyo nombre corresponde a la plantilla ffffffffkk.bmp, donde ffffffff es el nombre de
la forma y kk es el número de imagen (de 1 a 20). Por ejemplo, para leer la imagen ‘k’ de la forma ‘apple’, se podrı́a
utilizar el siguiente comando en Matlab:
img = imread(sprintf(’%s/%s%02d.gif’,’apple’,’apple’,k));
Como documentación, tenéis que seguir las instrucciones de la plantilla que estará disponible en la página web
de la asignatura. Observad que esta documentación es lo único que tenéis que entregar. Si no podéis conseguir una
impresión satisfactoria (p.e. la impresión es en blanco y negro cuando hay gráficos en color y el color es relevante),
aparte de presentar el documento impreso, podéis enviar un e-mail con un PDF del documento.
La fecha tope de entrega del informe de la práctica es el dı́a 5 de Setiembre de 2011.
OBSERVACIONES:
La lista con los números de grupo se encuentra disponible en la página web de la asignatura.
Al final del enunciado puedes encontrar una colección de comandos de Matlab útiles para responder ciertos
apartados de la práctica. En cualquier caso, se recomienda hacer uso del help de Matlab en caso de dudas.
Ejemplo de uso: Desde la consola, help plot
PLOT
Linear plot.
PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
then the vector is plotted versus the rows or columns of the matrix,
whichever line up. If X is a scalar and Y is a vector, disconnected
line objects are created and plotted as discrete points vertically at
X.
...
Se valorará la inclusión de comentarios en las respuestas, ası́ como la claridad, correcta expresión y estructuración
en la presentación de los resultados y programas. En particular se esperan variables con nombres significativos
y programas mı́nimamente comentados.
Alberto Ortiz
1
A. Selección de caracterı́sticas
1. Determina los valores de excentricidad, solidez y extensión para los ejemplares de las clases asignadas al grupo
utilizando como modelo el siguiente código Matlab para la forma apple:
data = zeros(20,4);
for k = 1:20
img = double(imread(sprintf(’%s/%s%02d.gif’,’apple’,’apple’,k)));
% excentricidad, solidez y extensión
rp = regionprops(img,’Eccentricity’,’Solidity’,’Extent’);
% rellenamos ’data’
data(k,1) = rp1.Eccentricity;
data(k,2) = rp1.Solidity;
data(k,3) = rp1.Extent;
data(k,4) = 1; % número de clase: en este caso w1 para el grupo 1
end
2. Representa gráficamente las formas sobre el espacio de caracterı́sticas por parejas de caracterı́sticas: excentricidad
/ solidez, excentricidad / extensión y solidez / extensión. Para ello, utiliza el siguiente fragmento de código para
Matlab como modelo. Este código visualiza en el eje X la caracterı́stica 1 y en el eje Y la caracterı́stica 2:
figure(1); clf; hold on;
plot(data( 1:20,1),data( 1:20,2),’+r’);
plot(data(21:40,1),data(21:40,2),’og’);
plot(data(41:60,1),data(41:60,2),’xb’);
% primera forma/clase, visualizada como ’+’ rojos
% segunda forma/clase, visualizada como ’o’ verdes
% tercera forma/clase, visualizada como ’x’ azules
3. Selecciona la pareja de caracterı́sticas que, por observación visual, separa más los ejemplares de las clases. Ésta
será la pareja de caracterı́sticas que se aplicará en los siguientes apartados de la práctica.
B. Clasificación Bayesiana
1. Calcula la media y la matriz de covarianza para cada una de las clases asignadas al grupo, utilizando las
18 primeras imágenes de cada grupo. Asume para el resto de este apartado que la función de densidad de
probabilidad para cada clase obedece a una distribución Gaussiana con los parámetros respectivos calculados.
2. Diseña un clasificador Bayesiano para las dos (2) clases asignadas al grupo, utilizando las medias y matrices de
covarianza calculadas en el apartado B.1. Describe formalmente el clasificador siguiendo la notación vista en clase:
si g12 (x) = “expresión en x”> 0, entonces x → ω1 , sino x → ω2 . Por ejemplo, si g12 (x) = 3x21 + 2x1 x2 − 4x2
la descripción formal del clasificador serı́a:
si 3x21 + 2x1 x2 − 4x2 > 0, entonces x → ω1 , sino x → ω2
3. Representa gráficamente la curva de decisión sobre la misma figura del apartado A.2.
4. Determina la clase en la que son clasificados los dos ejemplares de cada clase no utilizados para el entrenamiento.
5. Diseña un clasificador Bayesiano para las tres (3) clases asignadas al grupo, asumiendo que las clases comparten
la misma matriz de covarianza. Para ello, utiliza como matriz de covarianza común el promedio de las tres
matrices de covarianza resultantes del apartado B.1. Describe formalmente el clasificador siguiendo la notación
vista en clase: si g12 (x) = “expresión en x”> 0, entonces ...
Por ejemplo, si g12 (x) = 3x21 + 2x1 x2 − 4x2 la descripción formal del clasificador serı́a:
si 3x21 + 2x1 x2 − 4x2 > 0, entonces ...
6. Representa gráficamente las curvas de decisión sobre la misma figura del apartado A.2.
7. Determina la clase en la que son clasificados los dos ejemplares de cada clase no utilizados para el entrenamiento.
Alberto Ortiz
2
C. Funciones de discriminación lineales
1. Aplica la variante del bolsillo del algoritmo del perceptrón a las dos (2) clases que corresponden al grupo. Utiliza
los 18 primeros ejemplares para el entrenamiento.
2. Representa gráficamente la curva de decisión sobre la misma figura del apartado A.2.
3. Determina la clase en la que son clasificados los dos ejemplares de cada clase no utilizados para el entrenamiento.
D. Agrupamiento jerárquico aglomerativo
1. Agrupa los ejemplares de las tres (3) clases asignadas al grupo empleando agrupamiento jerárquico aglomerativo
y considerando las siguientes combinaciones:
distancia entre puntos: euclı́dea
algoritmos de agrupamiento: vecino más próximo - vecino más lejano - de varianza mı́nima
Para ello, utiliza los siguientes comandos de Matlab:
P = pdist(X,distancia) calcula la matriz de proximidad P para la matriz de ejemplares X empleando la
distancia indicada: entre otras, ’euclidean’, para la distancia euclı́dea, ’cosine’ para el coseno (= 1 - el coseno
del ángulo que forman los ejemplares), ’chebychev’ para la distancia L∞ y ’cityblock’ para la distancia city
block.
L = linkage(P,algoritmo) calcula el árbol jerárquico correspondiente a la matriz de proximidad P y
el algoritmo indicado: entre otros, ’single’, para el algoritmo del vecino más próximo, ’complete’, para el
algoritmo del vecino más lejano, y ’ward’, para el algoritmo de varianza mı́nima.
dendrogram(L) visualiza el dendrograma correspondiente al árbol jerárquico L.
T = cluster(L,’MaxClust’,nc) devuelve, para el número de clusters nc, el vector T, cada fila del cual
indica en qué cluster ha sido agrupado el ejemplar de la misma fila de la matriz X.
2. Visualiza el resultado de la clasificación (dendrograma y clasificación) para cada combinación y determina los
ejemplares mal agrupados.
E. Agrupamiento por optimización
Repite el apartado D para el algoritmo k-means. Para ello, emplea la función:
T = kmeans(X,nc,’Distance’,’sqEuclidean’,’Replicates’,ni)
donde nc es el número final de clusters requerido, se emplea la distancia euclı́dea y se pide que el algoritmo se ejecute ni
veces para no depender de la elección inicial de centroides (p.e. 10 veces). Otras distancias disponibles son: ’cityblock’
y ’cosine’. La distancia L∞ no está implementada.
Si alguna ejecución da problemas, lee la ayuda del algoritmo que proporciona Matlab, en particular lo que hace
referencia a ’EmptyAction’ y ’Display’.
Por tanto:
1. Agrupa los ejemplares utilizando el algoritmo k-means tal y como se ha indicado, pidiendo una agrupación en
tres (3) clases y considera las distancias ’sqEuclidean’, ’cityblock’ y ’cosine’.
2. Visualiza el resultado de la clasificación para cada caso y determina los ejemplares mal agrupados.
Alberto Ortiz
3
2.
Código MATLAB útil
Visualización en la figura n de una colección de puntos dada por los vectores x e y:
figure(n); plot(x,y,’+’);
Visualización en la figura n de una colección de puntos dada por los vectores x e y en trazo
continuo:
figure(n); plot(x,y,’-’);
Visualización de varias colecciones de puntos sobre la misma figura:
figure(n); clf; hold on; plot(x1,y1,’r’); plot(x2,y2,’g’); ...
(clf reinicia la figura y hold on evita que el segundo plot borre los efectos del primero.)
También:
figure(n); plot(x1,y1,’r’,x2,y2,’g’,...);
Visualización de la recta ax + b, p.e. para el intervalo [-10,7] con incremento 0.1:
x = -10:0.1:7; figure(n); plot(x,a*x+b);
Visualización del polinomio p1 x2 + p2 x + p3 , p.e. para el intervalo [0,100] con incremento de 1:
x = 0:100; figure(n); plot(x,p(1)*x.^ 2 + p(2)*x + p(3));
Visualización de una curva dada en forma implı́cita, p.e. 4x2 +3y = 5 y el dominio x ∈ [−10, 10], y ∈ [0, 5]:
figure(n); ezplot(’4*xˆ2 + 3*y - 5’,[-10 10 0 5]);
Alberto Ortiz
4
Descargar