0% encontró este documento útil (0 votos)
26 vistas45 páginas

02 Herramientas para Machine Learning

Cargado por

javirdnetflix
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
26 vistas45 páginas

02 Herramientas para Machine Learning

Cargado por

javirdnetflix
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Herramientas para machine learning

© Ediciones Roble, S.L.


Indice
Herramientas para machine learning 4
I. Introducción 4
II. Objetivos 5
III. Visión general de machine learning 5
3.1. Qué es el aprendizaje automático 6
3.2. Tipos de problemas de aprendizaje automático 9
3.2.1. Aprendizaje supervisado 10
3.2.2. Aprendizaje no supervisado 10
3.2.3. Aprendizaje semisupervisado 11
3.2.4. Aprendizaje por refuerzo 11
3.3. El ciclo de vida del machine learning 12
3.3.1. Etapa de modelización 14
3.4. Roles y responsabilidades en un proyecto de aprendizaje automático 16
IV. Herramientas de machine learning 18
4.1. Librerías más importantes de Python para aprendizaje automático 18
4.1.1. NumPy 18
4.1.2. Pandas 19
4.1.3. Matplotlib 20
4.1.4. Scikit-learn 21
4.1.5. SciPy 22
4.1.6. TensorFlow 22
4.1.7. Keras 22
4.1.8. PyTorch 23
4.2. Entornos de desarrollo 23
4.2.1. Desarrollo en local 23
4.2.2. Desarrollo en la nube 25
4.3. Aprendizaje automático como servicio (MLaaS). BigML 26
4.3.1. ¿Qué es el aprendizaje automático como servicio o MLaaS? 26
4.3.2. Proveedores de servicios de MLaaS 26
4.3.3. ¿Qué es BigML? 27
4.3.4. Casos de uso de BigML 29
4.3.5. Ventajas de utilizar servicios como BigML 30
V. Estructurar un proyecto de machine learning 31
5.1. Estructura del código en Python 31
5.2. Reglas de estilo de código 34
5.3. Estructuras de carpetas 34
5.4. Reproductibilidad y uso de entornos 35
5.4.1. Conda 36
VI. Resumen 37
VII. Lecturas recomendadas 37
Ejercicios 39
Caso práctico 1 39
Se pide 39
Solución 39
Caso práctico 2 40
Enunciado 40
Se pide 41
Solución 41
Recursos 43

2/45
Recursos 43
Enlaces de Interés 43
Bibliografía 43
Glosario. 45

3/45
Herramientas para machine learning

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.

Figura 1. Inversión en inteligencia artificial por país

Figura 1. Inversión en inteligencia artificial por país.


Fuente: Roland Berger, 2020.

El sector de la inteligencia artificial es un sector de mucho futuro en el que existe más


demanda de trabajadores que personas que sean expertas en él.

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

Algunos de estos roles son:

El científico de datos.

El ingeniero de aprendizaje automático.

O el investigador de inteligencia artificial.

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.

Los resultados de aprendizaje de la unidad son los siguientes:

Entender el contexto empresarial de los equipos y proyectos de aprendizaje automático.


Comprender las herramientas necesarias para el desarrollo efectivo de un proyecto de
aprendizaje automático.
Saber estructurar un proyecto de aprendizaje automático.
El conocimiento de buenas prácticas de trabajo, que en el ámbito profesional son de
gran utilidad.

III. Visión general de machine learning

5/45
Herramientas para machine learning

3.1. Qué es el aprendizaje automático


El concepto de aprendizaje automático está muy ligado al de inteligencia artificial.

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

Figura 2. Relación entre ML, AI y ciencia de datos

Figura 2. Relación entre ML, AI y ciencia de datos.


Fuente: DataCamp, 2020.

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

Figura 3. Funcionamiento de un modelo de ML

Figura 3. Funcionamiento de un modelo de ML.


Fuente: elaboración propia.

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.

3.2. Tipos de problemas de aprendizaje automático


Como se ha visto en el anterior punto, los modelos de aprendizaje automático consisten en aprender de una serie
de datos. Existen multitud de problemas a los que se les puede dar solución con algoritmos de aprendizaje
automático, así como distintos tipos de algoritmos de aprendizaje automático.

Los algoritmos de aprendizaje automático pueden aprender de cuatro maneras distintas:

Mediante un aprendizaje supervisado.

Con aprendizaje no supervisado.

Con aprendizaje semisupervisado.

O con aprendizaje por refuerzo.

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

La diferencia más importante radica en los llamados datos de entrenamiento.

Como se comentó, los algoritmos de aprendizaje automático aprenden patrones a partir de


datos existentes y los aplican a datos nuevos. Los datos existentes es lo que se denomina
como “datos de entrenamiento”. El proceso de construir un modelo para obtener patrones de
esos datos de entrenamiento se llama “entrenar un modelo”.

3.2.1. Aprendizaje supervisado

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.

Un esquema del funcionamiento de estos modelos se muestra en la figura 4.

Figura 4. Esquema del aprendizaje supervisado

Figura 4. Esquema del aprendizaje supervisado.


Fuente: MachineLearningParaTodos.com, 2020.

3.2.2. Aprendizaje no supervisado

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.

Un esquema de funcionamiento de este tipo de algoritmos se puede ver en la figura 5.

Figura 5. Esquema del aprendizaje no supervisado

Figura 5. Esquema del aprendizaje no supervisado.


Fuente: MachineLearningParaTodos.com, 2020.

3.2.3. Aprendizaje semisupervisado

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).

3.2.4. Aprendizaje por refuerzo

11/45
Herramientas para machine learning

Este tipo de aprendizaje automático es el más complejo de todos.

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.

3.3. El ciclo de vida del machine learning


En el punto 3.1 se introdujo el proceso de funcionamiento de un modelo de aprendizaje automático, en este se
analizan las distintas etapas que tiene un proyecto de aprendizaje automático.

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).

En la figura 6 se muestra cada una de las etapas de un proyecto de ciencia de datos.

12/45
Herramientas para machine learning

Figura 6. Ciclo de vida de ciencia de datos

Figura 6. Ciclo de vida de ciencia de datos.


Fuente: ttmind.com, 2020.

Los pasos, en orden, son los siguientes:

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.

El siguiente paso es la modelización, en el que se entrena y evalúa el modelo.

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.

La figura 6 muestra que un proyecto de aprendizaje automático es un proceso iterativo, siendo


necesario en muchas ocasiones repetir el ciclo varias veces hasta alcanzar resultados
satisfactorios. Además, también es posible pasar de la fase de modelización a una fase previa,
como la adquisición de datos en caso de necesitar introducir nuevas variables.

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.

3.3.1. Etapa de modelizació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)

El conjunto de entrenamiento es aquel al que se ajusta el modelo de aprendizaje automático.

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

El conjunto de validación es el tercer conjunto y suele usarse casi siempre.

Este conjunto permite comparar modelos distintos y escoger el que mejor se comporte.

14/45
Herramientas para machine learning

Generalmente, se ajustan varios modelos al conjunto de entrenamiento, se obtienen unas


métricas sobre el conjunto de validación y se elige el que mejor métrica obtenga en validación.
Posteriormente, se aplica ese modelo a test y se obtiene la métrica final.

En cuanto las divisiones de los datos, existen dos formas predominantes:

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.

La segunda aproximación es dividir los datos en dos conjuntos: entrenamiento y 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.

En la figura 7 se representan estas dos aproximaciones.

Figura 7. Validación en modelos de aprendizaje automático

Figura 7. Validación en modelos de aprendizaje automático.


Fuente: Joseph Nelson.

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.

El sobreajuste es el hecho de realizar un modelo que se ajuste tanto a los datos de


entrenamiento que no generalice correctamente a los datos de test. Es decir, se ajusta
correctamente al pasado, pero no al futuro, que es el objetivo de los modelos.

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

Figura 8. Errores en entrenamiento (azul) y validación (rojo) a medida que aumenta


a complejidad del modelo.
Fuente: machinelearningparatodos.com.

En la figura 8 se muestra el error de un modelo en los datos de entrenamiento y en validación.


Cuanto más complejo es el modelo, mejor métrica obtiene en los datos de entrenamiento;
llegado un punto, la métrica en validación comienza a empeorar (el modelo está sobreajustado).
El mejor modelo es aquel que hace que la métrica en validación sea la mejor.

3.4. Roles y responsabilidades en un proyecto de aprendizaje


automático

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.

Figura 9. Roles en un proyecto de aprendizaje automático

Figura 9. Roles en un proyecto de aprendizaje automático.


Fuente: Amazon.

La etapa de recolección de los datos dependería de los arquitectos de datos.

El almacenamiento y la preparación de datos dependerían de los ingenieros y analistas de datos.

Y la parte de análisis y creación de los modelos dependería del científico de datos.

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.

Muchas empresas, por la poca complejidad de sus proyectos o simplemente desconocimiento


técnico, suelen contar incluso con menos perfiles. El de científico de datos a veces ocupa las
tareas de ingeniero de datos y de DevOps.

Independientemente, los roles de empresas como Amazon deberían tomarse como referencia para cualquier
proyecto de ciencia de datos y de aprendizaje automático.

IV. Herramientas de machine learning


Existen distintos lenguajes de programación que se pueden utilizar para realizar proyectos de inteligencia artificial,
aprendizaje automático o aprendizaje profundo.

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. Librerías más importantes de Python para aprendizaje


automático

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

Algunas de las características de NumPy son las siguientes:

Operaciones lógicas y matemáticas complejas.

Capacidades para seleccionar y ordenar datos rápidamente.

Simulaciones aleatorias.

Soporte de datos de n-dimensiones.

Figura 10. Representaciones de datos n-dimensionales

Figura 10. Representaciones de datos n-dimensionales.


Fuente: https://fgnt.github.io/python_crashkurs_doc/#

4.1.2. Pandas
Pandas (Microsoft Docs, 2020) es una librería centrada principalmente en la manipulación y el análisis de datos.

tarea es la de preparar el dataset antes de modelizar.

Algunas de las características que tiene son las siguientes:

Carga y guardado de datos.

19/45
Herramientas para machine learning

Unión de datasets.

Tratamiento de datos faltantes y duplicados.

Opciones de filtrado de datos.

Pandas utiliza los llamados dataframes, que son representaciones bidimensionales de los datos en forma de tabla.

Figura 11. Representaciones de dataframes

Figura 11. Representaciones de dataframes.


Fuente: https://pandas.pydata.org/.

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.

Entre sus características están las siguientes:

20/45
Herramientas para machine learning

Representar visualizaciones con pocas líneas de código.

Utilizar gráficas interactivas.

Tener el control completo de estilos, fuentes o ejes.

Exportar las visualizaciones como ficheros.

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.

Contiene una serie de algoritmos como los siguientes:

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.

Está centrada en la parte de la modelización de datos, dejando de un lado tareas como la


visualización o la manipulación de estos. Estas tareas deberán realizarse con librerías como
Matplotlib (visualización) o Pandas (manipulación de datos).

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.

SciPy es muy útil también para manipulación de imágenes.

Entre sus características destacan las siguientes:

Funciones especiales para matemática aplicada a física.

Módulos de optimización.

Módulos de tratamiento de señales.

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.

Algunas de las áreas donde destaca son las siguientes:

Construcción de redes neuronales profundas.

Procesamiento de lenguaje natural.

Ecuaciones en derivadas parciales.

Reconocimiento de texto, imágenes y habla.

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.

Sus competidores son PyTorch y Scikit-Learn.

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.

Es uno de los competidores de TensorFlow, ya que ambos gestionan redes neuronales.

Algunas de las características más importantes de PyTorch son las siguientes:

Posibilidad de acelerar el rendimiento de los modelos de imágenes usando GPU.

Facilidad de aprendizaje.

4.2. Entornos de desarrollo


Un entorno de desarrollo integrado (en inglés, integrated development environment, IDE) es una aplicación que
provee a los programadores y desarrolladores de herramientas básicas para escribir y testear software.

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).

Es posible desarrollar en IDE en local (en un ordenador personal) o en la nube.

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.

4.2.1. Desarrollo en local

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.

Figura 12. Aspecto de un notebook de Jupyter

Figura 12. Aspecto de un notebook de Jupyter.


Fuente: https://jupyter.org/.

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.

Es un entorno profesional con muchas características. Cuenta con dos versiones:

PyCharm Community, la cual es gratuita.


Y una más avanzada, llamada PyCharm Professional. PyCharm es un entorno de desarrollo bastante
completo y avanzado, y su uso es muy recomendado cuando los proyectos aumentan de complejidad
técnica.

Figura 13. Aspecto de una ventana de PyCharm

Figura 13. Aspecto de una ventana de PyCharm.


Fuente: https://www.jetbrains.com/.

4.2.2. Desarrollo en la nube

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

Azure Notebooks es la plataforma gratuita de notebooks de Microsoft.

Es muy similar a Google Colab en funcionalidades. La interfaz es exactamente igual a la de Jupyter Notebook.

Permite programar no solo en Python, sino también en R y F#.

La desventaja de Azure es que no permite colaborar con otra persona.

4.3. Aprendizaje automático como servicio (MLaaS). BigML

4.3.1. ¿Qué es el aprendizaje automático como servicio o MLaaS?


El aprendizaje automático como servicio (machine learning as a service, o MLaaS) es un conjunto de servicios
que proveen las herramientas necesarias de aprendizaje automático para el desarrollo de modelos en la
nube.

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).

4.3.2. Proveedores de servicios de MLaaS

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.

Los servicios más destacados que ofrecen son los siguientes:

Procesamiento de lenguaje natural.

Reconocimiento del habla.

Visión por computadora.

Plataformas de inteligencia artificial.

En ese último punto, el de la plataforma de inteligencia artificial, es donde se enmarca la


empresa especializada BigML. BigML compite con las empresas tecnológicas aportando un
software propio.

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.

4.3.3. ¿Qué es BigML?


BigML es una plataforma de aprendizaje automático cuyo objetivo es el de automatizar y realizar una gestión
del flujo de un proyecto de aprendizaje automático. Es consumible, programable y escalable. Facilita la
solución y automatización de problemas de clasificación, regresión, clustering, detección de anomalías y el
descubrimiento de asociaciones.

Ayuda a resolver problemas de aprendizaje automático end-to-end, desde la transformación


de los datos hasta la creación de modelos ejecutables en servicios remotos o incrustados en
aplicaciones en local.

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

Figura 14. Representación de un árbol de decisión en BigML

Figura 14. Representación de un árbol de decisión en BigML.


Fuente: https://bigml.com/.

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.

BigML provee de tres modos de uso:

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.

Interfaz de línea de comandos

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.

4.3.4. Casos de uso de BigML

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:

Algoritmos de aprendizaje 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.

Algoritmos de aprendizaje no supervisado

Clustering, detección de anomalías, modelización de tópicos, reducción dimensional y algoritmos de asociación.

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.

Sector consumo y retail

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.

Por ejemplo, en la predicción de riesgo de crédito se podría tratar como un modelo de


clasificación si se pretende predecir la probabilidad de impago.

También puede tratarse como un problema de regresión al querer predecir la cantidad de los posibles impagos.

4.3.5. Ventajas de utilizar servicios como BigML

BigML provee lo que se denomina como “aprendizaje automático como servicio”.

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.

Entre ellas se encuentran las siguientes:

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

El servicio de BigML puede escalar según los requerimientos que se necesiten.

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.

V. Estructurar un proyecto de machine learning


Uno de los puntos en los que se suele fallar bastante al principio del camino como científico de datos es el de la
estructura de los proyectos, el código y los entornos de Python.

Es por ello por lo que en esta unidad se presentan ciertas guías sobre este tema.

5.1. Estructura del código en Python


Ya sea en un notebook de Jupyter o en un código plano en Python, existen ciertas reglas con respecto a la
estructura de un código en Python.

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.

En la figura 15 se encuentra un resumen de la estructura de uno de los repositorios de Github. La estructura


seguida comúnmente es la siguiente:

Importación de librerías y módulos que utilizar.

31/45
Herramientas para machine learning

Definición de constantes que usar en el programa.

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.

Figura 15. Estructura de un código en Python

32/45
Herramientas para machine learning

Figura 15. Estructura de un código en Python.

33/45
Herramientas para machine learning

Fuente: elaboración propia.

5.2. Reglas de estilo de código


Otro de los puntos importantes de cara a utilizar buenas prácticas son las reglas de estilo en Python.

Existen numerosas reglas de estilo. Algunas de las más importantes son las siguientes:

Los nombres de las clases se escriben con UpperCaseCamelCase.

Las constantes se escriben en mayúsculas.

Las funciones, nombres de variables y métodos, en minúscula y separando las palabras con _.

Los nombres de las variables, que sean lo más autoexplicativos posible.

5.3. Estructuras de carpetas


Otra buena práctica es utilizar una estructura de carpetas estándar, que mantenga el código ordenado.

Esto es de especial importancia cuando los proyectos comienzan a escalar en magnitud.

Una estructura que el autor utiliza es la siguiente:

34/45
Herramientas para machine learning

Carpeta-Nombre-Proyecto

|---- data

|---- raw à datos tal como provienen del origen

|---- preprocessed à datos ya procesados

|---- images

|---- Makefile à archive para hacer automatizaciones

|---- models à carpeta con los modelos ya entrenados

|---- notebooks

|---- production_code à códigos para poner a producción

|---- reports

|---- requirements.txt à archivo para instalar dependencias de entornos

|----setup.py à para instalar automáticamente librerías

Respecto a esto, existe una librería en Python llamada Cookiecutter que permite generar plantillas de
proyectos de forma automática.

5.4. Reproductibilidad y uso de entornos


La reproductibilidad es de especial importancia en la ciencia de datos en general y en el aprendizaje automático en
particular.

La reproductibilidad permite ejecutar los programas en otra máquina distinta a la


inicialmente usada para programarlos. Para este objetivo se encuentra el uso de los
entornos de Python y el de los ficheros de requerimientos.
Los entornos con los que se trabajarán en este módulo se pueden encontrar en el siguiente
enlace de descarga.

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

Gestión de entornos - Parte 1

Gestión de entornos - Parte 2

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:

1. Crear un entorno virtual con Python 3.7:

$ conda create --name nombre_entorno python=3.7

2. Activar el entorno previamente creado:

$ conda activate nombre_entorno

3. Instalar paquetes en ese entorno:

$ conda install nombre_paquete

$ pip install nombre_paquete

4. Exportar el entorno a un fichero .yml:

$ conda env export > environment.yml

5. Reproducir el entorno anteriormente exportado:

$ conda env create --name nombre_entorno --file environment.yml

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

En esta unidad se ha introducido el concepto de aprendizaje automático, y su relación con el negocio.

El aprendizaje automático es un subcampo de la inteligencia artificial. Además, se usa en muchos proyectos de


ciencia de datos.

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.

VII. Lecturas recomendadas

Se recomienda la búsqueda y lectura de los siguientes recursos:

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:

X = (X1, X2, X3)= (beneficios, n. de empleados, industria).

Y = salario medio de los empleados.

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.

No existe variable target, solamente se tienen variables descriptivas.

X = (X1, X2, X3) = (edad, profesión, sueldo medio del barrio).

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.

X = (Xto, …, Xt-2, Xt-1) = (Ventas t0, …, Ventas t-2, Ventas t-1)

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.

No hay ningún científico de datos de momento.

40/45
Herramientas para machine learning

Uno de los objetivos es desarrollar un proyecto a tiempo real en el próximo año.

Existe una gran preocupación por la protección de datos y reticencias hacia tecnologías en la nube.

Se pide
1

Qué cinco perfiles debería contratar el nuevo responsable de analítica?

¿Sería posible plantearse el uso de aprendizaje automático como servicio?

¿El entorno de desarrollo sería propio en un servidor o en la nube?

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:

Un arquitecto de datos como dueño de la infraestructura.


Tres ingenieros de datos.
Un científico de datos.

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

Comparativa de los tipos de aprendizaje automático que existen


https://machinelearningparatodos.com/tipos-de-aprendizaje-automatico/

Extensión del concepto de sobreajuste


https://machinelearningparatodos.com/que-es-el-sobreajuste-u-overfitting-y-por-que-debemos-evitarlo/

Google Colab
https://colab.research.google.com/

Los roles en ciencia de datos más extendidos


https://machinelearningparatodos.com/roles-data-science-big-data/

Claves para llevar a cabo un proyecto de aprendizaje automático


https://www.intelligencepartner.com/como-implantar-con-exito-un-proyecto-de-machine-learning/

Bibliografía
“ Python Virtual Environments: A Primer” :

Santos, Aldren; Dan Bader, Michael Herman; Jablonski, Joanna.

[En línea] URL disponible en: https://realpython.com/python-virtual-environments-a-primer/

“5 Free Python IDE for Machine Learning” :

Jain, Rashmi. Hacker Earth; 22 de diciembre de 2016.

[En línea] URL disponible en: https://www.hackerearth.com/blog/developers/5-free-python-ide-machine-learni


ng/
“A command-line utility that creates projects from cookiecutters” :

[En línea] URL disponible en: https://cookiecutter.readthedocs.io/en/1.7.2/


“Data Structures for Statistical Computing in Python” :

McKinney, Wes. Proceedings of the 9th Python in Science Conference; 2010; pp. 51-56.

43/45
Herramientas para machine learning

“El ciclo de vida del proceso de ciencia de datos en equipo” :

Microsoft Docs; 10 de enero de 2020.

[En línea] URL disponible en: https://docs.microsoft.com/es-es/azure/machine-learning/team-data-science-pr


ocess/lifecycle
“Jupyter Notebooks -- a publishing format for reproducible computational workflows” :

Kluyver, Thomas et al. IOS Press; 2016; pp. 87-90.


“Matplotlib: A 2D Graphics Environment” :

Hunter, John D. Computing in Science & Engineering; 2007; n. 9: pp. 90-95.


“Package, dependency and environment management for any language” :

Conda.

[En línea] URL disponible en: https://docs.conda.io/en/latest/


“Pipenv vs virtualenv vs conda environment” :

Regmi, Krishna. Medium; 19 de abril de 2019.

[En línea] URL disponible en: https://medium.com/@krishnaregmi/pipenv-vs-virtualenv-vs-conda-environment


-3dde3f6869ed
“Pros y contras de BigML” :

[En línea] URL disponible en: https://comparecamp.com/bigml-review-pricing-pros-cons-features/


“PyCharm. IDE de Python para desarrolladores profesionales” :

[En línea] URL disponible en: https://www.jetbrains.com/es-es/pycharm/


“Python for Scientific Computing” :

Oliphant, Travis E. Computing in Science & Engineering; 2007; n. 9: pp. 10-20.


“Scikit-learn: Machine Learning in Python” :

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

Automatic differentiation in PyTorch :

Paszke, Adam; Gross, Sam; Chintala, Soumith; Chanan, Gregory; Yang, Edward; DeVito, Zachary; Lin,
Zeming; Desmaison, Alban; Antiga, Luca; Lerer, Adam. 2017.
GitHub repository :

Chollet, François. 2015.

[En línea] URL disponible en: https://github.com/fchollet/keras


Large-scale machine learning on heterogeneous systems :

Abadi, Martín; Agarwal, Ashish; Barham, Paul; Brevdo, Eugene; Chen, Zhifeng; Citro, Craig; et al.:2015.

Software disponible en: tensorflow.org


Machine Learning: A Guide to Current Research :

Mitchell, Tom M. 1997.

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.

Predicción: Declaración precisa de lo que ocurrirá en determinadas condiciones especificadas.

TPU: Circuito integrado de aplicación específica (ASIC) acelerador de IA desarrollado por Google
específicamente para el aprendizaje automático.

45/45

También podría gustarte