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
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
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
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
Explorar y visualizar
Los datos para comprenderlos mejor
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
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
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
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").
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
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
Preparar los datos
Para los algoritmos de Machine Learning
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
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
Seleccionar y entrenar
Entrenar y evaluar el modelo con los datos de entrenamiento
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
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
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
Refinar el modelo
Mecanismo para mejorar el ajuste del modelo
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
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
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
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
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
Bosques Aleatorios
¿De dónde viene este algoritmo?
Bosques aleatorios
Bosques Aleatorios | Datos de partida | Caso 1
Breve introducción al algoritmo.
Árbol de Decisión
Datos de partida
Dataset que vamos a utilizar
Datos de Partida
Bosques Aleatorios | Datos de partida | Caso 1
Dataset procedente de Jupyter
Datos de Partida
Bosques Aleatorios | Datos de partida | Caso 1
Representación gráfica de los datos.
Caso 1
Modelo sin variables espaciales
Caso 1
Bosques Aleatorios | Datos de partida | Caso 1
Herramienta Forest-based Classification and Regression.
Caso 1
Bosques Aleatorios | Datos de partida | Caso 1
Resultados del modelo sin variables espaciales
Caso 2
Modelo con variables espaciales
Caso 2 - Variables espaciales
Bosques Aleatorios | Datos de partida | Caso 2
Herramienta Forest-based Classification and Regression.
Caso 2
Bosques Aleatorios | Datos de partida | Caso 2
Resultados del modelo con variables espaciales

Refinando un modelo predictivo gracias al GIS con Python

  • 1.
    Refinando un modelopredictivo 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 preciode 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 nosotroses 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é papeljuegan 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
  • 5.
    Explorar y visualizar Losdatos para comprenderlos mejor
  • 6.
    Exploramos los datosde 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 datosde 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 datosde 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 entrelos 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 entrelos 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 combinacionesde 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
  • 12.
    Preparar los datos Paralos algoritmos de Machine Learning
  • 13.
    Limpiamos los datos Explorary 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 Explorary 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
  • 15.
    Seleccionar y entrenar Entrenary evaluar el modelo con los datos de entrenamiento
  • 16.
    Entrenamos con unmodelo 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 unmodelo 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 unmodelo 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
  • 19.
    Refinar el modelo Mecanismopara mejorar el ajuste del modelo
  • 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 yvisualizar los datos | Preparar los datos | Seleccionar y entrenar el modelo | Refinar el modelo Scikit-learn + Scipy: Usando sklearn.model_selection.RandomizedSearchCV
  • 23.
    Analizar la relevanciade 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 DESDEARCGIS PRO Cómo podemos entrenar un modelo de ML desde Arc GIS Pro utilizando la herramienta Forest-Based Classification and Regression
  • 25.
    Bosques Aleatorios ¿De dóndeviene este algoritmo?
  • 26.
    Bosques aleatorios Bosques Aleatorios| Datos de partida | Caso 1 Breve introducción al algoritmo. Árbol de Decisión
  • 27.
    Datos de partida Datasetque vamos a utilizar
  • 28.
    Datos de Partida BosquesAleatorios | Datos de partida | Caso 1 Dataset procedente de Jupyter
  • 29.
    Datos de Partida BosquesAleatorios | Datos de partida | Caso 1 Representación gráfica de los datos.
  • 30.
    Caso 1 Modelo sinvariables espaciales
  • 31.
    Caso 1 Bosques Aleatorios| Datos de partida | Caso 1 Herramienta Forest-based Classification and Regression.
  • 32.
    Caso 1 Bosques Aleatorios| Datos de partida | Caso 1 Resultados del modelo sin variables espaciales
  • 33.
    Caso 2 Modelo convariables espaciales
  • 34.
    Caso 2 -Variables espaciales Bosques Aleatorios | Datos de partida | Caso 2 Herramienta Forest-based Classification and Regression.
  • 35.
    Caso 2 Bosques Aleatorios| Datos de partida | Caso 2 Resultados del modelo con variables espaciales