02 Herramientas para Machine Learning
02 Herramientas para Machine Learning
2/45
Recursos 43
Enlaces de Interés 43
Bibliografía 43
Glosario. 45
3/45
Herramientas para machine learning
I. Introducción
La inteligencia artificial y el aprendizaje automático están impactando fuertemente en muchos sectores, como la
biomedicina, el marketing o recursos humanos. Ambos campos tendrán impacto en el futuro de la sociedad y en
cómo funciona.
Es por ello por lo que se está invirtiendo en el mundo una gran cantidad de dinero, en capital humano en I+D+i y
formación.
En la figura 1 se muestran los países del mundo que tienen más start-ups basadas en inteligencia artificial.
Existen diversos roles que se dedican a la inteligencia artificial, y, más en concreto, a un subcampo de ella, el
llamado aprendizaje automático.
4/45
Herramientas para machine learning
El científico de datos.
En España, el perfil más abundante es el del científico de datos (data scientist, en inglés). Este perfil se encarga
de extraer conocimiento de los datos, aprovechando dos factores clave: por un lado, cada vez se generan más
datos, y, por otro lado, gracias a la tecnología se tiene la capacidad de procesarlos cada vez mejor.
Una parte clave en la explotación del valor de los datos es la del aprendizaje automático y la
analítica avanzada. Desde la década de los años noventa, el campo del aprendizaje
automático experimentó un auge debido a la gran cantidad de datos que se empezó a generar
a causa de la irrupción social de Internet.
Todo ello ha originado que las técnicas que al principio solo usaban unos pocos ahora estén democratizadas. La
gran mayoría de herramientas y técnicas de aprendizaje automático son públicas, pero donde hay demanda
actualmente es en personas que sepan aplicar esas técnicas a los negocios.
II. Objetivos
El objetivo principal de esta unidad es el de introducir a los alumnos en los conceptos generales sobre el
aprendizaje automático en el negocio.
Además, también se tratan las distintas herramientas que se utilizan ampliamente en los proyectos de aprendizaje
automático y cómo desarrollar un proyecto.
5/45
Herramientas para machine learning
Es importante saber la diferencia entre ambos, ya que muchas veces se suele hacer referencia
erróneamente a alguno de estos conceptos. Hoy en día, la mayoría de las veces que se habla
de inteligencia artificial realmente se está aludiendo a aprendizaje automático.
Inteligencia artificial
La inteligencia artificial es un conjunto de herramientas y métodos para hacer que las computadoras se
comporten de manera inteligente. Comprende distintos campos, como son la robótica o el aprendizaje
automático.
En las últimas décadas, el aprendizaje automático se ha convertido en el campo de la inteligencia artificial más
usado y extendido.
Un diagrama de esta relación se muestra en la figura 2. En ella también se muestra el concepto de ciencia de
datos.
La ciencia de datos
La ciencia de datos se puede definir como el conjunto de tareas para descubrir y crear insights de negocio a
partir de los datos. El aprendizaje automático es una parte importante de la ciencia de datos.
6/45
Herramientas para machine learning
Llevar a cabo una definición de aprendizaje automático es complejo ya que tiene muchas aplicaciones y se
superpone con muchos otros campos. Debido a la expansión de sus usos, los límites no están muy definidos.
Tom Mitchell (1997) define el aprendizaje automático de la siguiente manera: El estudio de algoritmos de
computación que mejoran automáticamente su rendimiento gracias a la experiencia. Se dice que un programa
informático aprende sobre un conjunto de tareas, gracias a la experiencia y usando una medida de rendimiento,
si su desempeño en estas tareas mejora con la experiencia.
7/45
Herramientas para machine learning
El aprendizaje automático (James et al., 2017) se refiere a un amplio conjunto de herramientas para aprender
de los datos. Estas herramientas o métodos pueden ser clasificados en supervisados o no supervisados. Los
métodos supervisados involucran la construcción de modelos estadísticos para predecir o estimar una salida a
partir de una o más entradas. Con el aprendizaje no supervisado hay entradas, pero no una salida supervisada;
sin embargo, se pueden aprender relaciones y estructuras a partir de esos datos.
El aprendizaje automático proviene del uso conjunto de la estadística y de la informática. Es un campo muy útil
ya que permite a la computadora aprender sin estar explícitamente programada para realizar una tarea en
concreto. Es decir, no es necesario programar paso a paso instrucciones o reglas.
Por otro lado, el objetivo del aprendizaje automático es el de detectar patrones en datos existentes para,
posteriormente, aplicarlos a datos nuevos.
Por otro lado, el aprendizaje automático es un subcampo de las ciencias de la computación y una rama de la
inteligencia artificial cuyo objetivo es desarrollar técnicas que permitan que las computadoras aprendan. Se dice
que un agente aprende cuando su desempeño mejora con la experiencia.
Para que los algoritmos de aprendizaje automático funcionen bien requieren datos de calidad.
Existe una frase muy conocida al respecto que dice garbage in, garbage out (basura dentro, basura fuera). Esta
frase se refiere al hecho de que los datos deben ser de calidad para que el algoritmo de aprendizaje automático
detecte los patrones correctamente. De otro modo detectará patrones sin sentido o no correctos y las predicciones
e inferencias serán no serán correctas.
Los algoritmos de aprendizaje automático tienen como objetivo el de encontrar funciones que transformen
una o unas entradas en una salida. Estas funciones se estiman a partir de observaciones previas.
Idealmente, las funciones que se pretenden estimar son generalizables y es posible estimar con cierta precisión
las salidas que tendrían entradas futuras.
8/45
Herramientas para machine learning
Como muestra la figura 3, se obtienen patrones a partir de datos existentes y se estima una
función. Posteriormente, es posible estimar las salidas de nuevos datos a partir de la función
estimada con datos previos.
Por ejemplo, se podrían obtener patrones de consumo de clientes para saber qué
características hacen que contraten un determinado producto (se estima la función).
Posteriormente, se podría intentar predecir la salida de un nuevo cliente a partir de sus
características y de la función estimada.
Los tipos más comunes de aprendizaje automático son de lejos el aprendizaje supervisado y el aprendizaje no
supervisado.
9/45
Herramientas para machine learning
Estos métodos son los más sencillos y abundantes. En ellos existe un conocimiento a priori .
Son métodos supervisados porque, además de una serie de variables X (denominadas características), en los
datos de entrenamiento se encuentra también una variable Y (también llamada target o etiqueta), que es la
salida, es decir, el objetivo que predecir o inferir. Se tienen tuplas (X, Y).
Dentro de los algoritmos supervisados se encuentran los algoritmos de clasificación y los algoritmos de
regresión.
Los algoritmos de clasificación son aquellos en los que la variable target Y que se quiere predecir o inferir es
cualitativa. Por el contrario, la variable target de los algoritmos de regresión es una variable cuantitativa.
En este caso no existe conocimiento a priori. Es decir, no existe una variable Y que sirva como objetivo del
modelo.
10/45
Herramientas para machine learning
Su objetivo no suele ser predecir o inferir una variable, sino modelizar la estructura o distribución de los datos
de entrada para aprender más sobre ellos. Estos problemas tienden a ser más subjetivos ya que no existe una
respuesta correcta. Solo se tiene un conjunto de datos X.
Dentro de los algoritmos no supervisados destacan los algoritmos de clustering y los de reducción
dimensional.
El objetivo de los algoritmos de clustering es agrupar los datos en grupos homogéneos. En los algoritmos de
reducción dimensional se intenta expresar la misma información con menos variables.
Estos algoritmos se encuentran a medio camino entre los algoritmos de aprendizaje supervisado y los de
aprendizaje no supervisado.
En este caso existen tanto datos que están etiquetados como datos que no están etiquetados. Es decir,
además de tener tuplas (X, Y), se tienen datos solo de X de los que no se sabe su etiqueta Y.
El reto de estos algoritmos es el de intentar estimar la etiqueta de los datos sin ella y, así, tener muchas más tuplas
(X, Y). El objetivo es, al tener más datos, mejorar un modelo supervisado construido con tuplas (X, Y).
11/45
Herramientas para machine learning
Se utiliza para decidir acciones secuencialmente, como hace un robot cuando decide hacia dónde andar o cuál
es su próximo movimiento en un juego de ajedrez.
Son problemas en los que se sustituye la variable respuesta Y por información del tipo acción/reacción. La
computadora aprende por prueba y error en un ambiente que es dinámico, cambiante e incierto.
Son algoritmos muy utilizados en grandes bancos de inversión para trading, en robótica o en coches autónomos.
Este tipo de algoritmos no se tratan en este módulo ya que son de una complejidad muy alta,
sin embargo, es bueno conocer el concepto.
Al conjunto de etapas de un proyecto se le conoce como el ciclo de vida de este. Existen proyectos de ciencia de
datos que son exploratorios o simplemente analíticos. Para este tipo de proyectos algunos de los pasos detallados
a continuación no son necesarios (Mitchell, 1997).
12/45
Herramientas para machine learning
Entendimiento del problema y del negocio. El primer paso de un científico de datos es empaparse del
conocimiento de negocio y de lo que rodea al problema. Solo así podrá obtener las mejores variables que
predigan o estimen el objetivo del problema.
El segundo paso es el de la adquisición de los datos que predigan o infieran lo que se necesite.
Posteriormente, la etapa de preparación de datos. En ella se corrigen incongruencias, valores faltantes, valores
atípicos, etc. En este mismo punto se suele realizar un análisis exploratorio de los datos.
Luego, se encuentra el despliegue del modelo. El modelo que se ha desarrollado se despliega para obtener
predicciones de datos nuevos.
13/45
Herramientas para machine learning
Por último, suele haber una fase de monitorización de las predicciones que va obteniendo el modelo.
Aunque el ciclo anterior comprende todos los pasos de un proyecto de ciencia de datos, la etapa de
modelización en el aprendizaje automático tiene sus casuísticas particulares, que se van a exponer a
continuación.
Una vez entendido el problema de negocio, se han obtenido, preparado y entendido los datos de cara a modelizar
el problema, llega la hora de la modelización.
En este punto se cuenta con un dataset de variables independientes X y, en caso de problemas de aprendizaje
supervisado, de una variable dependiente Y.
El primer paso suele ser dividir los datos en distintos conjuntos. Típicamente se dividen en dos conjuntos
diferenciados:
Entrenamiento
(+ validación)
Test
El conjunto de test es el que no se usa en todo el proceso hasta la parte final, simplemente para comprobar que
el modelo generaliza correctamente.
Hay que recordar que el objetivo de los modelos de aprendizaje automático es el de encontrar la función que
estime mejor una salida a partir de una/s entrada/s de datos nuevos. Para evaluar cómo de bien
generaliza el modelo se deja ese conjunto de test aparte hasta el final, como si de datos nuevos se tratase.
Conjunto de
validación
Este conjunto permite comparar modelos distintos y escoger el que mejor se comporte.
14/45
Herramientas para machine learning
La primera sería separar los datos en tres conjuntos: entrenamiento + validación + test.
Los modelos se ajustan en los datos de entrenamiento y se elige el que mejor métrica tenga en los datos de
validación. Posteriormente, se evalúa cómo generalizaría en Test.
En el conjunto de entrenamiento se aplica lo que se denomina como “validación cruzada”. Esto es, dividir
Entrenamiento en n partes. Se ajusta el modelo a n-1 partes y se valida sobre la parte sobrante. Así, n veces. La
métrica que se suele utilizar es la media de las n iteraciones.
15/45
Herramientas para machine learning
Estas divisiones de los datos se realizan para evitar el problema más importante en el
aprendizaje automático, que es el que se denomina sobreajuste.
Para evitar este sobreajuste se dividen los datos como se explicó anteriormente. Se obtienen métricas en cada
conjunto y se comprueba que no se está sobreajustando.
Se sobreajusta cuando en los datos de entrenamiento el modelo se comporta mucho mejor que en los datos de
validación y de test.
Figura 8. Errores en entrenamiento (azul) y validación (rojo) a medida que aumenta la complejidad del
modelo
16/45
Herramientas para machine learning
El ciclo de la figura 6 intenta resumir las etapas más importantes en un proyecto de aprendizaje
automático. Todas esas etapas no las realiza en exclusiva un científico de datos. De hecho, no
debería hacerlas todas.
La figura 9 muestra las etapas de un proyecto de aprendizaje automático y los roles que le asigna a cada etapa la
empresa tecnológica Amazon.
Por último, existe un perfil en Amazon que es el de los ingenieros de aprendizaje automático, que se dedican a
sacarle todo el jugo a los modelos de aprendizaje automático.
Faltaría una parte final, que es la del despliegue de modelos, que depende de un perfil que se denomina
DevOps.
Esta es la estructura de un proyecto normal en una empresa tecnológica como Amazon, donde los proyectos son
de una gran complejidad y es necesario contar con muchos perfiles distintos.
En la mayoría de las empresas de España, generalmente, se podrían resumir todos estos perfiles en cuatro.
17/45
Herramientas para machine learning
Por un lado, se encuentra el arquitecto de datos, que se encarga de la infraestructura sobre la que realizar el
proyecto.
Por otro lado, están los ingenieros de datos que crean pipelines de datos, es decir, se aseguran de que los
datos estén donde deben en cada momento.
Están también los científicos de datos, que usan todos los datos necesarios y construyen un modelo que predice
o infiere algo.
Por último, los DevOps productivizan el modelo que los científicos de datos realizan.
Independientemente, los roles de empresas como Amazon deberían tomarse como referencia para cualquier
proyecto de ciencia de datos y de aprendizaje automático.
Hay lenguajes que ofrecen funcionalidades mejores en algunos conceptos o tareas. Algunos de ellos son Python,
R, Julia o Java.
En este capítulo se exponen librerías y entornos de desarrollo en Python, ya que es el lenguaje más
ampliamente usado por su flexibilidad y por sus librerías, las cuales permiten desarrollar un proyecto de principio a
fin.
4.1.1. NumPy
NumPy (James et al., 2017) es una librería centrada en el tratamiento de datos multidimensionales y en las
operaciones matemáticas que realizar sobre esos datos.
Ofrece rapidez computacional y de ejecución de funciones complejas sobre arrays. Se centra en la limpieza y la
manipulación de los datos.
18/45
Herramientas para machine learning
Simulaciones aleatorias.
4.1.2. Pandas
Pandas (Microsoft Docs, 2020) es una librería centrada principalmente en la manipulación y el análisis de datos.
19/45
Herramientas para machine learning
Unión de datasets.
Pandas utiliza los llamados dataframes, que son representaciones bidimensionales de los datos en forma de tabla.
4.1.3. Matplotlib
Matplotlib (Van der Walt, Colbert Varoquaux, 2011) es una de las librerías más populares de visualización de
datos en Python.
Su propósito en el aprendizaje automático es el de servir al científico de datos para visualizar patrones en los
datos.
Es una librería que se utiliza para visualizar gráficos en 2D. Su módulo llamado pyplot hace que sea sencillo crear
visualizaciones, cambiar estilos, formatos, etc.
20/45
Herramientas para machine learning
4.1.4. Scikit-learn
Scikit-learn (McKinney, 2010) es una de las librerías de aprendizaje automático más usadas en Python.
Incluye una integración bastante sencilla con otras librerías de Python como Numpy o Pandas.
Clasificación.
Regresión.
Clustering.
Reducción dimensional.
Selección de modelos.
Preprocesamiento de datos.
Es una librería que pretende ser de fácil uso para comenzar a realizar modelos estadísticos.
21/45
Herramientas para machine learning
4.1.5. SciPy
SciPy (Hunter, 2007) es una librería muy popular para aprendizaje automático que contiene distintas
funcionalidades de optimización, algebra lineal, integraciones y estadística.
Módulos de optimización.
Procesamiento de imágenes.
4.1.6. TensorFlow
TensorFlow (Pedregosa et al., 2011) es una de las mejores librerías de aprendizaje automático que hay en Python.
Desarrollada por Google, permite crear modelos tanto para principiantes como para expertos de una
manera sencilla.
Es posible integrar los modelos no solo en computadoras, sino también en dispositivos móviles.
4.1.7. Keras
Keras (Oliphant, 2007) es una librería de redes neuronales y aprendizaje profundo que usa las funcionalidades
de otras como TensorFlow o Theano.
22/45
Herramientas para machine learning
Está escrita en Python. Su objetivo es realizar implementaciones de redes neuronales de una manera más
sencilla, modulable y amigable que con TensorFlow.
Entre sus características para crear redes neuronales se encuentran las siguientes:
Creación de capas.
Funciones de activación.
4.1.8. PyTorch
PyTorch (Abadi et al., 2015), desarrollado por Facebook, es una de las pocas librerías de aprendizaje automático
para Python.
Facilidad de aprendizaje.
En términos generales, un IDE consiste en un editor que puede ser accedido por medio de una interfaz
gráfica de usuario.
Es posible escribir programas de Python o R en editores de texto. Sin embargo, estos no son
suficientes para crear sistemas algo complejos, que requieren integrar distintos módulos y
librerías. Es ahí, donde se requiere un IDE (Chollet, 2015).
Empresas como Google o Microsoft cuentan con servicios gratuitos de desarrollo en la nube. En esta unidad se
tratan varias alternativas, ya sea en local o en la nube.
23/45
Herramientas para machine learning
En desarrollo en local o en un solo servidor existen varias alternativas, pero dos de ellas son las más usadas
actualmente.
Una es Jupyter, que es muy usada para proyectos con no mucha complejidad técnica en desarrollo de software.
Por otro lado, se encuentra PyCharm, que es una muy buena alternativa para proyectos donde la complejidad
técnica de desarrollo es avanzada.
Existen otras alternativas, como Spyder o Rodeo, pero no son tan usadas como las anteriores.
Jupyter
El proyecto Jupyter (Paszke, 2017) se inició en el año 2014 para soportar trabajos de ciencia de datos de
manera interactiva usando distintos tipos de lenguajes.
Jupyter está formado por tres componentes: JupyterLab, Jupyter Notebook y JupyterHub.
JupyterLab
Entorno de desarrollo interactivo basado en web. Es modular, permite añadir extensiones y nuevos
componentes integrados. Es una muy buena opción ya que no es muy complejo, pero al mismo tiempo
cuenta con muchas funcionalidades.
Jupyter Notebook
Es una aplicación web que permite crear y compartir documentos con código que se ejecuta en vivo. Es la
primera opción para las personas que comienzan en ciencia de datos, ya que es el entorno más sencillo y
rápido de usar.
JupyterHub
Es una versión multiusuario de Jupyter Notebook. Permite autenticarse a cada uno de los usuarios. Es muy
usado en empresas o universidades donde cada persona se autentifica y trabaja en sus propias tareas.
24/45
Herramientas para machine learning
PyCharm
PyCharm (Jain, 2016) es un IDE desarrollado por JetBrains, compañía de software ubicada en la República
Checa.
Existen muchas maneras de compartir un notebook de Jupyter con otras personas, como ponerlos en GitHub o
compartir un link de nbviewer. Sin embargo, la otra persona solo puede interactuar con su fichero notebook si
también tiene Jupyter Notebook instalado. Esto es una desventaja a la hora de querer compartir código que no
requiera de una instalación por parte de la otra persona.
Jupyter Notebook se ha convertido en un standard para los profesionales que se dedican al aprendizaje automático
y la analítica avanzada y muchas empresas de software han desarrollado servicios de Jupyter Notebook en la nube.
Este hecho permite ejecutar los notebooks en la nube sin tener que instalar nada en un
ordenador personal.
Algunos de los servicios más populares son Google Colab, Azure Notebooks, AWS SageMaker o Kaggle Kernels.
25/45
Herramientas para machine learning
Google Colab
Google Colab (Kluyver et al., 2016) es una muy buena alternativa gratuita para trabajar con librerías de redes
neuronales y aprendizaje profundo como PyTorch, Keras o TensorFlow. Se pueden crear notebooks, subirlos
y compartirlos por Google Drive.
Visualmente es muy parecido a Jupyter Notebook. Permite utilizar las GPU y las TPU de Google como
procesador, en lugar de una CPU clásica.
La gran ventaja de Google Colab es que es muy sencillo de utilizar, ya que simplemente se necesita una
cuenta de Google. Además, es fácil de compartir un notebook, como si fuese cualquier otro documento. Una de
las desventajas es que no es posible colaborar con otra persona a tiempo real.
Azure Notebooks
Es muy similar a Google Colab en funcionalidades. La interfaz es exactamente igual a la de Jupyter Notebook.
Una de las ventajas es que las empresas no necesitan contar con servidores para aprendizaje automático ni
entornos de programación en su propia infraestructura.
En los servicios de MLaaS la computación se realiza en la nube, en los servidores y máquinas de la empresa
que proporciona el servicio.
El MLaaS es un conjunto de servicios que están listos para usarse de cara a realizar modelos
de aprendizaje automático. Utiliza modelos de supervisados y no supervisados genéricos
que se ajustan a muchos de los proyectos de aprendizaje automático en la empresa (no a
todos, ya que para cosas específicas es imprescindible la realización de los modelos desde
cero).
26/45
Herramientas para machine learning
Papeles muy destacados como proveedores de servicios de MLaaS los tienen grandes tecnológicas mundiales
como Amazon, con su servicio Amazon ML, Microsoft, con Azure ML, IBM, con Watson, o Google, con Cloud ML.
Todas estas empresas, además de proveer MLaaS, también proveen muchos otros servicios.
BigML nace en 2011 con el objetivo de democratizar el aprendizaje automático a todas las personas. Diseñaron y
construyeron una plataforma en la que crear modelos de aprendizaje automático de una manera más sencilla y
amigable.
En esta unidad se presenta una de estas plataformas MLaaS, llamada BigML. Por medio de tutoriales se explica
cómo utilizar la plataforma para realizar unos primeros modelos.
Todos los modelos predictivos que se desarrollan en BigML cuentan con visualizaciones interactivas y variables
explicativas que hacen de ellos modelos interpretables desde el punto de vista de negocio.
Los modelos se pueden exportar y ser usados por otros servicios y lenguajes de programación.
27/45
Herramientas para machine learning
Desde el punto de vista de la privacidad y la seguridad, la plataforma utiliza HTTPS, asegurando las
comunicaciones. Además, nadie puede acceder a los datos que se suben a la web (tampoco el equipo de
BigML), lo que hace que se garantice la privacidad.
Interfaz web
Se accede por medio de login a la cuenta por medio de una web. Guía al analista en el proceso de subida de
datos y en la creación de modelos descriptivos o predictivos. Además, permite evaluar el modelo y realizar
predicciones cuando se necesite.
Es una interfaz por consola llamada bigmler que está construida sobre una API de Python. Permite más
flexibilidad que la interfaz web, ya que posibilita hacer predicciones no solo con un modelo remoto, sino con
modelos alojados en local.
API
Se trata de una API Restful que puede usarse desde comandos o por medio de lenguajes de programación
como Python.
28/45
Herramientas para machine learning
El precio de BigML depende de la capacidad de cómputo que se necesite. Cuenta con una
versión gratuita limitada a 16 MB de datos. Un mínimo de capacidad máxima de los datos en
una empresa debería ser de aproximadamente 4 GB, aunque depende del caso de uso.
No es barato si se compara con el coste de tener una plataforma alquilada en Cloud. La ventaja
es que no se necesitan conocimientos avanzados de aprendizaje automático ni de
programación, por lo que en ciertas circunstancias puede ser una muy buena opción.
Los casos de uso en los que se puede utilizar BigML vienen marcados por el tipo de algoritmos que permite. Es
posible su uso en infinidad de aplicaciones de distintos sectores, como el aeroespacial, automovilístico, energía,
telecomunicaciones o servicios financieros.
Entre los algoritmos que tiene preconfigurados se encuentran tanto algoritmos de aprendizaje supervisado
como algoritmos de aprendizaje no supervisado:
Clasificación y regresión usando árboles, algoritmos ensamblados, regresiones logísticas o redes neuronales.
También cuenta con algoritmos de predicción de series temporales.
Algunos de los casos de uso a los que se puede aplicar BigML son los siguientes:
Banca y finanzas
Predicción del riesgo de crédito de un préstamo: se puede modelizar como un problema de clasificación
donde la variable dependiente Y toma valor 1 en el caso de impagar y 0 en el caso de no impagar. El
modelo devolvería una probabilidad de impago.
Predicción del valor de una acción: se podría intentar predecir el precio de una acción basándose en
precios anteriores. En ese caso sería un problema de predicción de series temporales.
Modelo de inferencia del coste de alquiler: basándose en el coste del alquiler de casas cercanas, es
posible estimar el precio de alquiler de una casa. En este caso se modelizaría como un problema de
regresión.
Estimación de las ventas de una tienda: se puede tratar como un problema de regresión o de series
temporales, dependiendo de la importancia que tenga el factor temporal en el negocio.
Predicción de un criterio para mostrar publicidad: se puede obtener la respuesta de un cliente a una
determinada campaña o anuncio. Se podría tratar como un problema de clasificación.
29/45
Herramientas para machine learning
Sector de la energía
Estimación del consumo eléctrico en una ciudad: se podría tratar como un problema de series
temporales al suponer que el consumo de electricidad depende del día y la hora.
Predicción de la salida de potencia de un sistema solar: es posible utilizar series temporales para
obtener la potencia de las placas solares en función del tiempo.
Fraude y crimen
Predicción de fraude en tarjetas: es posible utilizar un modelo de detector de anomalías para este
propósito.
Localizaciones de delitos: es de utilidad para anticiparse a los delitos y puede ser tratado como un
problema de series temporales o de clasificación.
Hay problemas en los que es posible utilizar una aproximación con una tipología de métodos u otra, dependiendo
de lo que se pretenda predecir.
También puede tratarse como un problema de regresión al querer predecir la cantidad de los posibles impagos.
Cuando una empresa se plantea adquirir un servicio como BigML debe saber las alternativas
que tiene y si compensa desde el punto de vista del presupuesto. Existen otros servicios
similares como DataRobot o AutoML, que se tratan en la unidad 5. Se podría decir lo mismo de
esos servicios.
Primero de todo, es muy importante analizar la empresa y el equipo que va a utilizar este tipo de servicio.
Si el equipo no tiene muchos conocimientos de ciencia de datos, son perfiles de business intelligence o
analistas de datos sin conocimientos de aprendizaje automático, BigML puede ser una muy buena herramienta
para empezar a introducir modelos de aprendizaje automático en la empresa.
Por el contrario, si el equipo es muy técnico, con varios años de experiencia realizando modelos estadísticos y
de aprendizaje automático, existen otras alternativas y habría que analizar si merecería la pena desde el punto
de vista del presupuesto.
30/45
Herramientas para machine learning
Independientemente del usuario que utilice el servicio, BigML tiene una serie de ventajas con las que hay que
contar de cara a adquirir el servicio.
Integración y
automatización
La principal ventaja es que permite una automatización de todo el proceso, lo cual ahorra mucho tiempo en
desarrollos.
Escalabilidad
Predicciones en
real-time
La solución de BigML permite tener una máquina dedicada a predicciones en una nube privada.
Evita la dependencia
en librerías
Permite ser independiente de la infraestructura y las librerías, lo cual reduce la complejidad, el coste de
mantenimiento de códigos y la deuda técnica de los proyectos.
Es por ello por lo que en esta unidad se presentan ciertas guías sobre este tema.
Que un código tenga una buena estructura es beneficioso para el mantenimiento del código y la
legibilidad de este. Esto es bueno aplicarlo a cualquier lenguaje de programación, no solo a
Python.
31/45
Herramientas para machine learning
Definición de funciones.
Función principal. Se define como if __name__==’__main__’ y es la función que se ejecuta en los módulos de
Python.
32/45
Herramientas para machine learning
33/45
Herramientas para machine learning
Existen numerosas reglas de estilo. Algunas de las más importantes son las siguientes:
Las funciones, nombres de variables y métodos, en minúscula y separando las palabras con _.
34/45
Herramientas para machine learning
Carpeta-Nombre-Proyecto
|---- data
|---- images
|---- notebooks
|---- reports
Respecto a esto, existe una librería en Python llamada Cookiecutter que permite generar plantillas de
proyectos de forma automática.
Para un correcto aislamiento de los entornos, Python cuenta con los denominados entornos virtuales. El objetivo de
los entornos virtuales es crear un entorno aislado para cada proyecto de Python. Es decir, cada proyecto tiene sus
propias dependencias independientes.
Los tres tipos de entornos virtuales en Python son Virtualenv, Conda y Pipenv. Estos tienen un uso similar.
A continuación, se pondrá el foco en Conda, ya que es de los que más se usan en ciencia de datos.
35/45
Herramientas para machine learning
5.4.1. Conda
Conda es un sistema de entornos virtuales que viene de la mano de Anaconda. Conda es una distribución de
Python que gestiona versiones e instalaciones y facilita la instalación de librerías. Viene por defecto con
muchas librerías científicas instaladas.
Existe también una versión lite denominada Miniconda, que no viene con librerías científicas instaladas.
Una vez instalado Conda, se puede usar una serie de comandos para trabajar con entornos, como, por ejemplo:
Para iniciar Jupyter Notebook con ese entorno es necesario primero activar el entorno (paso 2)
y posteriormente levantar el servicio de Jupyter:
$ jupyter notebook
Por otro lado, hay que tener en cuenta que también se puede trabajar con entornos virtuales
desde la interfaz gráfica de Anaconda, lo que suele resultar más sencillo para muchos
usuarios.
36/45
Herramientas para machine learning
VI. Resumen
También se han tratado los tipos de problemas que se pueden resolver con algoritmos de aprendizaje
automático.
Entre ellos destacan los problemas de aprendizaje supervisado y los de aprendizaje no supervisado. Ellos
dependen de la existencia o no de una variable que sirva como objetivo del problema.
El ciclo de los proyectos de ciencia de datos y aprendizaje automático también ha sido objeto de estudio
en esta unidad.
Es destacable el carácter iterativo que se suele aplicar en los proyectos de aprendizaje automático. En cada
iteración se busca mejorar los resultados de iteraciones previas.
Además, entre las herramientas y técnicas más utilizadas se presentó el concepto de aprendizaje
automático como servicio.
Herramientas como BigML son muy utilizadas en negocio, sobre todo cuando no se cuenta con una
infraestructura o equipo de ciencia de datos muy avanzados.
Por último, pero no menos importante, está el hecho de mantener unas buenas prácticas en la estructura de
los proyectos, código y garantizar la reproductibilidad en otras máquinas distintas a la inicialmente utilizada
para programar.
37/45
Herramientas para machine learning
Jones, Herbert. Aprendizaje automático: una guía para el aprendizaje automático, las
redes neuronales y el aprendizaje profundo para principiantes que desean entender las
aplicaciones y la inteligencia artificial. 2019.
Wilkins, Neil. Inteligencia artificial: una guía completa sobre la IA, el aprendizaje
automático, el Internet de las cosas, la robótica, el aprendizaje profundo, el análisis
predictivo y el aprendizaje reforzado. Bravex Publications; 2020.
38/45
Herramientas para machine learning
Ejercicios
Caso práctico 1
Se pide
Explica en cada uno de los siguientes escenarios si se trata de un problema de aprendizaje supervisado, no
supervisado, por refuerzo o semisupervisado.
Indica, cuando proceda, si se estaría más interesado en una inferencia o una predicción.
Se almacena un conjunto de datos de 300 empresas españolas. De cada empresa se obtienen los beneficios,
el número de empleados, la industria y el salario medio de los empleados. El objetivo es hallar qué factores
afectan al salario medio de los empleados.
Una empresa de marketing necesita realizar campañas dirigidas a sus clientes. Es capaz de realizar tres
campañas distintas, pero no sabe a qué cliente impactar con cada campaña. Conoce datos como la edad, la
profesión o el sueldo medio de su barrio.
Una empresa de retail necesita saber cuánto stock poseer en sus tiendas. Para ello es importante conocer qué
demanda va a tener en cada tienda cada día. Conoce simplemente las ventas diarias que ha realizado en cada
uno de los días durante el último año.
Solución
1
En este caso, se trata de un problema de aprendizaje supervisado, en el que la variable que inferir es el
salario medio de los empleados. Esta variable es el target.
Se cuenta con un total de 300 muestras, en las que las variables son:
El objetivo no es tanto predecir el salario medio de los empleados, sino inferir de qué depende el salario medio
de los empleados. Si depende más de los beneficios empresariales, el número de empleados o la industria. Es,
por tanto, un problema en el que estamos interesados en una inferencia.
39/45
Herramientas para machine learning
Este escenario es un escenario de segmentación de clientes. El objetivo primero es el de separar los datos (en
este caso, los clientes) en distintos grupos.
Para ello se hace uso de los algoritmos de clustering, que son un subconjunto de los algoritmos de aprendizaje
no supervisado.
Por otro lado, no se intenta predecir nada, el objetivo es obtener tipologías de clientes en función de los insights
del clustering. Por tanto, es un problema de inferencia.
El objetivo en este escenario es predecir las ventas a partir de las ventas diarias previas.
Es un problema de aprendizaje supervisado ya que existe una variable que predecir, que en este caso son las
ventas.
Y = Ventas día t.
Por otro lado, se quiere predecir el valor futuro a partir de eventos pasados, ya que a partir de las ventas
pasadas se estiman las ventas futuras.
Caso práctico 2
Enunciado
Un profesional de analítica de un gran banco y con gran experiencia gestionando proyectos de datos es contratado
por una start-up. Su objetivo es crear un departamento de ciencia de datos y big data desde cero.
El CEO de la empresa le comenta que puede empezar contratando solo a cinco personas, posteriormente se
plantearía aumentar el equipo.
En la empresa hay bases de datos relacionales on-premise, pero aún no hay una infraestructura big data.
40/45
Herramientas para machine learning
Existe una gran preocupación por la protección de datos y reticencias hacia tecnologías en la nube.
Se pide
1
Solución
1
Este problema tiene una solución abierta ya que existen varias formas de llevarlo a cabo.
En primer punto, ya que no hay infraestructura big data y hay una gran reticencia a la nube, quizá una buena
opción fuese crearla en la propia empresa, es decir, on-premise. Para ello, sería necesaria una mayoría del
equipo en la parte más técnica. Una estructura sería la siguiente:
Al principio de cualquier proyecto de datos es muy importante el papel de los ingenieros de datos, ya que la
mayoría del tiempo se gasta en esa parte. Por otro lado, el científico de datos es necesario para obtener valor
de los datos mientras tanto. Pocas empresas tienen la paciencia necesaria para no tener ningún output de
negocio mientras se monta una plataforma.
En un primer momento, y con la organización del punto a), no, ya que toda la infraestructura estaría en la propia
empresa. Sin embargo, sería planteable en casos en los que se necesitase realizar proyectos en poco tiempo.
41/45
Herramientas para machine learning
El entorno de desarrollo con la respuesta a) sería on-premise en servidores propios. En caso de no haber tanta
preocupación por la protección de datos, la opción de crearlo en la nube sería muy válida. Servicios de
notebooks en la nube podrían evitar más de un quebradero de cabeza.
42/45
Herramientas para machine learning
Recursos
Enlaces de Interés
Azure Notebook
https://notebooks.azure.com/
BigML
https://bigml.com/features
Google Colab
https://colab.research.google.com/
Bibliografía
“ Python Virtual Environments: A Primer” :
McKinney, Wes. Proceedings of the 9th Python in Science Conference; 2010; pp. 51-56.
43/45
Herramientas para machine learning
Conda.
Pedregosa, Fabian; Varoquaux, Gaël; Gramfort, Alexandre; Michel, Vincent; Thirion, Bertrand; Grisel, Olivier;
Blondel, Mathieu; Prettenhofer, Peter; Weiss, Ron; Dubourg, Vincent; Vanderplas, Jake; Passos, Alexandre;
Cournapeau, David; Brucher, Matthieu; Perrot, Matthieu; Duchesnay; Édouard. . Journal of Machine Learning
Research; 2011; n. 12: pp. 2825-2830.
“The NumPy Array: A Structure for Efficient Numerical Computation” :
Van der Walt, Stéfan; Colbert, S. Chris; Varoquaux, Gaël. Computing in Science & Engineering; 2011; n. 13:
pp. 22-30.
An Introduction to Statistical Learning: With Applications in R :
James, Gareth; Hastie, Trevor; Witten, Daniela; Tibshirani, Robert. Springer; 2017.
44/45
Herramientas para machine learning
Paszke, Adam; Gross, Sam; Chintala, Soumith; Chanan, Gregory; Yang, Edward; DeVito, Zachary; Lin,
Zeming; Desmaison, Alban; Antiga, Luca; Lerer, Adam. 2017.
GitHub repository :
Abadi, Martín; Agarwal, Ashish; Barham, Paul; Brevdo, Eugene; Chen, Zhifeng; Citro, Craig; et al.:2015.
Glosario.
Ciencia de datos: Cmpo interdisciplinario que involucra métodos científicos, procesos y sistemas para
extraer conocimiento o un mejor entendimiento de datos en sus diferentes formas, ya sea estructurados o no
estructurados, lo cual es una continuación de algunos campos de análisis de datos como la estadística, la
minería de datos, el aprendizaje automático y la analítica predictiva.
CPU: Hardware dentro de un ordenador u otros dispositivos programables que interpreta las instrucciones
de un programa informático mediante la realización de las operaciones básicas aritméticas, lógicas y de
entrada/salida del sistema.
DevOps: DevOps es una práctica de ingeniería de software que tiene como objetivo unificar el desarrollo
de software y la operación del software.
GPU: Coprocesador dedicado al procesamiento de gráficos u operaciones de coma flotante para aligerar
la carga de trabajo del procesador central en aplicaciones como los videojuegos o 3D interactivas.
Jupyter Notebook: Documento JSON, que sigue un esquema versionado y que contiene una lista
ordenada de celdas de entrada/salida que pueden contener código, texto (usando Markdown),
matemáticas, gráficos y texto enriquecidos, generalmente terminado con la extensión .ipynb.
TPU: Circuito integrado de aplicación específica (ASIC) acelerador de IA desarrollado por Google
específicamente para el aprendizaje automático.
45/45