Tema 2: Introducción a scikit-learn

Documentos relacionados
Evaluación de modelos

Perceptrón simple y perceptrón multicapa

Aprendizaje Automatizado

Aprendizaje Automatizado

Aprendizaje Supervisado Máquinas Vectoriales de Soporte

Inteligencia Artificial: Su uso para la investigación

Análisis de Datos. Introducción al aprendizaje supervisado. Profesor: Dr. Wilfrido Gómez Flores

Lingüística computacional

Tareas de la minería de datos: clasificación. CI-2352 Intr. a la minería de datos Prof. Braulio José Solano Rojas ECCI, UCR

CRITERIOS DE SELECCIÓN DE MODELOS

Tópicos Selectos en Aprendizaje Maquinal. Clasificación y Regresión con Datos Reales

Seminario-Taller Ciencia de Datos con Python

Machine Learning Bases

Ciencia de Datos con Python

Introducción al Procesamiento de Lenguaje Natural. Grupo de PLN - InCo

Aprendizaje Automático

Clasificación de estados cerebralesusando neuroimágenes funcionales

Aprendizaje Automatizado. Árboles de Clasificación

Aprendizaje Supervisado Clasificación Bayesiana (Método de Naïve Bayes)

Científico de datos o data scientist

Índice general. Prefacio...5

Análisis de Datos. Introducción al aprendizaje supervisado. Profesor: Dr. Wilfrido Gómez Flores

Tareas de la minería de datos: clasificación. PF-5028 Minería de datos Prof. Braulio José Solano Rojas UCR

Técnicas de Clasificación Supervisada DRA. LETICIA FLORES PULIDO

Big Analytics: de la información al conocimiento

Aprendizaje Supervisado K - Vecinos más cercanos Knn-Method

Tópicos Selectos en Aprendizaje Maquinal. Algoritmos para Reconocimiento de Patrones

Jugando a policías y ladrones para detectar anomalías en red con ML. Carmen Torrano Giménez #CyberCamp17

INTRODUCTION TO MACHINE LEARNING ISABELLE GUYON

Machine Learning. Programa de Estudio.

Introducción Aprendizaje de Máquina. Gerardo Gutiérrez Gutiérrez Alexis Rodríguez Gutiérrez

Precisión del Modelo

Aprendizaje: Boosting y Adaboost

Estadística Multivariada Computacional Introducción al Aprendizaje Automático (parte 1)

Perceptrón Simple. Aspectos Prácticos y Algoritmos Redes Neuronales, DC-FCEyN-UBA. Rosana Matuk Primer Cuatrimestre 2018

Examen Parcial. Attr1: A, B Attr2: A, B, C Attr3 1, 2, 3 Attr4; a, b Attr5: 1, 2, 3, 4

Ricardo Aler Mur CLASIFICADORES KNN-I

Introducción. Qué es Machine Learning?

Complementos de aprendizaje automático

Análisis de Datos. Combinación de clasificadores. Profesor: Dr. Wilfrido Gómez Flores

Tema 7: Aprendizaje de árboles de decisión

Introducción a la minería de datos

ANÁLISIS DE DATOS. Ricardo Aler Mur

Aprendizaje Supervisado Árboles de Decisión

SISTEMAS INTELIGENTES

Segmentación de una cartera de clientes usando aprendizaje de máquina

Aprendizaje Automático

Jupyter - Python. Contenido. 1 Sistemas Expertos e Inteligencia Artificial / Guía VII / Ciclo / Ing. Herson Serrano. Objetivos Específicos

Práctica 5: Clasificación con número variable de ejemplos.

(Reconocimiento de Formas)

Clasificadores Débiles - AdaBoost

Aprendizaje inductivo

Técnicas de aprendizaje sobre series temporales

MÉTODOS AVANZADOS EN APRENDIZAJE ARTIFICIAL: TEORÍA Y APLICACIONES A PROBLEMAS DE PREDICCIÓN

Introducción a los sistemas Multiclasificadores. Carlos J. Alonso González Departamento de Informática Universidad de Valladolid

Redes Neuronales Artificiales El Perceptrón

Aprendizaje para Clasificación con Factorización Matricial Basado en Listwise para Filtrado Colaborativo

Aprendizaje Automático. Segundo Cuatrimestre de Clasificadores: Naive Bayes, Vecinos Más Cercanos, SVM

Análisis de Datos. Validación de clasificadores. Profesor: Dr. Wilfrido Gómez Flores

Buenas prácticas para la implementación de herramientas de Ciencia de Datos Leonardo Alfonso Ramos Corona Facultad de Geografía, UAEM.

Conjuntos de Clasificadores (Ensemble Learning)

Introducción a Minería de Texto. Fabián Latorre

Tópicos Selectos en Aprendizaje Maquinal. Algoritmos para Reconocimiento de Patrones

ANÁLISIS DE DATOS. Jesús García Herrero

Aprendizaje Automático para el Análisis de Datos GRADO EN ESTADÍSTICA Y EMPRESA. Ricardo Aler Mur

Transcripción:

Tema 2: Introducción a scikit-learn José Luis Ruiz Reina Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Razonamiento asistido por computador, 2017-18

Ejemplo: predicción de precios de pisos Predecir el precio de un piso en función de sus características (número de habitaciones, distancia al centro, renta per cápita del barrio,... ) Datos: 0.00632 18.00 2.310 0 0.5380 6.5750 65.20 4.0900 1 296.0 15.30 396.90 4.98 0.02731 0.00 7.070 0 0.4690 6.4210 78.90 4.9671 2 242.0 17.80 396.90 9.14 0.02729 0.00 7.070 0 0.4690 7.1850 61.10 4.9671 2 242.0 17.80 392.83 4.03 0.03237 0.00 2.180 0 0.4580 6.9980 45.80 6.0622 3 222.0 18.70 394.63 2.94 0.06905 0.00 2.180 0 0.4580 7.1470 54.20 6.0622 3 222.0 18.70 396.90 5.33 0.02985 0.00 2.180 0 0.4580 6.4300 58.70 6.0622 3 222.0 18.70 394.12 5.21 0.08829 12.50 7.870 0 0.5240 6.0120 66.60 5.5605 5 311.0 15.20 395.60 12.43 0.14455 12.50 7.870 0 0.5240 6.1720 96.10 5.9505 5 311.0 15.20 396.90 19.15 0.21124 12.50 7.870 0 0.5240 5.6310 100.00 6.0821 5 311.0 15.20 386.63 29.93............

Ejemplo: clasificación de la flor de iris Hay tres géneros de la planta de iris (setosa, virgínica y versicolor); se pretende poder clasificarla en función de medidas (anchura y longitud) de su sépalo y pétalo Datos: 5.1 3.5 1.4 0.2 Iris-setosa 4.9 3.0 1.4 0.2 Iris-setosa 4.7 3.2 1.3 0.2 Iris-setosa...... 7.0 3.2 4.7 1.4 Iris-versicolor 6.4 3.2 4.5 1.5 Iris-versicolor 6.9 3.1 4.9 1.5 Iris-versicolor...... 6.3 3.3 6.0 2.5 Iris-virginica 5.8 2.7 5.1 1.9 Iris-virginica 7.1 3.0 5.9 2.1 Iris-virginica......

Aprendizaje de modelos El objetivo general del Aprendizaje Automático es poder automatizar la toma de decisiones construyendo un modelo general que se aprende a partir de un conjunto de datos Usalmente por modelo entendemos un modelo matemático, que puede ser implementado en un ordenador Supervisado: en los ejemplos conocemos la entrada y la salida Clasificación de correo spam Identificar un código postal a partir de dígitos escritos a mano Detectar actividades fraudulentas con trahetas de crédito Determinar si un tumor es maligno, a partir de una imagen médica No supervisado: sólo conocemos la entrada Identificar temáticas en un conjunto de textos Agrupar clientes por preferencias Detectar accesos irregulares a un sitio web

Conjunto de datos Los datos con los que trataremos una estructura vectorial (valores de atributos), y un valor de clasificación (clase) Importante: supondremos que todos los atributos son numéricos Esto no es ninguna limitación en la práctica (los atributos no numéricos se pueden codificar numéricamente) En scikit-learn, los datos se almacenan en arrays de numpy Ejemplos de datos: Vector de píxeles en una imagen médica o en una imagen de un escrito a mano Representación vectorial de un texto Vector de características de un correo electrónico

Aprendizaje y ajuste de parámetros El aprendizaje de un modelo suele consistir en una búsqueda de un modelo de entre todos los modelos de una familia. Por ejemplo: Árboles de decisión Pesos en un clasificador lineal Probabilidades de una red bayesiana Hay que buscar un modelo que se ajuste bien al conjunto de entrenamiento pero que no se ajuste demasiado, y sea capaz de generalizar Huir del sobreajuste Sin caer en el infraajuste

Aprendizaje y ajuste de parámetros Un método de aprendizaje de un modelo suele tener una serie de hiper-parámetros (o parámetros, por simplificar) que influyen en el proceso de búsqueda y en el grado de generalización delque se dispone. En un proceso de aprendizaje es importante el algoritmo y los modelos que se usen, pero también lo es el encontrar los parámetros adecuados Ajuste de (hiper-)parámetros Para decidir entre un modelo u otro hay que tener una manera de medirlos (evaluación) Conjuntos de prueba Métricas

Scikit-Learn Biblioteca con diversas herramientas para machine learning y análisis de datos: http://scikit-learn.org/stable/ Librería python para aprendizaje automático Dependencias con otras librerías: NumPy, SciPy, matplotlib Proporciona: Ejemplos de trabajo Herramientas de tratamiento de datos Modelos de aprendizaje automático Herramientas de evaluación de modelos

Ejemplo de datos en scikit-learn: Iris Base de datos sobre flores Iris Setosa, Iris Versicolor, Iris Virginica ampliamente utilizado como caso de estudio en técnicas de clasificación en aprendizaje automático 50 instancias de cada tipo de flor 4 características: longitud y ancho del sépalo; y longitud y ancho del pétalo

Iris: carga de datos Disponible como conjunto de datos en scikit-learn: librería datasets from sklearn.datasets import load_iris iris = load_iris() Campos proporcionados: data: Array de datos. Cada componente es un array con las características de una instancia feature_names: Identificación de cada característica target: Valores de clasificación para cada instancia de datos target_names: Identificación de cada valor de clasificación DESCR: Descripción del conjunto de datos

Iris: Recogida de datos Ejemplos >>> iris.feature_names [ sepal length (cm), sepal width (cm), petal length (cm), petal width (cm) ] >>> iris.data.shape (150,4) >>> iris.data[0] array([ 5.1, 3.5, 1.4, 0.2]) >>> iris.target_names array([ setosa, versicolor, virginica ], dtype= <U10 ) >>> iris.target.shape (150,) >>> iris.target[0] 0 Cargamos los datos X_iris, y_iris = iris.data, iris.target X_names, y_names = iris.feature_names, iris.target_names

Iris: Visualización de los datos Dificultad para visualizar todos los datos: 150 instancias, 4 características Librería python de gráficos de tipo matemático: matplotlib http://matplotlib.org/ Representación gráfica de los datos con respecto a un par de características from matplotlib import pyplot as plt plt.clf() for tipo,marca,color in zip(range(len(y_names)),"sod","rgb"): plt.scatter(x_iris[:,0][y_iris == tipo], X_iris[:,1][y_iris == tipo], marker=marca,c=color) plt.xlabel("longitud de sépalo") plt.ylabel("anchura de sépalo") plt.show() Selección de filas o columnas: X_iris[:,0], X_iris[:30,1:3] Selección de los elementos de un array que cumplen una propiedad:

Iris: Visualización de los datos

Iris: Visualización de los datos Representación gráfica de los datos con respecto a un par de características def representacion_grafica(datos,caracteristicas, objetivo,clases,c1,c2): for tipo,marca,color in zip(range(len(clases)),"sod","rgb"): plt.scatter(datos[objetivo == tipo,c1], datos[objetivo == tipo,c2], marker=marca,c=color) plt.xlabel(caracteristicas[c1]) plt.ylabel(caracteristicas[c2]) plt.legend(clases) plt.show() representacion_grafica(iris.data,x_names,y_iris,y_names,0,1)

Iris: Visualización de los datos

Conjuntos de entrenamiento, validación y prueba Dividir el conjunto de datos Conjunto de entrenamiento: Conjunto de datos que se utilizará para aprender un modelo Conjunto de validación: Conjunto de datos que se utilizará para ajustar los (hiper-)parámetros del modelo Conjunto de prueba: Conjunto de datos que se utilizará para evaluar el rendimiento del modelo finalmente obtenido Hay veces que no nos podemos permitir el lujo de no usar todos los datos para el entrenamiento Validación cruzada

Conjuntos de entrenamiento y prueba Separación de datos en scikit-learn: librería cross_validation from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = \ train_test_split(x_iris,y_iris,test_size = 0.25)

Normalización de las características La diferencia de escala entre las características puede dar más importancia a algunas de ellas frente a otras En nuestro caso la longitud tiene una escala mayor que la anchura La normalización de las características unifica la escala, de forma que no influya en la relevancia de las características en la clasificación Normalización de los datos en scikit-learn: librería preprocessing Los parámetros del normalizador se ajustan a partir del conjunto de datos de entrada Ejemplo: normalizador estándar que ajusta una muestra de datos para que la media sea cero y la desviación uno

Normalización de las características Normalización de los datos en scikit-learn: librería preprocessing El método fit ajusta los parámetros del normalizador a partir de un conjunto de datos El método transform modifica un conjunto de datos con respecto al normalizador, una vez que sus parámetros han sido ajustados from sklearn.preprocessing import StandardScaler normalizador = StandardScaler().fit(X_train) Xn_train = normalizador.transform(x_train)

Normalización de las características Normalización de los datos en scikit-learn: librería preprocessing Los parámetros ajustados se almacenan como valores de atributos del normalizador: mean_, std_ >>> normalizador.mean_ array([ 5.85267857, 3.04107143]) >>> normalizador.std_ array([ 0.86797793, 0.41951366]) El conjunto de datos resultado tiene media cero y desviación uno >>> np.mean(xn_train) -9.8334039323942442e-16 >>> np.std(xn_train) 1.0

Normalización de las características Resultado tras la normalización

Primer ejemplo de clasificador en scikit_learn: knn Clasificación directamente a partir de los ejemplos (aprendizaje basado en instancias) Idea: obtener la clasificación de un nuevo ejemplo a a partir de las categorías de los ejemplos más cercanos. Debemos manejar, por tanto, una noción de distancia entre ejemplos. En la mayoría de los casos la distancia usada es la euclídea. Pero se podría usar otra noción de distancia Ejemplo de aplicación: clasificación de documentos

El algoritmo k-nn El algoritmo k-nn (de k nearest neighbors ): Dado un conjunto de entrenamiento (vectores numéricos con una categoría asignada) y un ejemplo nuevo Devolver la categoría mayoritaria en los k ejemplos del conjunto de entrenamiento más cercanos al ejemplo que se quiere clasificar

Distancias para k-nn Posibles distancias usadas para definir la cercanía : n Euclídea: d 2 (x, y) = i=1 (x i y i ) 2 Manhattan: d 1 (x, y) = n i=1 x i y i En general, Minkowski: d p (x, y) = ( n i=1 (x i y i ) p ) 1/p La euclídea se usa cuando cada dimensión mide propiedades similares y la Mahattan en caso contrario; Normalización: cuando no todas las dimensiones son del mismo orden de magnitud, se suelen normalizan las componentes

Algunas observaciones sobre k-nn Elección de k: Usualmente, basándonos en algún conocimiento específico sobre el problema de clasificación También como resultado de pruebas en conjuntos más pequeños (conjuntos de validación) Si la clasificación es binaria, preferiblemente impar, para intentar evitar empates (k =5, por ejemplo) Variante en knn: cada ejemplo de la vecindad no cuenta de la misma manera Por ejemplo, puede ser inversamente proporcional a la distancia al que se quiere clasificar

Clasificador knn en scikit-learn Clase KNeighborsClassifier: >>> from sklearn.neighbors import KNeighborsClassifier >>> knn=kneighborsclassifier(n_neighbors=7) Método fit: >>> knn.fit(xn_train,y_train) Método predict: >>> Xn_test = normalizador.transform(x_test) >>> knn.predict(xn_test) array([2, 2, 0, 1, 2, 2, 2, 2, 2, 2, 0, 1, 2, 2, 1, 1, 1, 0, 0, 2, 1, 2, 2,2, 2, 2, 2, 1, 1, 2, 1, 0, 0, 1, 1, 0, 0, 2]) Método score: >>> knn.score(xn_test,y_test) 0.92105263157894735

Clasificador knn en scikit-learn Todos los clasificadores en scikit-learn tienen implementados los métodos fit, predict y score (entre otros) fit: ajustar el modelo a un conjunto de datos dado (entrenamiento, aprendizaje) predict: usar el modelo ajustado para predecir la clase de nuevas instancias score: porcentaje de aciertos sobre un conjunto de prueba del que se conoce su clasificación Además, los clasificadores tienen una serie de (hiper)-parámetros que se proporcionan al constructr de la clase. Por ejemplo, algunos parámetros de knn en scikit-learn: Número de vecinos k Distancia usada Peso de cada vecino

Uso de cuadernos Jupyter notebooks Entorno interactivo, que permite integrar: Ejecución de código (no solo python) Texto Gráficos Herramienta muy usada para análisis de datos Ver demo en clase...

Bibliografía Andreas C. Müller y Sarah Guido Introduction to Machine Learning with Python (O Really, 2017) Capítulos 1 y 2.