Reach en tiempos del COVID-19: Municipalidad Provincial de Chanchamayo
La Municipalidad Provincial de Chanchamayo, promueve la adecuada prestación de los servicios públicos locales y el desarrollo integral, sostenible y armónico de la Provincia, a través de la promoción de una ciudad turística, sostenible y segura, en la cual la ciudadanía pueda disfrutar de salud, deporte en igualdad de oportunidades, teniendo como soporte una óptima gestión urbana y rural; mejorando para ello la calidad de los servicios municipales y haciendo cumplir la normatividad vigente, con el soporte de los servidores públicos.
Antecedentes
La COVID‑19 es la enfermedad infecciosa causada por un coronavirus recientemente descubierto en 2019. Según la OPS (Organización Panamericana de la Salud) el 81% de los casos positivos por COVID-19 parecen ser leves, cerca del 14% parece devenir en un cuadro grave o severo y alrededor del 5% son casos críticos.
Cualquiera puede infectarse al inhalar el virus si está cerca de una persona con COVID‑19 o si, tras tocar una superficie contaminada, se toca los ojos, la nariz o la boca.
Actualmente la COVID‑19 es una pandemia que afecta a muchos países de todo el mundo.
Problemática
El impacto de la pandemia por COVID-19 golpeó fuertemente al Perú. Durante el segundo trimestre del año 2020 se perdieron 6 millones de empleos y la población ocupada se redujo en 39.6%.
De acuerdo a los datos oficiales del SISFOH (Sistema de Focalización de Hogares), durante los últimos 6 años, la población promedio en situación de pobreza extrema en la provincia de Chanchamayo es del 34%.
Tomando en cuenta la situación, la pandemia representó un gran peligro para la vida y salud de más de un tercio de su población.
Solución
Se repartieron canastas básicas a familias en situacion de vulnerabilidad en el distrito capital y sus centros poblados rurales.
Para llevar a cabo esta tarea de forma coordinada y eficiente, la Municipalidad Provincial de Chanchamayo, presidido por el alcalde Sr. José Eduardo Mariño Arquíñigo, realizó el empadronamiento con apoyo de autoridades de cada sector, trabajó de la mano de la Policía Nacional del Perú, el Ejercito del Perú y, optando por el uso de las herramientas tecnológicas disponibles, establece comunicación con Epicalsoft por el aplicativo Reach.
Las coordinaciones para las capacitaciones y el uso de Reach en el campo se llevaron a cabo con el Sr. Hans Cristians Vicente Meza, responsable de la OPMI (Oficina de Programación Multianual de Inversiones).
La seguridad frente a los riesgos de saqueo de los camiones que transportaron las canastas básicas estuvo a cargo del Batallón de Ingenieria de Construcción “Ollantaytambo” N° 3 comandada por el Teniente Coronel EP Percy Alexis Rodriguez Castillo. Las tropas del ejercito del Perú cumplieron cabalmente con su objetivo dando la talla durante la campaña de apoyo a las poblaciones vulnerables por la emergencia sanitaria.
Implementación
Para facilitar la ubicación de las viviendas, se geolocalizaron las familias vulnerables a través de Reach como casos de personas en riesgo o peligro por su situación de vulnerabilidad.
Georeferenciación
14 de Abril de 2020
Para facilitar la ubicación de las viviendas, se geolocalizaron las familias vulnerables a través de Reach como casos de personas en riesgo o peligro por su situación de vulnerabilidad.
La información reportada en Reach fue recopilada por la autoridad Municipal y usada para definir un plan de entrega de canastas con apoyo del Ejercito del Perú y la Policía Nacional del Perú.
Coordinación
21 de Abril de 2020
La información reportada en Reach fue recopilada por la autoridad Municipal y usada para definir un plan de entrega de canastas con apoyo del Ejercito del Perú y la Policía Nacional del Perú.
Las canastas básicas familiares se repartieron con apoyo de Reach ya que el aplicativo permitía distribuir la tarea incluso entre quienes no habían participado en anteriores etapas.
Esta actividad se realizó en horarios de inmovilización social obligatoria.
Reparto
22 de Abril de 2020
Las canastas básicas familiares se repartieron con apoyo de Reach ya que el aplicativo permitía distribuir la tarea incluso entre quienes no habían participado en anteriores etapas.
Esta actividad se realizó en horarios de inmovilización social obligatoria.
La presente participación en la identificación de familias vulnerables y la distribución de canastas básicas en el marco de la emergencia nacional por COVID-19 en la Municipalidad Provincial de Chanchamayo, le ha permitido a Reach contribuir en llevar esperanza a más de 1000 familias en estado de vulnerabilidad.
No pude procesar algunos planes porque estaban incompletos o tenían un formato complicado. Por ejemplo, RUNA subió fotos en vez de un documento digital y el triste plan de gobierno de Hernando De Soto solo tiene 2 páginas. Por otro lado, no consideré las agrupaciones políticas con más indicios de corrupción como Fuerza Popular, Renovación Popular, Patria Segura y Somos Perú. Por ejemplo, los fundadores del Fujimorismo (Alberto Fujimori) y Peru Libre (Vladimir Cerrón) están presos por corrupción, por lo tanto no los considero.
Para este análisis intente resaltar las diferencias que hay entre los planes de gobierno. Para ello se suprimieron, por ejemplo, conceptos relacionados a “covid-19”, “desarrollo”, “gobierno”, “pandemia” o “Perú”. Todos los planes abordaban de alguna manera estos conceptos en sus propuestas y, al ser algo tan común, no ayudaban a entender qué es aquello que realmente le interesa a cada partido.
Finalmente, consideré los Objetivos de Desarrollo Sostenible de las Naciones Unidas para intentar encontrar alguna semejanza con los planes de gobierno.
VERSIÓN 1.0.1
Palabras clave por ODS
ODS 01. Fin de la Pobreza pobreza dólares pobres viven mujeres hombres recursos
ODS 02. Hambre Cero hambre producción alimentos acceso niños mercados población
ODS 03. Salud y Bienestar mortalidad enfermedades niños muertes regiones acceso sida
ODS 04. Educación de Calidad niños enseñanza asegurar formación escuela jóvenes calidad
ODS 05. Igualdad de Género mujeres niñas leyes violencia igualdad mutilación derechos
ODS 06. Agua Limpia y Saneamiento agua acceso saneamiento aguas servicios ríos recursos
ODS 07. Energía Asequible y No Contaminante energía acceso servicios carbón combustibles fuentes eficiencia
ODS 08. Trabajo Decente y Crecimiento Economico trabajo empleo trabajadores hombres mujeres crecimiento puestos
En el presente capítulo aprenderemos qué es Python y cómo preparar nuestro entorno para desarrollar soluciones de Machine Learning empleando la distribución de Python Anaconda, el editor de código Visual Studio Code y los Jupyter Notebooks.
Python
Python es un lenguaje de programación orientado a objetos de código abierto que popularmente se emplea para:
Desarrollo del lado del servidor de aplicaciones web
Desarrollo software con bases de datos
Matemáticas complejas
Estadística
Machine learning
Ejecución de comandos de sistema
En el mercado podemos encontrar una variedad de distribuciones o implementaciones de Python como: CPython, IronPython, WinPython, Jython, PyPy, MicroPython, Anaconda, ActivePython, entre otros. Cada uno de ellos aporta ventajas especiales para determinados sistemas, plataformas de desarrollo o tipos de soluciones.
Particularidades
Python emplea saltos de línea para completar las instrucciones, a diferencia de otros lenguajes de programación que suelen usar “;”.
Python hace uso de la sangría (caracteres en blanco al comenzar una instrucción) para definir el contexto de los bucles, funciones o clases, a diferencia de otros lenguajes de programación que suelen utilizar corchetes para este propósito.
Anaconda
Descargar Python 3 desde https://www.python.org instalar cada uno de los paquetes necesarios para trabajar en Data Science puede ser tedioso, sobretodo para aquellos que recién estamos empezando. Por ello, una de las mejores alternativas para levantar nuestro entorno es Anaconda, la cual es una distribución de Python que viene lista con todo lo que necesitamos para Machine Learning y Data Science, asímismo cuenta con una intuitiva interfaz gráfica que nos permitirá organizar, instalar, actualizar y desinstalar los paquetes de forma muy sencilla y amigable.
Descarga
Para nuestro objetivo de aprendizaje, lo ideal será descargar la Edición Individual desde https://www.anaconda.com
El instalador de Python 3.8 para Windows (64-bits) pesa aproximadamente 468 MB.
Instalación
Antes de empezar la instalación asegurémonos de tener todos los permisos o privilegios de administrador en el sistema que nos encontremos.
Hagamos doble click sobre el instalador y sigamos por el asistente de instalación. Notemos que el espacio requerido para la instalación es de aproximadamente de 2.7 GB
Seleccionemos la opción avanzada “Registrar Anaconda3 como el Python 3.8 de sistema” y continuemos para que el asistente pueda instalar Python y cada uno de los paquetes que necesitaremos.
En la carpeta de destino de la instalación también se creará un ejecutable llamado Uninstall-Anaconda3.exe que nos permitirá efectuar la desinstalación en el momento que se requiera.
Configuración
Una vez completada la instalación, vayamos a “Propiedades del Sistema“. Podemos ingresar a través de la ruta “Panel de Control > Seguridad o Sistema > Sistema” o haciendo click derecho sobre Mi PC e ingresando a Propiedades.
Desde la parte inferior de la sección de “Avanzado“, ingresemos a la vista de “Variables de Entorno“, seleccionemos “Path” y demos en Editar. En esta parte debemos agregar una nueva entrada que apunte a la carpeta Scripts en el lugar instalación de Anaconda, que en nuestro caso sería “C:\anaconda3\Scripts”.
Luego, ejecutemos Anaconda Navigator desde nuestra lista de programas instalados en el sistema.
En la vista de inicio, esta aplicación nos permite instalar o ejecutar otras aplicaciones relacionadas al desarrollo de Machine Learning, Minería de Datos o Estadística. Algunas de ellas, como Glueviz o Orange 3, nos pueden ayudar en la visualización de datos a través de una interfaz gráfica, pero son limitadas en relación al desarrollo de modelos de Deep Learning con redes neuronales o proyectos que requieran la integración con un sistema de control de versiones y de despliegue.
En la vista de ambientes, podemos actualizar, eliminar o degradar los paquetes de un ambiente de desarrollo hacia alguna versión específica que necesitemos.
También podemos crear nuevos ambientes y personalizarlos para que trabajen con paquetes y versiones distintas de Python en caso necesitemos varios ambientes de desarrollo con diferente conjunto de paquetes para diferentes proyectos.
Anaconda Prompt o terminal
Para trabajar con Python a través de una interfaz de línea de comandos (CLI) en Windows, debemos ejecutar “Anaconda Prompt (anaconda 3)“, y, si nos encontramos en macOS o Linux, debemos abrir la terminal.
Y seguido de ello, debemos ejecutar el comando python.
Visual Studio Code
Segun Wikipedia, Visual Studio Code es un editor de código fuente desarrollado por Microsoft para Windows, Linux y macOS. Incluye soporte para la depuración, control integrado de Git, resaltado de sintaxis, finalización inteligente de código, fragmentos y refactorización de código.
El instalador de Visual Studio Code 1.53 para Windows (64-bits) pesa aproximadamente 68 MB.
Instalación
Hagamos doble click sobre el instalador y sigamos por el asistente de instalación. El espacio que se requerirá para la instalación es de aproximadamente de 259.7 MB
Seleccionemos la opción “Add to PATH” y ambos “Add ‘Open with Code’ action to Windows Explorer” ya que el primero permitirá la ejecución del comando code desde la línea de comandos de sistema y el segundo agregará un acceso rápido para abrir archivos y carpetas con Visual Studio Code.
Terminada la instalación, ejecutemos Visual Studio Code e ingresemos a la vista de Extensiones (“Ctrl+Shift+X”) para buscar e instalar las siguientes 2 extensiones: Python (Microsoft) y Jupyter (Microsoft)
Nuevo archivo Python
Abramos nuestra carpeta de trabajo con “Abrir con Code”.
Y notemos que, ya sea creando los archivos Python (.py) desde el Explorador de Archivos del sistema o desde Visual Studio Code, igual se muestran en el siguiente explorador:
Para ejecutar Python debemos ubicarnos en la línea de código de interés o seleccionar las líneas de código que deseamos ejecutar y presionar “Shift+Enter”.
Jupyter Notebook
Jupyter Notebook (.ipynb) es un tipo de documento en formato JSON, que contiene toda la información necesaria para construir una lista ordenada de celdas de entrada/salida que pueden contener código (Python, C#, R, etc.), Markdown y gráficos.
No necesitamos descargar ni instalar nada puesto que Anaconda y Visual Studio Code ya gestionaron todo lo necesario para emplear este tipo de documento en nuestros proyectos.
Nuevo Jupyter Notebook
Abramos la lista de comandos de Visual Studio Code con “Ctrl+Shift+P” y ejecutemos “Jupyter: Create New Blank Jupyter Notebook” para crear nuestro primer documento.
Si deseamos abrir un archivo .ipynb con Visual Studio Code solo debemos darle click derecho y seleccionar la opción “Abrir con Code”.
Finalmente, podemos presionar “Shift+Enter” o usar alguna de las opciones disponibles en la parte superior del documento para ejecutar la(s) celda(s) de nuestro Jupyter Notebook.
Se disminuyó el peso del instalador de 132 Mb a 48 Mb.
Se ocultó la dependencia específica de Visual C++ 14 para que, en caso ya exista una versión más actualizada en el equipo, la instalación pueda continuar.
Interfaz gráfica
Se agregó una nueva opción en el menú lateral para poder entrar y salir del modo pantalla completa.
Incidentes
Se agregaron 12 nuevos tipos de mapas:
Imágenes satelitales
Calles
Híbrido (imágenes + calles)
Topográfico
Navegación
Calles (noche)
Terreno con etiquetas
Lona gris claro
Lona gris oscuro
National Geographic
Océanos
OpenStreetMaps
CORRECCIÓN DE ERRORES
Interfaz gráfica
Hacer click sobre la opción ocultar menú lateral dentro del módulo de contactos ya no provoca un mensaje de error.
Inició de sesión
Se solucionó el problema relacionado a la compatibilidad del navegador y el inicio de sesión por medio de Google.
El Gobierno Regional de Cajamarca es una institución pública regional con identidad propia, capital humano calificado y nivel tecnológico avanzado, capaz de administrar y brindar con calidad recursos y servicios públicos, propiciar condiciones favorables para el desarrollo de la inversión privada y liderar procesos de concertación con la sociedad civil, en el marco de una efectiva lucha contra la pobreza y la defensa del medio ambiente y sus recursos.
Seguridad Ciudadana es tarea de todos, y ese compromiso nos permitirá reducir indicadores delictivos. Garantizar seguridad es garantizar desarrollo.
ING. MESÍAS ANTONIO GUEVARA AMASIFUEN – GOBERNADOR REGIONAL
Antecedentes
La inseguridad ciudadana es un fenómeno social que afecta al derecho a la vida y deteriora el sistema democrático. Es por ello que, y dada la creciente ola de delincuencia en Perú, la gestión del Gobierno Regional de Cajamarca puso en marcha varias medidas para proteger y mejorar la calidad de vida de sus habitantes a través de la prevención, disuasión y control de la inseguridad ciudadana. Una de estas medidas es la modernización de la seguridad ciudadana.
Problemas a resolver
Digitalización y centralización
El empleo de libretas de notas físicas o Excel para almacenar los registros de los incidentes complicaban la tarea de organizar la información a nivel regional para la toma de decisiones.
Asímismo, la clasificación de los mismos no era muy específico, por ejemplo, el perjuicio personal se puede desglosar en bullying, coacción, difamasión, acoso, hostigamiento, injuría, insulto, invasión de privacidad, etc. Cada uno de estos casos tiene una naturaleza diferente, por ende requieren una organización y un enfoque adecuado para su prevención o control.
Vigilancia ciudadana participativa
La no existencia de mecanismos para compartir con los habitantes de forma amigable, eficiente y en tiempo real las situaciones de riesgo, como los fenómenos naturales o delincuencia común, mermaban las oportunidades para tomar precauciones o acciones por parte de la ciudadanía a tiempo.
Implementación
La implementación de Reach en la región de Cajamarca se dividió en dos etapas. La primera etapa, de 1 mes de duración, consistía en la configuración y entrega de las cuentas de usuario para cada uno de los 127 distritos y 13 provincias que forman parte de la región. La segunda etapa, de 5 meses de duración, consistía en una serie de capacitaciones presenciales para los responsables del uso de nuestra herramienta en su respectivas jurisdicciones.
Delimitación, configuración y planificación
Los datos sobre las delimitaciones geográficas de los distritos y departamentos se encontraban disponibles en formato .kml. Entonces, para poder emplearlos y culminar la primera etapa dentro de los tiempos estimados, fue necesario desarrollar un algoritmo que sea capaz de convertir eficientemente de forma automatizada esta enorme cantidad de datos a otros formatos más amigables para Reach como JSON, SQL Spatial Data y Google Encoded Polyline.
Cajabamba
Santa Cruz
Celendín
Chota
Contumaza
Cutervo
Hualgayoc
Jaén
San Ignacio
San Marcos
San Miguel
San Pablo
Municipalidad Provincial de Cajamarca
Capacitaciones sobre uso de Reach
Las capacitaciones presenciales buscaban especializar a los responsables de la seguridad ciudadana de cada distrito en el uso de Reach, así como la de asegurar su correcta instalación en cada central. Para cumplir con esta etapa se realizarón hasta 3 capacitaciones por día dependiendo de las circunstancias.
La elaboración del cronograma y la movilidad fueron los desafíos más grandes durante esta etapa. Algunas Municipalidades se encontraban muy lejos del centro de la ciudad y a veces las carreteras se encontraban bloqueadas por fenómenos naturales (derrumbes o deslizamientos) o porque se encontraban en mantenimiento.
Salida: 5:30 AM Tiempo de viaje: 1 hora Regreso: Había pase por la carretera desde las 12 AM hasta la 1:00 PM.
Municipalidad Distrital de Huabal
Jaén, 12 de Febrero
Salida: 5:30 AM Tiempo de viaje: 1 hora Regreso: Había pase por la carretera desde las 12 AM hasta la 1:00 PM.
Salida: 5:00 AM Tiempo de viaje: 3 horas 30 minutos Regreso: Había carro de regreso hasta las 3:00 PM
Municipalidad Distrital de Chontalí
Jaén, 14 de Febrero
Salida: 5:00 AM Tiempo de viaje: 3 horas 30 minutos Regreso: Había carro de regreso hasta las 3:00 PM
Salida: 12:00 AM Tiempo de viaje: 4 horas Regreso: Había carro de regreso a partir de las 4:00 AM del día siguiente
Municipalidad Distrital de Sallique
Jaén, 17 de Febrero
Salida: 12:00 AM Tiempo de viaje: 4 horas Regreso: Había carro de regreso a partir de las 4:00 AM del día siguiente
Hasta hace casi un par de años, la Face API de Microsoft Azure Cognitive Services ofrecía como únicas opciones para persistir rostros, las APIs de FaceList y PersonGroup. Esta situación cambió cuando se introdujeron LargeFaceList y LargePersonGroup
En el aprendizaje automático supervisado, un algoritmo aprende un modelo a partir de los datos de entrenamiento. El objetivo de cualquier algoritmo de aprendizaje automático supervisado es estimar lo mejor posible una función que pueda mapear las variables de salida según un conjunto de datos de entrada. El error de predicción para cualquier algoritmo de aprendizaje automático se puede dividir en tres partes:
Error de sesgo
Error de varianza
Error irreducible
El error irreducible no puede reducirse independientemente del algoritmo utilizado. Es el error introducido desde el encuadre elegido del problema y puede ser causado por factores como variables desconocidas que influyen en el mapeo de las variables de entrada a la variable de salida.
Error de sesgo
Los sesgos son los supuestos o simplificaciones que se hacen por un modelo para hacer que la función sea más fácil de aprender. En general, los algoritmos lineales tienen un alto sesgo por lo que son rápidos de aprender y más fáciles de entender, pero en general son menos flexibles. A su vez, tienen un rendimiento predictivo más bajo en problemas complejos.
Bajo sesgo: sugiere menos suposiciones sobre la forma de la función.
Alto sesgo: sugiere más suposiciones sobre la forma de la función.
Los ejemplos de algoritmos de aprendizaje automático de bajo sesgo incluyen: Decision Trees, k-Nearest Neighbors y Support Vector Machines. Los ejemplos de algoritmos de aprendizaje automático de alto sesgo incluyen: Linear Regression, Linear Discriminant Analysis and Logistic Regression.
Error de varianza
La varianza es la cantidad estimada de cambio de la función si se utilizaran datos de entrenamiento diferentes. Idealmente, no debería cambiar demasiado de un conjunto de datos de entrenamiento al siguiente, lo que significa que el algoritmo es bueno. Los algoritmos de aprendizaje automático que tienen una gran varianza están fuertemente influenciados por las especificaciones de los datos de entrenamiento.
En general, los algoritmos de aprendizaje automático no lineales, que son los que tienen mucha flexibilidad para ajustar los datos, tienen una alta probabilidad de poseer una gran variación. Los ejemplos de algoritmos de aprendizaje automático de baja varianza incluyen: Linear Regression, Linear Discriminant Analysis and Logistic Regression. Los ejemplos de algoritmos de aprendizaje automático de alta varianza incluyen: Decision Trees, k-Nearest Neighbors and Support Vector Machines.
El dilema
El objetivo de cualquier algoritmo de aprendizaje automático supervisado es lograr un sesgo bajo y una varianza baja. A su vez, el algoritmo debe lograr un buen rendimiento de predicción. Considerando los algoritmos mencionados anteriormente como ejemplos podemos concluir en lo siguiente:
Los algoritmos de aprendizaje automático lineales a menudo tienen un sesgo alto pero una varianza baja.
Los algoritmos de aprendizaje automático no lineales a menudo tienen un sesgo bajo pero una varianza alta.
Hay una estricta relación entre la complejidad del algoritmo y la dicotomía varianza-sesgo. Esto se puede entender mucho mejor si apreciamos correctamente la relación entre la complejidad de los algoritmos de aprendizaje y los errores que se pueden encontrar en los datos de entrenamiento y datos de validación.
La parametrización de los algoritmos de aprendizaje automático es a menudo una batalla para equilibrar el sesgo y la varianza. A continuación, se muestran dos ejemplos de configuración para algoritmos específicos:
El algoritmo k-nn (k-nearest neighbors) tiene un sesgo bajo y una varianza alta, pero el intercambio puede modificarse aumentando el valor de k, lo que aumenta el número de vecinos que contribuyen a la predicción y, a su vez, aumenta el sesgo del modelo.
El algoritmo SVM (Support Vector Machine) tiene un sesgo bajo y una varianza alta, pero se puede cambiar aumentando el parámetro que influye en el número de violaciones del margen permitido en los datos de entrenamiento, lo que aumenta el sesgo pero disminuye la varianza.
No hay escapatoria a la relación entre sesgo y variación en el aprendizaje automático:
Aumentar el sesgo disminuirá la varianza.
Aumentar la varianza disminuirá el sesgo.
Existe una relación de intercambio entre estas dos preocupaciones, el sesgo y la varianza proporcionan las herramientas para comprender el comportamiento de los algoritmos de aprendizaje automático en la búsqueda del mejor rendimiento predictivo.
Se le llama inducción al aprendizaje de conceptos generales a partir de ejemplos específicos. Esto es contrario a la deducción que busca aprender conceptos específicos a partir de reglas generales.
Considerando lo anterior, podemos deducir que una inducción eficiente es clave para el desarrollo de modelos predictivos en el aprendizaje automático supervisado.
Generalización en Machine Learning
La capacidad de generalización nos indica qué tan bien los conceptos aprendidos por un modelo de aprendizaje automático se aplican a ejemplos específicos que el modelo no vio cuando estaba aprendiendo. El objetivo de un buen modelo de aprendizaje automático es generalizar bien los datos de entrenamiento. Esto nos permite hacer predicciones en el futuro sobre los datos que el modelo nunca ha visto. Sobreajuste y subajuste son terminologías empleados en el aprendizaje automático para hacer referencia a qué tan bien un modelo generaliza nuevos datos ya que el ajuste excesivo y el ajuste insuficiente son las dos causas principales del rendimiento deficiente de los algoritmos de aprendizaje automático.
Sobreajuste
El sobreajuste hace referencia a un modelo que se sobre-entrena considerando cada mínimo detalle de los datos de entrenamiento. Esto significa que el ruido o las fluctuaciones aleatorias en los datos de entrenamiento son recogidos y aprendidos como conceptos por el modelo. El problema es que estos conceptos no se aplican a nuevos datos y tienen un impacto negativo en la capacidad de los modelos para generalizar.
Este sobre-entrenamiento suele darse con mayor probabilidad en modelos no lineales, por ello muchos de estos algoritmos de aprendizaje automático también incluyen parámetros o técnicas para limitar y restringir la cantidad de detalles que aprende. Algunos ejemplos de algoritmos no lineales son los siguientes:
Decision Trees
Naive Bayes
Support Vector Machines
Neural Networks
Sobreajuste y subajuste en problemas de clasificación
Subajuste
El subajuste hace referencia a un modelo que no puede modelar los datos de entrenamiento ni generalizar a nuevos datos. Un modelo de aprendizaje automático insuficiente no es un modelo adecuado. Las estrategias para mitigar un ajuste insuficiente son variadas y dependen del contexto.
Como puede deducirse, el subajuste suele darse con mayor probabilidad en modelos lineales, como por ejemplo:
Logistic Regression
Linear Discriminant Analysis
Perceptron
Sobreajuste y subajuste en problemas de regresión
¿Cómo detectarlos?
Tanto el sobreajuste como el subajuste perjudican el rendimiento de un modelo. Lo bueno es que existen algunas técnicas que se pueden utilizar para evaluar los algoritmos de aprendizaje automático:
Retención de conjunto de datos de validación.
Validación cruzada dejando uno fuera (Leave-one-out cross-validation or LOOCV).
Validación cruzada basada en remuestreo por grupos o pliegos (K-fold cross-validation)
Bootstrapping o remuestreo de Bradley Efron
La técnica de remuestreo más popular es la validación cruzada de k-fold, el cual permite entrenar y probar el modelo k-veces con diferentes subconjuntos de datos de entrenamiento y construir una estimación más objetiva del rendimiento de un modelo de aprendizaje automático cuando trabaja con datos invisibles.
En el caso del bootstrapping, la idea básica es dado un conjunto datos de entrenamiento extraer de esta tabla aleatoriamente y con reemplazo nuevas tablas de datos, cada una de la cuales deberá tener el mismo tamaño que la tabla original. Entonces modelo se estima en cada una de estas nuevas tablas (boostraps) y luego las predicciones se hacen para la tabla original de datos o conjunto de entranamiento.