´tico – Gu´ Aprendizaje Autom´ Automatico a Gu´ıa de Ejercicios* Departamento de Computaci´ Computacion o ´ n – FCEyN Universidad de Buenos Aires Segundo cuatrimestre 2016
1.
´n Intr Introd oduc ucci ci´ on o
Ejercicio 1.1. Describir 1.1. Describir la tarea, medida de performance y experiencia de los siguientes sistemas: filtro de spam; dictado de textos; ´n biom´ autenticaci´ autenticacion o biom´ etrica (ej: huellas dactilares); etrica detecci´ deteccion o ´ n de fraude en tarjetas de cr´ credito. ´ edito. Ejercicio 1.2. ¿Cu´ 1.2. ¿Cu´ al es la diferencia entre la clasificaci´ al on on y la regresi´ on? on? Ejercicio 1.3. ¿Cu´ 1.3. ¿Cu´ al es la diferencia entre el aprendizaje supervisado, el aprendizaje no supervial sado y el aprendizaje por refuerzos? Ejercicio 1.4. El 1.4. El archivo titanic-train.csv titanic-train.csv contiene datos de pasajeros del naufragio del transatl´ atl´ antico Titanic en 1912, incluyendo edad, sexo, clase del pasaje y supervivencia a la tragedia, antico entre otros. Para una descripci´ on on completa, ver https://www.kaggle.com/c/titani https://www.kaggle.com/c/titanic/data c/data. Analizar los datos y escribir un programa en Python que clasifique a los pasajeros en supervivientes y no supervivientes tan bien como sea posible. No usar ninguna t´ecnica ecnica de Aprendizaje Autom´ atico, atico, por ahora. Calcular el porcentaje de aciertos sobre los mismos datos. Ejercicio 1.5. Sea 1.5. Sea un problema de clasificaci´ on on en el cual cada instancia instancia tiene 2 atributos atributos num´ eriericos (coordenadas x e y ) y pertenece a una de dos clases posibles (blanco o negro). Para cada uno de los tipos de hip´otesis otesis ilustrados a continuaci´ on, on, se pide: describir describir el espacio espacio de hip´ otesis otesis H; identificar los par´ ametros ametros de la hip´ otesis; otesis; describir su sesgo inductivo.
* Algunos ejercicios fueron
adaptados de los libros “Machine Learning”, de Tom Mitchell (McGraw-Hill, 1997); “Pattern Recognition and Machine Learning”, de Christopher Bishop (Springer, 2006); y “An Introduction to Statistical Learning”, de James, Witten, Hastie & Tibshirani (Springer, 2015).
1
2.
Repaso de probabilidades
Ejercicio 2.1. Se tiran dos dados de seis caras balanceados. 1. ¿Cu´ al es la probabilidad de que salga doble seis? 2. Si en uno de los dados sali´ o un n´ umero par, ¿cu´al es la probabilidad de que los dos dados sumen siete? Ejercicio 2.2. Tenemos un mazo de cartas francesas ( {A, 2, 3, ..., 10,J,Q,K } × { ♥, ♦, ♣, ♠}). 1. Si sacamos una carta al azar, ¿cu´ al es la probabilidad de que sea un 10 de Corazones? 2. Si sabemos que la carta elegida es roja (♥ o ♦), ¿c´ omo cambia esa probabilidad? 3. ¿Y si sabemos que la carta elegida es un 10? Ejercicio 2.3. Demostrar los teoremas de Bayes y de Probabilidad Total. Ejercicio 2.4. Supongamos que la probabilidad de que un paciente tenga una forma determinada del virus de herpes es P (herpes) = 0,008. Se tiene un test con una sensibilidad de 0 ,98 (es decir, P (⊕ | herpes) = 0,98) y una especificidad de 0 ,97 (es decir, P ( | ¬herpes) = 0,97), donde ⊕ y representan los resultados positivo y negativo del test, respectivamente. Si un paciente se realiza el test y le da resultado positivo, ¿cu´al es la probabilidad de que realmente tenga ese virus de herpes? Es decir, se pide calcular P (herpes | ⊕).
2
3.
´ rboles de decisi´ Construcci´ on de a on
´ rmulas de l´ Ejercicio 3.1. La estructura de un ´arbol de decisi´ on permite modelar f o ogica proposicional tomando la tabla de verdad de cada f o ´ rmula como dataset. Representar las siguientes f´ ormulas booleanas mediante a´rboles de decisi´ on: (a) ¬ p
(d) p ∨ (q ∧ r)
(b) p ∧ q
(e) p XOR q
(c) p ∨ q
(f) ( p ∧ ¬q ) ∨ (r ∧ s)
Ejercicio 3.2. Hacer en papel y l´ apiz el ´arbol de decisi´ on correspondiente a entrenar con los datos de Juego al tenis. Cielo Sol Sol Nublado Lluvia Lluvia Lluvia Nublado Sol Sol Lluvia Sol Nublado Nublado Lluvia
Temperatura Calor Calor Calor Templado Fr´ıo Fr´ıo Fr´ıo Templado Fr´ıo Templado Templado Templado Calor Templado
Humedad Alta Alta Alta Alta Normal Normal Normal Alta Normal Normal Normal Alta Normal Alta
Viento D´ ebil Fuerte D´ ebil D´ ebil D´ ebil Fuerte Fuerte D´ ebil D´ ebil D´ ebil Fuerte Fuerte D´ ebil Fuerte
clase No No S´ı S´ı S´ı No S´ı No S´ı S´ı S´ı S´ı S´ı No
Ejercicio 3.3. Armar 3 ejemplos posibles de entradas nuevas y usar el ´arbol del ejercicio anterior para predecir la clase de salida. Ejercicio 3.4. Preguntas conceptuales para discutir: (a) ¿Cu´ al el sesgo inductivo del ´arbol de decisi´ on? (b) ¿Cu´ al es la motivaci´ on de usar entrop´ıa y ganancia de informaci´ on? (c) ¿Qu´ e sucede cuando dos atributos empatan en ganancia de informaci´ on? ¿Esta decisi´ on es parte del sesgo inductivo? (d) ¿C´ omo se comporta la ganancia de informaci´on cuando compara atributos con cantidad de valores muy distintos? Por ejemplo, si el atributo 1 tiene dos valores posibles (true y false) y el atributo 2 tiene 40 valores distintos (sin orden), ¿es justo usar ganancia de informaci´ on para elegir entre ellos? ¿Qu´ e desventajas tiene? ¿C´ omo se podr´ıa mitigar? Ejercicio 3.5. El archivo tree aa.py tiene una implementaci´ on parcial de ´arboles de decisi´ on. Completar las siguientes funciones, usando las definiciones vistas en la clase te´ orica. entropy( y ): Una funci´ on que dado un vector como par´ ametro ( y ) con distintos valores, calcula su valor de entrop´ıa. 3
information gain( X , y ): Una funci´ on que toma la matriz X y el vector y , y devuelve el ´ındice que corresponde a la columna con mayor ganancia de informaci´ on. Usar el dataset Juego al tenis y las entradas propuestas anteriormente para testear la implementaci´ on. Ejercicio 3.6. Comparar la versi´ on de DecisionTreeClassifier de sklearn 1 con la implementaci´ on desarrollada por ustedes. ¿En los datasets anteriores alguna de las dos implementaciones funciona mejor que otra? omo cambia el comportamiento del algoritmo DecisionTreeClassifier Ejercicio 3.7. Hipotetizar c´ variando 2 de sus par´ ametros (por ejemplo: max depth y class weight). Armar ejemplos para evaluar las posibles respuestas a esta pregunta.
4.
Sobreajuste, validaci´ on cruzada y poda
Nota#1: Para tener la ´ ultima versi´ on de scikit-learn en los labos hay que ejecutar el siguiente comando en una consola: pip install −− user −− upgrade sklearn . Nota#2: Archivos necesarios: http://www.dc.uba.ar/materias/aa/2016/cuat2/metricas_bundle Nota#3: Gracias a Pablo Brusco por la ayuda para armar esta secci´ on.
Ejercicio 4.1. Matriz de Confusi´ on (a) En un problema de clasificaci´ on binaria, ¿a qu´ e se denomina clase positiva y a qu´ e clase negativa? Si nuestro problema consiste en clasificar spam vs no-spam, ¿cu´ al es la clase positiva? Si nuestro problema es clasificar im´ agenes de perros vs gatos, ¿cu´ al es la clase positiva? (b) Completar la implementaci´ on de la funci´ on confusion matrix en el archivo ‘metrics.py’. Verificar el funcionamiento corriendo el archivo ‘ejemplo1.py’. El Test 1 deber´ıa pasar. (c) ¿Por qu´ e un falso positivo puede ser considerado distinto a un falso negativo? Dar un ejemplo en donde es m´ as grave tener falsos negativos que falsos positivos. Ejercicio 4.2. M´etricas (a) Explicar con tus palabras la definici´ on de accuracy , precision y recall. (b) Completar las implementaciones de accuracy, recall, precision y F β . Verificar el funcionamiento corriendo el archivo ‘ejemplo1.py’. El Test 2 deber´ıa pasar. (c) ¿Por qu´ e es un problema medir accuracy de un clasificador para compararlo con otro? (Pensar en desbalance de clases.) Dar un ejemplo en donde ser´ıa enga˜ noso utilizar esta comparaci´ on. Ejercicio 4.3. ¿Binaria o 2 clases? Sean A y B clasificadores que distinguen entre im´agenes de perros e im´agenes de gatos. Al medir la performance del clasificador (utilizando F 1 para evitar el problema de accuracy) y “gato” como clase positiva, obtenemos F 1 (A) = 0,9, F 1 (B ) = 0,8. ¿Podemos concluir que el clasificador A es mejor que el clasificador B para este problema? Resolver los siguientes ´ıtems para poder responder a la pregunta: (a) Al calcular F 1 utilizando “gato” como clase positiva, ¿importa qu´e ocurre con los perros que fueron clasificados correctamente? Correr ‘ejemplo2.py’ y decidir cu´ al clasificador funciona mejor, bas´ andose en las m´ etricas. Luego calcular las mismas m´ etricas utilizando a “perro” como la clase ‘positiva’. 1 http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
4
(b) ¿Qu´ e sucede si la cantidad de instancias sobre las que fueron testeados es distinta? ¿C´ omo se ve afectada la m´ etrica F 1 al cambiar los True Negatives? Comentar la l´ınea que dice exit(0) y correr el archivo ‘ejemplo2.py’. El gr´ afico muestra c´ omo var´ıa la m´ etrica F 1 al aumentar la cantidad de True Negatives (observar que estamos cambiando la cantidad de instancias sobre las que testeamos). ¿Qu´ e se puede concluir de este experimento? (c) ¿Para qu´ e sirve el par´ ametro average en la funci´ on f1 score de la librer´ıa sklearn? Ejercicio 4.4. Cross-validation (a) Usando el dataset B.csv y DecisionTreeClassifier de sklearn, analizar c´ omo var´ıa la performance media en un esquema de cross-validation de k-folds reportando accuracy y roc auc, y variando las siguientes caracter´ısticas: ´rbol (ayuda#1: el atributo max leaf nodes puede resultar u ´ til Cantidad de nodos del a para controlar la cantidad de nodos del ´arbol, ayuda#2: para saber la cantidad de nodos de un ´ arbol puede ejecutarse clf.tree .node count, siendo clf un DecisionTreeClassifier entrenado). Cantidad de folds. Usando StratifiedKFold y StratifiedShuffleSplit. (b) Repetir el an´ alisis anterior usando el dataset U.csv
5. Reducci´ on de dimensionalidad Para los ejercicios de esta secci´ on, considerar los siguientes ejemplos y sus conjuntos de datos: Ejemplo A: Lectura de siglas (siglas-dev.csv) Tarea: Determinar c´ omo pronunciar siglas en espa˜ nol. Este clasificador es u ´ til en un sistema textto-speech al encontrar una sigla desconocida en un texto a sintetizar. Input: Sigla. Ejemplos: DGI, IBM, FMI, UBA, ALUAR, CONADEP. Por simplicidad, excluimos siglas con pronunciaci´ on especial: MIT (emait´ı), CNEA (conea), FCEN (efecen). Output: Decidir si debe deletrearse (clase ‘deletreo’), o leerse como un acr o ´nimo (‘acronimo’). Atributos: longitud, cant vocales, cant consonantes, prop vocales, prop consonantes, cant consonantes vecinas, cant vocales vecinas, cant consonantes distintas, cant vocales distintas, cant consonantes iniciales, cant vocales iniciales, cant consonantes finales, cant vocales finales, cant letra [A-Z] (26 atributos). ´nero del hablante (genero.csv) Ejemplo B: Reconocimiento del g e ´n Tarea: Determinar el g´ enero de una persona (masculino/femenino), a partir de una grabaci o corta de su habla. Input: archivo wav. Output: m / f. Atributos: 1582 atributos ac´ usticos extraidos con OpenSmile. Datos originales y m´as informaci´ on: http://habla.dc.uba.ar/gravano/ith-2014/tp2/ Ejercicio 5.1. Experimentar con diferentes algoritmos de clasificaci´ on (´ arboles, Naive Bayes, SVM, kNN) para los ejemplos A y B, usando 10-fold CV. ¿Qu´ e algoritmos funcionan mejor para los datos originales? Ejercicio 5.2. Rankear los atributos de cada ejemplo seg´ un su ganancia de informaci´ on. Conser var s´ olo los primeros k atributos (probar con distintos valores de k) y ver c´ omo afecta esto al 5
desempe˜ no de los algoritmos del ejercicio anterior. ¿Hay diferencia en los atributos encontrados si la seleccion se hace al principio o en cada iteracion del folding? Ejercicio 5.3. Experimentar con otros m´etodos de selecci´ on de atributos. Implemente al menos 3 de las siguientes pol´ıticas de seleccion de atributos y compare como funcionan en los dos datasets Ranking de atributos por p-valor: Para cada atributo compare usando un test de hip´ otesis 2 3 4 (ttest , kruskall , ks test , etc) la diferencia entre la proyeccion del atributo separando por clase y se quede con los k m´as significativamente distintos. Random Search: Elija un subset de k atributos al azar Genetic Search 5 Alguna idea mezclando Greedy Forward Selection, Greedy Backward Elimination Usando 3 algoritmos de clasificaci´ on distintos, ¿c´ omo afecta al desempe˜ no hacer selecci´ o n de atributos? En general, ¿cu´ an sensible es cada algoritmo de aprendizaje a la cantidad y calidad de atributos? Ejercicio 5.4. En ejemplo-pca.py hay un ejemplo de ejecuci´ on de An´alisis de Componentes Principales (PCA) en Python, usando la biblioteca sklearn.decomposition. Este c´ odigo primero genera al azar los datos de la izquierda, y los transforma mediante PCA en los datos de la derecha:
Transformar con PCA los datos de los ejemplos A y B, conservar s´ olo las primeras k Componentes (probar con distintos valores de k ) y volver a evaluar los algoritmos de clasificaci´ on. Ejercicio 5.5. Existen distintos m´ etodos de reducir la dimensionalidad, Scikit-learn implementa algunos de ellos. Pruebe los siguientes m´ etodos e intente generar intuici´ on sobre que propiedad tiene cada uno. Piense en que casos (datasets) convendria uno u otro. Multidimensional scaling 6 Non-Negative Matrix Factorization 7 Independent Component Analysis 8
2 http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.ttest_ind.html 3 http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.mstats.kruskalwallis.html 4 http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.stats.ks_2samp.html 5 http://topepo.github.io/caret/feature-selection-using-genetic-algorithms.html 6 http://scikit-learn.org/stable/modules/generated/sklearn.manifold.MDS.html 7
http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html
8 http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.FastICA.html
6
6. Regresi´ on lineal Ejercicio 6.1. Sea la siguiente definici´ on de RSS (residual sum of squares): RSS =
n
ˆ0 − β ˆ1 · xi yi − β
2
i=1
ˆ0 y β ˆ1 a partir de Derivar β
δ RSS ˆ0 δβ
= 0 y δδRSS ˆ = 0 , de modo de llegar a estas expresiones: β 1
ˆ0 = y − β ˆ1 · x β ˆ1 = β
n i=1 (xi − x)(yi − y ) n 2 i=1 (xi
− x)
ˆ1 del ejercicio anterior es equivalente a Ejercicio 6.2. Probar que la expresi´ on para β Interpretar geom´ etricamente.
Cov [x,y ] Var[x] .
´ rmulas del ejercicio 6.1 en Python. Probarlas con el dataset Ejercicio 6.3. Implementar las f o ‘Boston’ de sklearn, para ajustar una regresi´ on lineal de la variable ‘MEDV’ (la variable objetivo del dataset) en funci´ on de la variable ‘RM’. from sklearn import datasets boston = datasets.load_boston() # Imprimir una descripci´ on del dataset. print boston.DESCR # Usar s´ olo el atributo ‘RM’. X = boston.data[: , [boston.feature_names.tolist().index(’RM’)] ] Y = boston.target
ˆ0 = −34,6706; ˆ β 1 = 9,1021. Ademas, proLos valores estimados deber´ıan ser aproximadamente: β 9 bar con LinearRegression de Sklearn para comparar los modelos. Ejercicio 6.4. Implementar una soluci´ on al problema de regresi´ on lineal basada en el algoritmo iterativo de descenso por el gradiente. ˆ0 y β ˆ1 de la siguiente manera: Ayuda: En cada iteraci´ on, actualizar los valores de β new_beta0 = beta0 - learning_rate * beta0_gradient new_beta1 = beta1 - learning_rate * beta1_gradient
Tener en cuenta que este algoritmo puede tardar en converger. Ejercicio 6.5. Instalar la herramienta de estad´ıstica libre y gratuita R .10 (En los laboratorios ya est´ a instalada.) Leer la Secci´ on 3.6 del libro de James, Witten, Hastie & Tibshirani 11 y correr los ejemplos en R. Ejercicio 6.6. Sobre el dataset ‘Boston’, correr en R una regresi´on lineal m´ ultiple para predecir el p valor de ‘MEDV’ en base a todos los otros atributos. Usar los -valores para identificar y eliminar atributos inservibles, y repetir el proceso. Para cargar el dataset, usar: library (MASS) y ?Boston. Ejercicio 6.7. ¿Qu´ e pasa si alguna de las variables predictoras es categ´orica? ¿C´ omo se la puede transformar en una (o m´ as) variables num´ ericas para usar en la regresi´ on? 9 http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html 10
https://www.r-project.org/ ~gareth/ISL/
11 http://www-bcf.usc.edu/
7
7.
Otros problemas de regresi´ on
Ejercicio 7.1. ¿C´omo se pueden adaptar los algoritmos de clasificaci´ on kNN, ´ arboles de decisi´ on y SVM al problema de regresi´ on? Ejercicio 7.2. El dataset House Sales in King Country, USA ,12 contiene informaci´ on de inmuebles tales como: superficies totales, superficies particulares, estado del inmueble, posici´ on geogr´ afica, etc., y su precio. Experimentar con distintos modelos de regresi´ on m´ ultiple usando cross validation, para intentar predecir el valor de la propiedad. ¿Qu´ e m´ etricas se pueden usar para entender cu´ an bien funciona el modelo? ¿Alcanza con mirar s´olo una m´etrica? En clasificaci´ on recurr´ıamos a la matriz de confusi´ on para tener m´ as informaci´ on de un resultado particular; ¿c´ omo se podr´ıa hacer en un modelo de regresi o ´ n para tener noci´ on de c´ omo son los tipos de errores? Ejercicio 7.3. Para problemas de clasificaci´ on se pueden usar esquemas de regresi´ on. ¿C´ omo se har´ıan los ajustes para pasar de una tarea a la otra? ¿Qu´ e cosas habr´ıa que tener en cuenta? Ejercicio 7.4. El dataset del archivo affairs.csv tiene informaci´ on de parejas (edad, religi´on, hijos, etc.) y una variable categ´ orica affair (0 ´o 1) que indica si la persona ha sido infiel o no. Usar regresi´ on log´ıstica en un esquema de cross validation para intentar clasificar la variable affair. Comparar contra otros algoritmos de clasificaci´ on. El archivo Fair1978.pdf contiene un art´ıculo que bas´ o sus resultados en estos datos, as´ı como una descripci´ on de los atributos y sus valores.13 Ejercicio 7.5. Elegir un dataset y entrenar modelos de regresi´ on de polinomios variando el valor del grado M , de manera de reproducir (aproximadamente) los resultados de las siguientes figuras,14 que ilustran el sobreajuste sobre los datos de entrenamiento y el compromiso entre sesgo y varianza, respectivamente.
12
https://www.kaggle.com/harlfoxem/housesalesprediction/downloads/housesalesprediction.zip Fair, “A Theory of Extramarital Affairs”, Journal of Political Economy , 1978, vol. 86, no. I. 14 Tomadas del Bishop (p.8) y de http://scott.fortmann-roe.com/docs/BiasVariance.html 13 Ray C.
8
8.
Redes Neuronales
Ejercicio 8.1. Construir a mano un perceptr´ on simple que resuelva el operador l´ ogico AND: dadas dos variables X 1 y X 2 , devuelve True o False. En las variables de entrada, interpretar X i = 1 como True y X i = 0 como False. Idem para los operadores OR, NOR y NAND. Ejercicio 8.2. Demostrar que un perceptr´on simple con funci´ on de activaci´ on sigmoide es equivalente a un modelo de regresi´ on log´ıstica.
Para resolver los siguientes ejercicios, usar el playground de TensorFlow disponible en http:// playground.tensorflow.org. Ejercicio 8.3. Elegir el tercer dataset en el playground, que tiene dos grupos de puntos bien separados. Experimentar con diferentes configuraciones de capas ocultas, nodos y atributos, y estudiar el comportamiento de cada parte de la red durante el entrenamiento. Por ejemplo, usar: un solo atributo (X 1 ) y una capa con un nodo; un solo atributo (X 1 ) y dos o m´as capas con dos o m´as nodos; dos atributos (X 1 , X 2 ) y una sola capa con un nodo; etc. Ejercicio 8.4. Usando s´ olo los atributos X 1 y X 2 , construir una configuraci´ on m´ınima (en cantidad de capas y de nodos por capa) de un perceptr´on multicapa que resuelva el operador l´ogico XOR. Usar el segundo dataset del playground. Ejercicio 8.5. Usando s´ olo los atributos X 1 y X 2 , construir una perceptr´ on multicapa que pueda aprender los otros dos problemas no linealmente separables incluidos en el playground: el c´ırculo azul rodeado de amarillo (f´acil) y la doble espiral (dif´ıcil). Ejercicio 8.6. Estudiar c´ omo impacta en el aprendizaje de los dos ejercicios anteriores la inclusi´on de otros atributos (por ejemplo, sin (X 1 )), as´ı como la elecci´ on de distintas funciones de activaci´ on (lineal, tanh, sigmoid).
Opciones para experimentar en mayor detalle con redes neuronales: En Python: sklearn.neural network http://scikit-learn.org/stable/modules/neural_networks_supervised.html
En Matlab (recomendado): Neural Toolbox https://www.mathworks.com/help/nnet/getting-started-with-neural-network-toolbox.html
9
9.
Refuerzos
Ejercicio 9.1. Completar la implementaci´ on de gridWorld alu.py (que se descarga de la p´ agina de la materia). Se deben completar las funciones de la clase gridWorld. possibleActions: Completar esta funci´ on, que dado un estado, devuelve una lista de acciones que pueden tomarse, teniendo en cuenta los m´ argenes del mundo. Las acciones posibles son: right, left,up,down y stay . move: Completar esta funci´ on, que dado un estado y un acci´ on, devuelve un estado (una lista de dos elementos) tras ejecutar dicha accion. learn: Completar esta funci´ on siguiendo lo descripto en la teor´ıa, en la diapositiva titulada on para elegir qu´ e acci´ on tomar dentro de las “Algoritmo 2: Q-Learning” . Usar como funci´ posibles una distrubucion uniforme (random.choice sobre las acciones posibles). Ejercicio 9.2. Teniendo el ejercicio anterior andando correctamente probar al menos otra pol´ıtica de elecci´ on de mejor acci´ on (por ejemplo, e-greedy o softmax ). Considerar las modificaciones necesarias en la implementaci´ on, por ejemplo temperatura inicial y funci´ on de decamiento para no de la nueva pol´ıtica con la desarrollada en el ejercicio anterior. softmax . Comparar el desempe˜
10
10.
Aprendizaje no supervisado: Clustering
Ejercicio 10.1. El siguiente c´ odigo construye un dataset de ejemplo, ejecuta K -Means y grafica los resultados: import numpy as np import matplotlib.pyplot as plt from sklearn import cluster, datasets from sklearn.preprocessing import StandardScaler # crear y normalizar dataset N = 1500 X, y = datasets.make_blobs(n_samples=N, centers=3, cluster_std=1.0) X = StandardScaler().fit_transform(X) # ejecutar k-means con k=2 algorithm = cluster.MiniBatchKMeans(n_clusters=2) algorithm.fit(X) y_pred = algorithm.labels_.astype(np.int) # graficar colors = np.array([x for x in ’bgrcmykbgrcmykbgrcmykbgrcmyk’]) colors = np.hstack([colors] * 20) plt.scatter(X[:, 0], X[:, 1], color=colors[y_pred].tolist(), s=10) plt.show()
1. Experimentar con diferentes valores para cluster_std (desv´ıo est´andar de las nubes de puntos) y n_clusters (valor de K en K -Means). 2. Generar datasets con otras formas, como por ejemplo: datasets.make_circles(n_samples=N, factor=.5, noise=.05) datasets.make_moons(n_samples=N, noise=.05)
Ejecutar K -means, y tambi´ en DBSCAN con el comando cluster.DBSCAN(eps=.2). Experimentar con diferentes valores para noise y eps. 3. Ver m´ as ejemplos en http://scikit-learn.org/stable/auto_examples/cluster/plot_ cluster_comparison.html. Ejercicio 10.2. Programar K-Means y Clustering Jer´ arquico Aglomerativo. Comparar c´ omo funcionan sus implementaciones sobre los datos del ejercicio anterior. Ejercicio 10.3. ¿Qu´ e tipo de tareas necesitan algoritmos de clustering? Pensar en 3 ejemplos.
11