Ehm… ¿otra vez hablando sobre Inteligencia Artificial?, bueno sí, pero esperamos que el enfoque práctico que vamos a seguir te permita entender de principio a fin cómo se usa una biblioteca de aprendizaje automático (machine learning) para generar un modelo predictivo.
En esta sesión primero veremos cómo usando scikit-learn podemos generar (entrenar) un modelo matemático capaz de predecir el precio de una vivienda a partir de las características de la misma. Posteriormente veremos cómo podemos usar ArcGIS Pro para volver a entrenar el modelo, mejorando la precisión del mismo gracias al enriquecimiento del dataset de entrenamiento con información sobre las relaciones espaciales de cada vivienda con otros puntos de interés de la zona en la que se encuentra.
Para poder seguir la sesión no será necesario, aunque sí recomendable, tener nociones de programación con Python. Para seguir los conceptos y el flujo de trabajo no se requieren conocimientos previos.
Refinando un modelo predictivo gracias al GIS con Python
1. Refinando un modelo predictivo gracias
al GIS con Python
MARINA VALENTÍN
Especialista GIS - BIM / CAD
30/10/2019 - Conferencia Esri España 2019
ROI MARTÍNEZ
Data Scientist Jr. / Ing. de
implantación
RAÚL JIMÉNEZ
Responsable de startups y
spin-offs @ Esri España
2. Problema
Predicción del precio de una vivienda
AGENDA:
● Primera aproximación desde Jupyter Notebooks
● Evaluación del modelo desde ArcGIS Pro
● Refinamiento del modelo con ArcGIS Pro
● Exploración en PowerBI
3. Disclaimer
Ninguno de nosotros es experto (aún al menos ;P) en Machine Learning
Hands-on ML with Scikit-Learn
& TensorFlow by O’Reilly
Machine Learning in ArcGIS,
Esri User Conference August
2018
Using Forest-based
Classification & Regression in
GIS to Model and Estimate
House Values
4. JUPYTER NOTEBOOKS
Qué papel juegan Jupyter, Scikit-learn, Pandas, Scypi y otras
bibliotecas en el proceso de selección, entrenamiento y refinamiento
de un modelo de ML antes de pasar a ArcGIS Pro.
Ver Notebook en: Github | Google Colab
6. Exploramos los datos de entrenamiento
Con Pandas podemos ver rápidamente qué atributos tenemos, cuántos valores nulos, qué rango de valores, ...
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
7. Exploramos los datos de entrenamiento
Pandas + matplotlib: qué valores tienen los atributos, cómo están distribuidos, existen truncamientos, …
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
8. Exploramos los datos de entrenamiento
matplotlib: Visualizamos los datos geográficamente
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
9. Buscamos correlaciones entre los datos de entrenamiento
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Pandas: Analizamos el coeficiente estándar de correlación (o el coeficiente de correlación de Pearson)
El coeficiente de correlación sólo mide correlaciones lineales pero no la pendiente de la relación ni otros aspectos, por ejemplo puede
perderse por completo las relaciones no lineales (por ejemplo, "si x está cerca de cero, entonces el genérico sube").
10. Buscamos correlaciones entre los datos de entrenamiento
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Pandas: Usando la función “pandas.plotting.scatter_matrix” para visualizar correlación entre pares de atributos
11. Experimentando con combinaciones de atributos
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Pandas y matplotlib: Exploramos si tiene sentido generamos atributos derivados a partir de otros
13. Limpiamos los datos
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Reemplazamos los valores nulos por la mediana de cada atributo
14. Limpiamos los datos
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Transformamos los atributos categóricos usando sklearn.preprocessing.OneHotEncoder
Escalamos los valores usando sklearn.preprocessing.StandardScaler
16. Entrenamos con un modelo de regresión lineal
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Usando sklearn.linear_model.LinearRegression
17. Entrenamos con un modelo de árboles de decisión
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Usando sklearn.tree.DecisionTreeRegressor
18. Entrenamos con un modelo de árboles aleatorios
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Usando sklearn.ensemble.RandomForestRegressor
20. Búsqueda por cuadrículas (Grid Search)
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Usando sklearn.model_selection.GridSearchCV
21. Búsqueda por cuadrículas (Grid Search)
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Usando sklearn.model_selection.GridSearchCV
22. Búsqueda aleatoria
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn + Scipy: Usando sklearn.model_selection.RandomizedSearchCV
23. Analizar la relevancia de cada dato
Explorar y visualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo
Scikit-learn: Explorando las importancia gracias a sklearn.model_selection.GridSearchCV
24. EVALUACIÓN DEL MODELO
DESDE ARCGIS PRO
Cómo podemos entrenar un modelo de ML desde Arc GIS Pro
utilizando la herramienta Forest-Based Classification and Regression