Manual Big Data
Manual Big Data
BIG DATA
AF_15 2019
CONTENIDOS
Bloque 0: Introducción sucinta de los fundamentos matemáticos y
herramientas tecnológicas para el data science……………………………… 3
Python………………………………………………………………………………... 16
Glosario………………………………………………………………………………. 19
Tipos de tareas……………………………………………………………………… 36
Clasificadores de aprendizaje…………………………………………………….. 59
Árboles de decisión………………………………………………………………… 68
Regresión lineal……………………………………………………………………... 74
Reducción de dimensionalidad……………………………………………………. 75
pág. 1
Videos recomendados……………………………………………………………… 81
Glosario………………………………………………………………………………. 82
Grafos………………………………………………………………………………… 89
Glosario………………………………………………………………………………. 95
Bloque 3: Aplicaciones…………………………………………………………… 98
Análisis de sentimientos……………………………………………………………. 98
Glosario…………………………………………………………………………….. 105
pág. 2
BLOQUE 0: Introducción sucinta de los fundamentos matemáticos y
herramientas tecnológicas para el data science.
pág. 3
Recopilar grandes cantidades de datos de diferentes orígenes, con diferentes
formatos y de diferentes tipos, y transformarlos a un formato homogéneo y fácil de
utilizar.
Resolver problemas del negocio propios de la organización en la que trabaja.
Trabajar con diversos lenguajes de programación, comprendiendo el ámbito
tecnológico en el que se lleva a cabo su labor.,
Saber matemáticas. Tener un amplio dominio de la estadística.
Dominar técnicas analíticas como machine learning, deep learning, analítica de
texto, procesamiento de grafos y de lenguaje natural.
Ser capaz de comunicarse con el área de negocio de su organización, para la que
genera conocimiento, y con otras áreas informáticas de dicha organización, con las
que tiene que colaborar en los procesos de ingesta, limpieza y almacenamiento de
los datos.
Descubrir patrones en los datos, así como tendencias, que enriquezcan el
conocimiento que la organización tiene de sí misma y de su entorno (clientes
actuales y potenciales, proveedores, colaboradores, socios, etc.).
pág. 4
sociales, blogs, páginas comerciales, operaciones de compra/venta de productos, uso
intensivo del correo electrónico, foros de debate, etc.), de dispositivos de comunicación
inteligentes (smart phones, tabletas) y la posibilidad de conectar a la red dispositivos como
cámaras de seguridad o electrodomésticos (el llamado internet de las cosas o IoT) genera
en un sólo día tal cantidad de datos que se calcula que en el año 2020 la cantidad de bits de
información necesarios para representar dichos datos será mayor que el número de estrellas
en el universo físico.
No existe una sola actividad humana que no genere datos de interés (muchas veces
abiertos y accesibles): hogares, deporte, medicina, salud, educación, relaciones humanas
en las redes sociales, pesca industrial, industria automovilística, minería, investigación
científica… No es posible acotar el número de áreas en las que los datos tienen una
importancia fundamental. Y por eso se explotan desde la ciencia de datos.
pág. 5
LAS TRES V DE BIG DATA
Volumen
Se estima que la cantidad de datos disponible en la actualidad debe ser expresada en
zettabytes (ZB) es decir, serían necesarios del orden de un billón (10^12) de los PC
empleados en la actualidad para almacenarla. Cada ser humano del planeta debería
poseer unos 150 dispositivos de un terabyte (TB) de capacidad para almacenar todos los
datos de los que se dispone a día de hoy.
Además, se crean 2,5 trillones de bytes de información nuevos al día).
Y el universo digital duplica su tamaño cada dos años. Se estima que para 2020 se
dispondrá de más bits de información que estrellas existen en el universo físico.
pág. 6
los datos de valor permite optimizar recursos humanos y materiales, disminuyendo los
tiempos de recogida de datos, análisis y obtención de conclusiones.
Marr insiste en que, en la actualidad, más que en ninguna otra época de la Historia, es
necesario saber navegar en los mares de datos sin perecer en el intento. Smart data, por
lo tanto, no se refiere a la cantidad de datos que se manejan, sino a su utilidad. El científico
de datos conseguirá mayores logros cuanto mejor sepa discernir y clasificar los datos
disponibles en función de los objetivos que se persiguen. Big data y smart data, según él,
han de trabajar unidos para lograr el éxito.
Velocidad
Cuando se habla de big data lo habitual es que se trate con entornos en los que la
velocidad de obtención y procesamiento de la información sean factores críticos. En
muchas ocasiones la información extraída de los datos es útil sólo mientras esos datos
reflejan la realidad, siendo inútiles, en ocasiones, unos minutos después.
Por tanto, existen dos velocidades que condicionarán la velocidad global de respuesta ante
nuevos datos.
Velocidad de carga: los datos recogidos en último lugar deben ser preparados,
interpretados, integrados con los ya disponibles. Estos procesos de extracción
transformación y carga (ETL en sus siglas en inglés) son costosos en tiempo y
necesidades de hardware y software.
Velocidad de procesamiento: este concepto es fundamental para el científico de
datos. Cuando todos los datos están integrados es necesario aplicar métodos
estadísticos avanzados y/o técnicas de inteligencia artificial. La obtención de
resultados no puede demorarse las horas o días que implican las técnicas no big
data. Si se desea obtener ventajas sobre competidores o estar en disposición de
proporcionar un servicio de primer orden el tiempo de procesamiento es
fundamental.
pág. 7
Variedad
Cuando se habla de variedad de los datos empleados en big data se atiende a los
diferentes formatos y estructuras en que se presentan. La estructura se define como la
forma en la que se organizan esos datos. Según su nivel de estructuración se dispone de:
Veracidad. La 4ª V
Esta nueva V se agregó a la definición de big data con gran rapidez. Teniendo en cuenta la
cantidad de datos y la variedad de sus orígenes es necesario considerar la veracidad del
dato y establecer cierto grado de incertidumbre a la hora de interpretar los resultados de su
procesamiento. A la hora de considerar la veracidad de un conjunto de datos han de
tenerse en cuenta tanto la exactitud de su extracción y la exactitud de su procesamiento.
El científico de datos deberá limpiar y verificar los datos de que dispone, con objeto de
asegurar que genera conocimiento real, a partir de datos veraces.
pág. 8
INCAPACIDAD DE LAS ARQUITECTURAS HABITUALES
Hasta la llegada de los datos masivos la mayoría de los sistemas informáticos utilizaba la
llamada arquitectura de n-capas que, en su versión más sencilla, puede representarse
mediante esta figura:
La operativa resulta familiar: el usuario desde una aplicación cliente, que suele ser un
navegador web, lanza sus peticiones al servidor de negociación, en cuya memoria se
pág. 9
encuentra el sistema informático que da respuesta a dichas peticiones. Una vez recibida la
petición, el código se encarga de efectuar solicitudes de información al servidor de base de
datos, que aloja el sistema relacional que contiene los datos de interés. Cuando el servidor
de base de datos resuelve las consultas recibidas, envía los datos al servidor de
negociación. Allí son convenientemente procesados y, su resultado, es transferido al
cliente, que recibe de esa manera la respuesta a su petición.
El rendimiento de las plataformas que implementan esta arquitectura, por tanto, es muy
sensible a la cantidad de datos que se manejan. Al ser necesario que los datos viajen del
servidor de datos al servidor de negociación, éste debe estar preparado para alojar en su
memoria todos los datos recibidos, de manera que el código pueda procesarlos. Si en un
momento determinado la cantidad de datos es tan grande que estos no pueden ser
alojados en la memoria RAM, el sistema operativo deberá recurrir a métodos de swapping
(almacenamiento temporal en disco) para poder llevar a cabo su tarea, con el
correspondiente aumento del tiempo de procesamiento.
Estas arquitecturas, junto con los productos que las implementan, no pueden dar solución
a los problemas que plantean las tres V de volumen, velocidad y variedad. En su momento
se intentó capear los problemas incrementando la potencia de las máquinas y su
capacidad de almacenamiento, pero pronto se descubrió que la cantidad de datos
disponibles crecía con más rapidez que la capacidad de las nuevas máquinas, enfrentando
a las compañías a desembolsos regulares de grandes cantidades de dinero, además de
otras situaciones no deseadas. Aquí se resumen las principales:
Máquinas más potentes (con decenas de procesadores y memorias RAM del orden
del TB) implicaban desembolsos más cuantiosos.
Estas máquinas poseían sistemas operativos y software dedicados, y su puesta en
marcha exigía la participación de ingenieros muy especializados, escasos en
número.
Por lo general, los gastos en licencias de uso del software empleado suponían una
cifra no despreciable de dinero.
El mantenimiento físico de estas máquinas y cualquier reajuste implicaba contactar
con la empresa fabricante, con lo que había una fuerte dependencia con el
proveedor.
pág. 10
La migración a otro entorno, en caso de llegar a un acuerdo con otro proveedor,
suponía un gran esfuerzo de tiempo y dinero para migrar los sistemas disponibles a
nuevas plataformas de ejecución.
Encontrar una alternativa viable fue posible, pero implicó un cambio de paradigma a la hora
de enfrentar los problemas de almacenamiento y procesamiento de grandes cantidades de
información.
Para ello fue fundamental el hecho de que la mayoría de los problemas de procesamiento
generados por los grandes tamaños de datos eran, algorítmicamente, capaces de ser
resueltos mediante secuencias de tareas ejecutadas en paralelo, es decir, mediante
etapas, siendo la complejidad algorítmica de cada tarea muy sencilla. En efecto, saber
cuántos términos distintos se han empleado en las búsquedas realizadas por los usuarios
de un buscador en un periodo de tiempo determinado (días, semanas o años) o qué
idiomas son los más empleados en una determinada red social son, conceptualmente muy
sencillos, y las dificultades para obtener los valores solicitados se hallaban, esencialmente,
en cómo se intentaban procesar los datos.
pág. 11
haberse pensado que no eran ya utilizables. Ya no eran necesarios supercomputadores,
ya que podían cubrirse las necesidades de computación mediante el procesamiento de los
datos en sistemas distribuidos.
Por otro lado, el hecho de que el código se enviara a las máquinas que almacenaban los
datos y no al revés, como es el caso de los sistemas tradicionales, permitía reducir tanto el
flujo de información a través de la red como el tiempo necesario para el cálculo, ya que el
código actuaba, en paralelo y en cada una de las máquinas, sobre una fracción
relativamente pequeña de los mismos.
Estas herramientas open source permiten a una organización procesar sus datos de forma
eficaz y gratuita.
pág. 12
Centrémonos en las herramientas de procesamiento y análisis:
Lo anterior permite obtener buenos análisis de los datos, pero no permite llevar a cabo
tareas de aprendizaje automático y similares. Ha de señalarse que las herramientas
Hive, Impala y Pig están diseñadas para ser usadas por usuarios habituados al
lenguaje SQL (caso de Hive e Impala) y lenguajes de scripting (caso de Pig). Si se
desea abordar tareas que impliquen operaciones complejas es necesario recurrir a la
programación MapReduce o al empleo de Spark.
pág. 13
profesional o de una organización suele hacerse en función de la experiencia ya adquirida
por los desarrolladores, tendiéndose a apurar al máximo las herramientas conocidas
mientras las necesidades de proceso no obliguen a cambiar las herramientas utilizadas.
En la actualidad los lenguajes más utilizados en aprendizaje automático son Python, R,
MATLAB y Julia.
pág. 14
Para seleccionar un lenguaje de programación a la hora de dedicarse a la tarea del
aprendizaje automático es necesario tener en cuenta los siguientes elementos: curva de
aprendizaje del lenguaje, su coste económico, su velocidad de ejecución, las comunidades
de programadores que participan en su soporte/ evolución, y la producción de modelos.
Coste económico. Tanto Python, como R y Julia son gratuitos, mientras que
MATLAB es una herramienta de pago. Las organizaciones tienden a usar MATLAB
sólo cuando las necesidades de computación compensan el coste de la
herramienta.
pág. 15
hacen de él la herramienta óptima para adentrarse en el mundo de la ciencia de datos y,
en particular, del aprendizaje automático.
PYTHON
Es un lenguaje de programación ampliamente utilizado en el contexto científico debido a
que dispone de un gran número de librerías que incluyen herramientas para la preparación
de los datos (carga, manipulación, limpieza), para el análisis y procesamiento y para su
representación gráfica. Es una poderosa ayuda en el análisis estadístico, tanto descriptivo
como predictivo.
Es un lenguaje de código libre, lo que hace que sea gratuito, y este factor le ha permitido
introducirse con éxito tanto en el ámbito universitario como en el de las empresas públicas
y privadas.
Python proporciona una plataforma para el procesamiento de datos y está respaldado por
una gran comunidad de desarrolladores. Actualmente existen librerías para el desarrollo de
cualquier tipo de aplicaciones. Posee la capacidad de interactuar con otros lenguajes de
programación (C, Fortran) y cuenta con una gran cantidad de funciones incorporadas que
ayudan a realizar muchas tareas frecuentes.
Lo anterior contribuye a que este lenguaje sea accesible a un público que no posee un
perfil fuertemente tecnológico. Profesionales como estadísticos, matemáticos,
meteorólogos, economistas, expertos en publicidad y muchos otros, han comprobado que
Python resulta una herramienta asequible y potente.
Posee entornos de desarrollo como Jupyter y Spyder, siendo este último el que más
empleado por los científicos de datos.
Spyder es un IDE o entorno de desarrollo integrado para Python. Esta herramienta, escrita
en Python, está diseñada para codificar programas en este lenguaje enfocándose en la
investigación, análisis de datos y creación de paquetes científicos. Su nombre procede de
la contracción de Scientific PYthon Development EnviRonment (entorno de desarrollo
científico de Python) e incluye un editor multilingüe, herramientas de desarrollador y una
consola interactiva que permite la introducción de sentencias. La interfaz de usuario es
personalizable. Está dirigido a científicos e ingenieros, pero su facilidad de uso lo hacen
muy asequible para los principiantes.
pág. 16
Está disponible para las plataformas Linux, MacOS y Windows y es una herramienta de
código abierto y gratuita. Posee una consola interactiva, explorador de variables, resaltador
de sintaxis y un visor de documentación, datos y gráficos potente y, a la vez, muy sencillo
de usar.
Pandas: cuyo nombre se deriva de Panel data, es una librería que aporta
estructuras de datos de fácil uso y de alto rendimiento, junto con un gran número de
funciones esenciales para el análisis de datos. Con la ayuda de pandas se puede
trabajar con datos estructurados de forma rápida, ya que permite cargar, preparar,
manipular, modelar y analizar datos de diferentes tipos y a partir de diferentes tipos
de origen.
Su aportación al aprendizaje automático es muy grande, debiéndose destacar que
incluye el objeto dataframe, imprescindible para almacenar, representar y procesar
estructuras de datos bidimensionales, esenciales para la ciencia de datos. Los
dataframes son estructuras de datos etiquetados bidimensionales que permiten
acceder y manipular elementos individuales, los pertenecientes a un rango de filas
y/o los pertenecientes a un grupo de columnas a partir de índices y de nombres.
[Link]
pág. 17
SciPy: es una librería de funciones matemáticas que añade capacidades de cálculo
numérico a Python. Es una extensión de numpy, librería a la que añade módulos
para optimización de funciones, integración, resolución de ecuaciones diferenciales,
entre otras materias. Scipy, a su vez, se estructura en subpaquetes. De entre ellos
destacamos stats y cluster.
[Link]
SymPy: es una biblioteca escrita en Python cuyo objetivo es reunir todas las
características de un sistema de álgebra computacional (CAS), ser fácilmente
extensible y mantener el código lo más simple posible.
[Link]
pág. 18
GLOSARIO
Algoritmo
Secuencia de procesos que, mediante un número finito de pasos, resuelven un
problema. Se componen de tareas, entradas de datos, salidas de resultados y
dependencias entre las tareas.
[Link]
Algoritmo secuencial
El algoritmo en el que una tarea debe finalizar antes de que comience la siguiente,
siendo la salida de resultados de la primera la entrada de datos de la segunda.
Algoritmo paralelo
Aquel en el que las tareas de procesado son todas independientes, de forma que no
comparten entradas de datos comunes, ni dependencias a la hora de procesarlos.
Las tareas que los componen pueden presentar tiempos de ejecución diversos sin
que eso afecte al algoritmo como conjunto.
pág. 19
Algoritmo serie-paralelo
Este algoritmo es una combinación del algoritmo secuencial y paralelo. En general,
se dispone de una serie de ejecuciones de tareas en paralelo, de forma que cada
agrupación de las mismas (llamada etapa o stage) puede ser considerada como una
tarea de un algoritmo serie superior.
De esta forma, los resultados de la ejecución de una etapa se consideran como los
datos de entrada de la siguiente. Las tareas individuales de una etapa se ejecutan en
paralelo, pero las etapas se ejecutan de forma secuencial. Al conjunto de etapas se
le denomina pipeline.
El paradigma MapReduce es un ejemplo de este tipo de algoritmo.
pág. 20
De cara a los procesos relacionados con Data Science es importante saber que
mediante su empleo se han resuelto problemas como el análisis de registros, la
clasificación de datos, procesamiento de textos, búsqueda basada en patrones,
procesamiento de gráficos y aprendizaje automático.
[Link]
pág. 21
Está optimizado para el modelo de acceso “única escritura y múltiples lecturas”.
Esto implica que no se debe intentar utilizar en procesos que requieran continua
interacción. Sin embargo, su fortaleza estriba en el gran rendimiento que
proporciona en el acceso a grandes volúmenes de datos.
Permite el desplazamiento del código a los datos. Esto es, los programas se
envían, en el momento de su ejecución, hacia los servidores que almacenan los
datos, en lugar de mover dichos datos a los servidores de negocio. De esta forma
se minimiza el tráfico de red y aumenta el rendimiento global del sistema, ya que
las aplicaciones que se ejecutan en HDFS trabajan con tamaños de datos del
orden de los GB/TB.
Proporciona diversos interfaces para que las aplicaciones trabajen con comodidad
sobre los datos, maximizando la facilidad de uso y de acceso.
Es fácilmente portable entre plataformas, y es compatible con entornos de
hardware heterogéneos y diferentes sistemas operativos.
[Link]
Apache HBase
Herramienta de almacenamiento. HBase es un modelo de base de datos no
relacional, distribuido y escrito en Java. Se ejecuta sobre HDFS y proporciona un
medio tolerante a fallos para almacenar grandes cantidades de datos. Las tablas
HBase pueden servir como entradas y salidas para tareas MapReduce. Pueden ser
accedidas a través de una API mediante lenguaje Java. HBase se basa,
internamente, en los conceptos de base de datos orientada a columnas y base de
datos clave-valor.
[Link]
Apache Hive
Herramienta de almacenamiento y procesamiento de datos. Permite hacer
resúmenes, consultas y análisis de datos. Soporta análisis de grandes conjuntos de
datos almacenados en sistemas de ficheros compatibles con Hadoop. Hive
proporciona un lenguaje análogo al SQL utilizado sobre las bases de datos
relacionales, llamado HiveQL. Internamente, Hive mantiene el soporte completo para
MapReduce.
pág. 22
[Link]
Apache Flume
Herramienta de ingesta de datos. Flume es una herramienta cuya misión es la de
recoger, agregar y copiar grandes cantidades de datos, procedentes de diferentes
fuentes, al repositorio HDFS casi en tiempo real.
[Link]
Apache Kafka
Herramienta de procesamiento en streaming. Es un sistema de mensajería distribuido
y replicado.
[Link]
Apache Spark
Entorno de procesamiento de datos desarrollado por M.Z. Se basa en la misma idea
de “divide y vencerás” de la que hace gala Hadoop MapReduce. Sin embargo,
mientras que Hadoop MapReduce hace uso intensivo de almacenamiento en disco,
Spark utiliza la memoria principal de las máquinas del cluster para llevar a cabo sus
tareas. De esta forma, Spark es más eficiente que Hadoop MapReduce cuando se
trata de llevar a cabo cálculos iterativos.
Además, permite operaciones sobre datos masivos más allá de los métodos map y
reduce, ya que pueden efectuarse de manera muy sencilla operaciones de
intersecciones de datos (operaciones join), agrupamiento de datos (operaciones
group by) y filtrado de los mismos (operaciones filter).
Por otro lado, ofrece una capa de abstracción sobre la capa de datos mediante los
llamados RDD (resilient distributed dataset).
[Link]
Apache Sqoop
Herramienta de ingesta de datos. Permite enviar datos relacionales desde y hacia
Hadoop HDFS. Implementa internamente el paradigma MapReduce para procesar los
datos según se solicite.
[Link]
pág. 23
Apache Pig
Herramienta de procesamiento en paralelo. Pig es un entorno de trabajo que incluye
un lenguaje de programación de alto nivel, denominado Pig Latin, pensado para crear
programas MapReduce.
[Link]
big data
Conjunto de estrategias, tecnologías y sistemas para el almacenamiento,
procesamiento, análisis y visualización de conjuntos de datos complejos.
[Link]
Cloudera Impala
Cloudera Impala es un motor de consultas SQL open source de Cloudera para el
procesamiento masivo en paralelo (MPP) de los datos almacenados en un clúster de
computadoras corriendo Apache Hadoop.
[Link]
Cluster
Conjunto de ordenadores conectados entre sí formando una red de computación
distribuida.
[Link]
Computación distribuida
Es un modelo para resolver problemas de computación masiva utilizando un gran
número de ordenadores organizados en cluster y entrelazados mediante una
infraestructura de comunicaciones que permite distribuir los datos que deben ser
procesados como los resultados obtenidos del proceso.
[Link]
pág. 24
Computación científica
Campo de estudio relacionado con la construcción de modelos matemáticos,
algoritmos y métodos numéricos para resolver problemas científicos y de ingeniería y
para analizar datos.
[Link]
Lenguaje de programación R
R es un lenguaje de programación enfocado al análisis estadístico.
[Link]
[Link]
[Link]
pág. 25
MATLAB - Sistema de cómputo numérico
MATLAB (abreviatura de MATrix LABoratory, «laboratorio de matrices») es un
sistema de cómputo numérico que ofrece un entorno de desarrollo integrado (IDE)
con un lenguaje de programación propio (lenguaje M). Está disponible para las
plataformas Unix, Windows, Mac OS X y GNU/Linux.
[Link]
Minería de datos
Campo de la estadística y las ciencias de la computación referido al proceso que
intenta descubrir patrones en grandes volúmenes de conjuntos de datos.
[Link]
Paradigma MapReduce
MapReduce es una metodología de procesado de datos distribuidos que posee un
modelo de programación que da soporte a computación paralela sobre grandes
conjuntos de datos en un cluster de computadoras (Bengfort, Kim, 2016). Su nombre
procede de dos de los tipos de procesos que forman parte del algoritmo (Map y
Reduce), si bien se dispone de unos cuantos más.
La estructura MapReduce fue presentada por Google en 2004, posteriormente fue
implementada por muchas plataformas de software y en la actualidad es una pieza
fundamental del ecosistema Hadoop. MapReduce se introdujo para resolver
problemas computacionales de grandes tamaños de datos y está específicamente
diseñada para ejecutarse sobre hardware simple (commodity hardware). Su filosofía
se basa en el principio “divide y vencerás”, que se manifiesta en el hecho de que los
datos de entrada se dividen en fragmentos que son procesados en paralelo.
Dentro de una ejecución de un proceso MapReduce se tienen, como fundamentales,
los siguientes componentes:
pág. 26
Contexto: proporciona un mecanismo para el intercambio de información entre
los diferentes en ejecución, habida cuenta de que se ubicarán en diferentes
máquinas.
Datos de entrada: ubicados por lo común en HDFS o HBase. Pueden abarcar
decenas de GB o más.
Mapeador: proceso que efectúa operaciones sobre los datos iniciales, generando
pares <clave/valor> sobre los que actuarán el resto de componentes del sistema
en ejecución.
Ejemplo: se desea obtener cuántas veces aparecen las palabras utilizadas en
todas las obras de la literatura española publicadas hasta el año 2018.
La información de estas obras se distribuirá por un cluster de n equipos, y en cada
uno de ellos el proceso map(), codificado oportunamente, generará pares con
todas las palabras encontradas con la forma <palabra, 1>. Este proceso se
ejecutará de forma asíncrona en todas las máquinas del cluster que hayan recibido
datos para procesar y el código que debe ejecutarse (en la computación big data,
recuérdese, se envía el programa a la máquina que contiene los datos, y no al
revés).
<’cielo’, 1>, <’cielo, 1>, <’tierra’, 1>, <’agua’, 1>... <’fuego’, 1>, <’cielo’, 1>
Obviamente, para cada una de las palabras leídas en los datos de ese nodo. Las
claves diferentes encontradas (‘cielo’, ‘tierra’, etc.) deberán ser procesadas por el
mismo reductor que, tras los procesos de mezcla y ordenación recibirá, para la
clave cielo, por ejemplo:
pág. 27
Es decir, el valor ‘1’ se repetirá tantas veces como veces se haya encontrado la
clave ‘cielo’ en todos los archivos procesados. El hecho de que el valor sea
siempre ‘1’ es debido al caso de uso que se está abordando pero, claro está, en
otro tipo de situación los valores formarían parte de otro rango.
Reductor: es el código que se ejecuta sobre todos y cada uno de los pares <clave,
{...}>.
En el ejemplo que se ha presentado el reductor sumaría, para cada clave, todos
los valores que se han agrupado con ella, obteniéndose resultados del tipo <’cielo’,
23.562.222>, <’tierra’, 41.256.414>, etc. Estos valores se almacenarían en el
soporte que se decidiese, HDFS, HBase.
Open source
Término con el que se conoce el software desarrollado y distribuido libremente. El
proyecto Apache es el paradigma del código open source.
El código desarrollado bajo esta fórmula posee, además de su gratuidad, las ventajas
de ser multiplataforma y de disponer de amplios equipos de técnicos dedicados a su
mantenimiento y evolución.
[Link]
[Link]
Pig latin
Lenguaje de flujo de datos ofrecido por la herramienta Hadoop Pig. Permite definir
cómo leer los datos de una serie de fuentes, procesarlos, y almacenarlos de
forma paralela, permitiendo al usuario abstraerse de las operaciones MapReduce. Es
una alternativa a la codificación directa en Java cuando el problema que se aborda no
posee una gran complejidad algorítmica.
Su nombre procede del homónimo Pig Latin ([Link] y
es una referencia jocosa al hecho de que los elementos del lenguaje son una
amalgama de palabras reservadas propias de los lenguajes de programación de alto
nivel y del lenguaje SQL.
pág. 28
Procesamiento batch
Se denomina procesamiento batch o sistema de procesamiento por lotes a la
ejecución de programas sin supervisión ni interacción directa con el usuario.
Habitualmente estos procesos se componen de tareas repetitivas sobre grandes
conjuntos de información. El ecosistema Hadoop, mediante el paradigma
MapReduce, permite ejecutar con gran eficacia este tipo de procesamiento.
[Link]
Procesamiento en stream
Se denomina procesamiento en stream, procesamiento de datos dinámicos o
streaming a la ejecución de programas cuyos datos se caracterizan por producirse de
forma continua, siendo habitualmente su tamaño del orden de los KB.
RMI
RMI o Remote Method Invocation es un mecanismo ofrecido por Java para invocar,
de manera remota, un fragmento de código alojado en una máquina diferente a la que
efectúa la llamada. Proporciona un mecanismo simple para la comunicación entre
servidores de aplicaciones distribuidas basadas en Java. Tanto Hadoop como Spark
están codificados en Java debido a las posibilidades de programación distribuida que
ofrece este lenguaje mediante la implementación de RMI.
[Link]
Sistema de archivos
Dentro de una plataforma informática el sistema de archivos es el componente
encargado de administrar y facilitar el uso del sistema de almacenamiento. Sus
principales funciones son la asignación de espacio a los archivos, la administración
del espacio libre y el acceso a los datos almacenados. HDFS es el sistema de archivos
distribuidos de Hadoop.
pág. 29
Unidades de volumen
Múltiplos de bytes
Sistema Internacional (decimal) ISO/IEC 80000-13 (binario)
Múltiplo Valor en bytes Múltiplo Valor en bytes
kilobyte (kB) 10^3 kibibyte (KiB) 2^10
megabyte (MB) 10^6 mebibyte (MiB) 2^20
gigabyte (GB) 10^9 gibibyte (GiB) 2^30
terabyte (TB) 10^12 tebibyte (TiB) 2^40
petabyte (PB) 10^15 Pebibyte (PiB) 2^50
exabyte (EB) 10^18 exbibyte (EiB) 2^60
zettabyte (ZB) 10^21 zebibyte (ZiB) 2^70
yottabyte (YB) 10^24 yobibyte (YiB) 2^80
Es necesario indicar que, si bien estas son las unidades oficiales de ambos sistemas,
por motivos históricos es habitual utilizar los nombres de las unidades del SI para
referirse a los valores del sistema ISO/IEC 80000-13. Es decir, se emplea el término
kilobyte (10^3 = 1000 bytes) para referirse al término kibibyte (2^10 = 1024 bytes), y
así sucesivamente. Esta confusión es habitual y está tan instaurada que los
profesionales de las tecnologías de la información no suelen reparar en ella. Sin
embargo, estrictamente, han de emplearse los términos con rigor.
pág. 30
BLOQUE 1: Aprendizaje automático
APRENDIZAJE AUTOMÁTICO
Los datos mencionados son los llamados datos de entrada o datos de entrenamiento.
Podrían representarse de esta manera:
pág. 31
Nota en la Nota en la ¿Curso
Alumno
asignatura A asignatura B aprobado?
1 6.5 7 Sí
2 8 9 Sí
3 4.5 5 No
4 2 3 No
5 4.75 4.25 Sí
6 3 4 No
7 4 4 No
... ... ... ...
“si la nota en la asignatura A es mayor o igual que 4.75 y la nota en la asignatura B es mayor
o igual que 4.5, el alumno, finalmente, aprueba el curso”
pág. 32
modelo o función objetivo que describe la relación entre la nota en la asignatura A y el
aprobado o no del curso, y que puede ser utilizado para predecir valores nuevos.
Este ejemplo presenta qué es un modelo, qué es una característica y qué es una etiqueta
de clase.
TIPOS DE APRENDIZAJE
A continuación, se presentan los tres tipos básicos de aprendizaje automático.
Aprendizaje supervisado
El aprendizaje supervisado es aquel en el que se dispone de datos que incluyen
características (variables que describen y caracterizan esos datos) y, también, de las
etiquetas de clase que les corresponden. El objetivo del aprendizaje supervisado es el de
obtener un modelo que permita hacer predicciones sobre datos futuros o no vistos.
pág. 33
El término supervisado hace referencia a que se conoce, para todos los datos de
entrenamiento, el valor de su correspondiente clase y, por tanto, es posible supervisar
durante la creación del modelo si el valor de la etiqueta de clase predicha durante la creación
del modelo se corresponde con la presente en datos en sí.
Volvamos al ejemplo anterior de las notas en las asignaturas A y B. ¿Cómo se supervisa el
proceso de aprendizaje? La supervisión se lleva a cabo de esta forma: el proceso lee la
muestra y separa la características (notas A y B) de la etiqueta de clase (si el alumno aprobó
o no el curso). A partir de las características, desechando temporalmente el valor de su
etiqueta, el modelo creado hasta el momento obtiene un valor calculado para la etiqueta.
Por ejemplo, si se procesa la muestra (6.5,7, “Sí”), el algoritmo toma los valores 6.5 y 7 de
la características y obtiene un valor calculado para la etiqueta. Supongamos que se devuelve
el valor “Sí”. En ese caso, el supervisor comprueba que el valor calculado y el valor real
coinciden y el modelo no se modifica. Sin embargo, si se procesa una muestra cuyo valor
calculado es “No” mientras que su valor real es “Sí”, el supervisor actualizará el modelo para
que asimile esta situación. Debe tenerse en cuenta que el modelo buscado, la función que
relaciona las características y las etiquetas de salida, se actualiza con cada muestra
procesada.
Aprendizaje reforzado
En este tipo de aprendizaje el objetivo es construir un sistema llamado agente, que interactúa
con un entorno y recibe respuestas del mismo. El objetivo es que el rendimiento del agente
sobre el entorno vaya mejorando por medio de la ejecución de acciones de cuyo resultado
va a recibir retroalimentación. A través de su interacción con el entorno, un agente puede
pág. 34
utilizar el aprendizaje reforzado para aprender qué serie de acciones maximizan el valor de
una recompensa.
Un programa que juegue al ajedrez, por ejemplo, puede beneficiarse de esta forma de
operar: el sistema puede almacenar secuencias de jugadas junto con el resultado de las
mismas (victoria, derrota, tablas, ganancia/pérdida de material, etc.). La magnitud de la
recompensa guiará al sistema para, en futuras acciones, eliminar las secuencias de acciones
que dieron lugar a una recompensa negativa (derrota, pérdida de material) y repetir aquellas
que tuvieron una recompensa positiva (victoria, ganancia de material).
Aprendizaje no supervisado
En el aprendizaje supervisado cuando se entrena el modelo se conoce la respuesta correcta
de cada muestra de antemano; en el reforzado se define una medida de recompensa para
acciones concretas mediante el agente. Sin embargo, en el aprendizaje sin supervisión no
se dispone de etiquetas para los datos: por lo que a nosotros respecta, la estructura es
desconocida. Las técnicas de aprendizaje sin supervisión permiten explorar la estructura de
estos datos para extraer información significativa.
pág. 35
TIPOS DE TAREAS
Clasificación - Aprendizaje supervisado
La clasificación es una subcategoría del aprendizaje supervisado cuyo objetivo es predecir
las etiquetas de clase de nuevas instancias a partir de observaciones pasadas; estas
etiquetas de clase son discretas, valores cualesquiera que se pueden entender como
agrupaciones de las instancias. En el ejemplo que ya hemos presentado la tarea consistía
en predecir el valor de la etiqueta ¿curso aprobado? a partir de los valores de la
características nota de las asignaturas A y B. Este caso, pues, es un ejemplo de tarea de
clasificación, dentro del aprendizaje supervisado.
El conjunto de etiquetas de clase no tiene porqué ser de naturaleza binaria. El modelo
predictivo aprendido mediante un algoritmo de aprendizaje supervisado puede asignar
cualquier etiqueta de clase a una nueva instancia sin etiqueta. Nuestro ejemplo podría
expandirse de la siguiente forma: supóngase que en lugar de disponerse del hecho de si el
alumno aprobó o no el curso, se dispone la nota final:
pág. 36
En resumen, la tarea de clasificación consiste en asignar etiquetas categóricas y sin orden
a instancias de datos para los que no se conoce el valor de dicha etiqueta. Para ello,
previamente se ha creado (entrenado) un modelo a partir de datos conocidos, que han
permitido obtener reglas mediante un proceso inductivo. A los datos inicialmente disponibles
se les denomina datos de entrenamiento.
pág. 37
Al igual que la clasificación la regresión es una tarea de aprendizaje inductivo que ha sido
ampliamente estudiada y utilizada. De manera informal puede plantearse como un problema
de clasificación en el que la etiqueta de clase o destino no toma valores discretos, sino
continuos.
pág. 38
Las muestras pueden describirse utilizando como característica el número de lados de la
figura:
Nº muestra Lados
1 3
2 4
3 5
... ...
9 6
10 5
Aunque también podría utilizarse como característica la forma de la figura, mediante un texto
(T = triángulo, C = cuadrado, etc.):
Nº muestra Forma
1 T
2 C
3 P
... ...
9 H
10 P
pág. 39
Sin embargo, esta última situación debe evitarse en procesos de aprendizaje automático. El
hecho de que a un valor determinado de la característica ‘lados’ le corresponda siempre el
mismo valor de la característica ‘forma’ sugiere que una de las dos puede ser eliminada del
estudio, ya que, dada una característica, la otra no aporta más información.
De forma obvia se obtienen 4 subgrupos, o clusters, que agrupan las muestras disponibles
en función de la característica seleccionada. Tras el proceso de aprendizaje no supervisado
es posible saber que las muestras utilizadas para dicho proceso pertenecen a 4 grupos
distintos y que no se dispone de ninguno más.
Ahora supóngase que al conjunto de muestras anterior se añaden, por ejemplo, las dos
formas siguientes:
pág. 40
Las anomalías son, pues, muestras no integrables en los subgrupos descubiertos y que, a
la vez, no poseen entidad como para definir subgrupos nuevos. La detección de anomalías
es una tarea interesante en sí misma, pues pone de manifiesto muestras o instancias que,
tal vez, hayan sido pasadas por alto en estudios anteriores y que requieran de la atención
del científico de datos. El hecho de que una muestra constituya una anomalía no es sinónimo
de que se trate de una muestra insignificante, sino que puede ser el detonante de una
investigación posterior.
Por ejemplo, supóngase un proceso de aprendizaje automático que analiza las señales de
alarma emitidas por un conjunto de 1000 cámaras de seguridad. Se sabe que lo habitual es
que el 99% de las señales de alarma se correspondan con situaciones de intrusión real, y
que el 1% restante constituya los denominados “falsos positivos”, es decir, señales de alarma
que se emitieron sin corresponderse con una situación de peligro real. Si en una tarea de
agrupamiento se obtiene que 999 de las 1000 cámaras mantienen esa proporción, pero que
la restante emite un 20% de falsos positivos, la empresa de seguridad deberá analizar la
situación: tal vez la cámara está mal calibrada, tal vez el sensor está dañado, o tal vez hay
un problema de intrusión real que se enmascara, por el motivo que sea, como un falso
positivo.
pág. 41
preparación o preprocesamiento en el caso de ser necesario efectuar operaciones de
corrección o modificación del formato de los datos antes de poder ser analizados.
Para determinar si nuestro algoritmo de aprendizaje automático no solo funciona bien con el
conjunto de entrenamiento sino que también se generaliza con datos nuevos, nos interesa
dividir de forma aleatoria el conjunto de datos en un conjunto de pruebas y de entrenamiento
separados. Utilizamos el conjunto de entrenamiento para entrenar e iniciar nuestro modelo
de aprendizaje automático, al tiempo que mantenemos el conjunto de prueba para evaluar
el modelo final.
pág. 42
con frecuencia es la precisión de la clasificación, que se define como la proporción de
instancias clasificadas correctamente.
A tener en cuenta
Estas etapas son similares tanto en el caso de un proyecto Big Data como en el caso de un
proyecto, digámoslo así, convencional. Hace unos años las herramientas y la tecnología que
se empleaban en un proyecto de este tipo eran totalmente diferentes a las utilizadas en un
proyecto de minería de datos tradicional. Por ejemplo, en la fase de captura, se utilizaban
herramientas diseñadas específicamente para tratar con grandes volúmenes de datos, como
Apache Sqoop. En la segunda fase, se empleaban sistemas de ficheros distribuidos o bases
de datos no sql, desarrolladas para entornos distribuidos y grandes cantidades de datos
heterogéneos. Y finalmente, en la fase de análisis se solían emplear herramientas como
Mahout o MLib, que fueron desarrolladas en los entornos Apache Hadoop y Apache Spark,
respectivamente.
pág. 43
ELEMENTOS DE LA PREPARACIÓN DE LOS DATOS
Preparar los datos disponibles significa optimizarlos para su tratamiento computacional. Esto
implica revisar la completitud de los datos, ajustar sus escalas si procede, dividirlos en
grupos de entrenamiento y comprobación y codificar numéricamente las características no
numéricas.
pág. 44
En ella se esboza un subconjunto de un conjunto de 150 muestras de datos botánicos sobre
la flor iris (glosario). Cada muestra consta de 4 características (longitud y anchura del sépalo,
longitud y anchura del pétalo) medidas en cm y una etiqueta de clase, especie, que puede
tomar tres valores: iris-setosa, iris-versicolor e iris-virginica.
Para esbozar el caso se muestran las 7 primeras muestras de cada valor de la etiqueta de
clase: puede apreciarse que en 3 de las muestras de iris-setosa, en 4 de iris-versicolor y en
tres de iris-virginica faltan datos en algunas características. Si se ha de procesar el conjunto
de datos para, por ejemplo, predecir el valor de la especie a partir de las 4 características de
una flor ¿Qué se ha de tener en cuenta?
En primer lugar, es necesario localizar en todo el conjunto de muestras aquellas que están
incompletas. Si se considera que el porcentaje de muestras incompletas es pequeño o que,
siendo grande, los datos completos restantes suponen una cantidad suficientemente grande
como para realizar el estudio con garantías de éxito, las muestras incompletas pueden
eliminarse sin más, para trabajar sólo con los datos restantes, completos en su totalidad. Sin
embargo, muchas veces esta operación de eliminación no puede llevarse a cabo, por lo que
hay que llevar a cabo una acción que mitigue el problema de carecer de datos.
Esta acción es la llamada imputación o asignación de valores ausentes, y consiste en
sustituir cada hueco de una característica de una muestra por uno de los siguientes valores:
pág. 45
Podría utilizarse cualquiera de los tres métodos para completar los valores de dicha
característica en las tres muestras del ejemplo. Ahora bien, tras observar los rangos de
valores que presenta la característica anchura del pétalo en función de la especie, ¿tendría
mucho sentido calcular, por ejemplo, la media de anchura del pétalo a partir de todos los
valores de la colección? Es fácil ver que, para iris-setosa, los valores de esta característica
varían entre 0.2 y 0.4, mientras que para iris-versicolor se dispone del rango de 1.3 a 1.6. Si
se repara en los valores de iris-virginica, por su lado, varían entre 1.7 y 2.5. Parece evidente
que calcular la media de la característica anchura del pétalo para todas las muestras y usarla
para rellenar valores ausentes en todas las posiciones no es adecuado, sino que debería
calcularse una media para cada valor de la etiqueta especie, y emplearla para asignar los
valores adecuados en función de la especie.
Siempre que se disponga de datos suficientes será conveniente efectuar este tipo de
consideraciones para rellenar las características ausentes. Cuando no sea posible, deberá
utilizarse todo el conjunto de datos.
En este caso se sabe que las correspondientes medias de anchura del pétalo para las
especies iris-setosa e iris-versicolor, calculadas para cada valor de la etiqueta eliminando
los valores que faltan en la lista superior, son:
pág. 46
Media de iris-setosa = 0.24
Media de iris-versicolor = 1.32
La media de la característica anchura del pétalo, calculada para todas las muestras, es 1.20.
Si se tiene en cuenta que los valores reales de las características que se han suprimido por
motivos didácticos son:
En ambos casos la media proporcionada por su propia especie se acerca mucho más al
valor real que la media de esa característica para todo el conjunto de datos.
Escalado de características
El escalado de características tiene como objeto conseguir que los cálculos implícitos en la
ejecución de un algoritmo -en este caso, en la ejecución de un proceso de aprendizaje
automático- se lleven a cabo con datos numéricos de magnitud similar.
En efecto, salvo algunos casos muy concretos (árboles de decisión y random forest) las
magnitudes relativas de los valores de las características de las muestras influyen a la hora
de entrenar el modelo, como se ilustrará a continuación.
Para llevar a cabo un escalado de características pueden utilizarse dos enfoques: el de
normalización y el de estandarización.
El enfoque basado en la normalización tiene por objeto comprimir el rango de valores de
los datos iniciales a un rango más manejable. Por ejemplo, pasar del rango [-1000, 1000] al
rango [-1,1]. A menudo el escalado mediante normalización traduce cualquier rango al rango
[0, 1] mediante la siguiente fórmula:
que asigna a cualquier valor x el valor x normalizado, utilizando los valores máximo y mínimo
del rango inicial.
pág. 47
La estandarización, por su parte, convierte el rango inicial en un rango centrado en el valor
x=0 y con una desviación estándar de 1. La fórmula que describe este proceso es:
pág. 48
Donde las correspondientes medias y desviaciones estándar se han calculado con la
totalidad de los datos.
Llevar a cabo un proceso de aprendizaje supervisado, por tanto, implica en primera instancia
disponer de datos ya clasificados, datos de los cuales ya se conoce el valor que debe
pág. 49
predecir el modelo una vez construido. Este conocimiento previo de la solución es lo que
permite el aprendizaje supervisado.
Para cada alumno se disponía del valor de dos características, sus notas en las asignaturas
A y B, y el valor de la etiqueta ¿Curso aprobado?
Para ello no basta con disponer de un modelo, sino que es necesario disponer de un modelo
validado o contrastado. Obviamente, como se verá en el caso del perceptrón, el modelo será
forzosamente coherente con los datos que se le han proporcionado en su entrenamiento.
Con esto se quiere decir que si, por ejemplo, se utilizó la siguiente muestra para entrenar el
modelo:
pág. 50
Alumno Nota en la asignatura Nota en la asignatura ¿Curso
A B aprobado?
1 6.5 7 Sí
Lo lógico será que el modelo prediga que los alumnos que obtuvieron 6.5 o más en la
asignatura A y 7 o más en la asignatura B aprueben el curso. Si el modelo obtenido no es
coherente con los datos de entrenamiento, directamente, el modelo no es válido.
Por lo tanto, para validar el modelo debe disponerse de datos diferentes a los datos con los
que se construyó pero con el mismo grado de validez. Esto se consigue, habitualmente,
dividiendo el conjunto de datos iniciales en:
Una vez que se ha construido el modelo a partir de los datos de entrenamiento el proceso
de validación se lleva a cabo aplicando a los datos de test el modelo obtenido, obteniendo
valores calculados para su etiqueta de salida o destino y comparando estos valores con los
valores conocidos previamente:
pág. 51
Cuando se han procesado los datos de test, la valoración de la adecuación del modelo se
lleva a cabo mediante la matriz de confusión.
Para comprender este concepto volvamos al caso de las notas de los alumnos en las
asignaturas A y B. Supóngase que se dispone de un conjunto de 200 muestras para validar
el modelo creado previamente. De esas 200 muestras, 160 corresponden a alumnos que
aprobaron el curso, mientras que 40 son de alumnos que lo suspendieron.
Ahora, aplicando el modelo a los datos y comprobando los resultados, imaginemos que, para
los 160 alumnos que aprobaron, el modelo predice que 152 aprueban y 8 suspenden.
Análogamente, supóngase que el modelo predice que de los 40 alumnos que realmente
suspendieron, 25 suspenden y 15 aprueban. Esto se representa así:
pág. 52
En este caso se dice que el modelo está sesgado hacia el el valor “aprobado”, es decir,
fracasa en predecir valores de “suspenso” en un 37.5% de las ocasiones. Intuitivamente y
en lenguaje humano, puede afirmarse que “ante la duda, asigna el valor aprobado”. Eso
puede tener varias causas.
pág. 53
modelo. Los algoritmos de aprendizaje automático que presentan error de varianza alto, por
tanto, podrán ser reconocidos por este comportamiento a partir de los datos de
entrenamiento. La regresión lineal y la regresión logística son algoritmos con una varianza
baja, mientras que los árboles de decisión presentan una alta varianza. Obsérvese que es
la situación inversa a la vista en el error de sesgo.
El objetivo de todo proceso de aprendizaje automático es el de obtener un modelo con
valores bajos del sesgo y de la varianza, manteniendo una buena capacidad de predicción.
Sin embargo, lo normal es encontrar situaciones en los que, al menos, uno de los dos valores
es alto.
Si las predicciones que ofrece un modelo ya entrenado se encuentran agrupadas en un
rango estrecho de valores, pero alejadas en promedio de sus valores reales se tendrá una
situación de poca varianza (valores agrupados) y alto sesgo. Esta situación es la que pueden
presentar los algoritmos lineales, como la regresión lineal. Si las predicciones, en cambio,
se presentan dispersas pero centradas en los valores reales se tendrá una situación de bajo
sesgo pero alta varianza. Esto puede darse entrenando algoritmos no lineales como son los
árboles de decisión.
En general, cuando disminuya el sesgo la varianza aumentará, y viceversa. Obtener un buen
modelo en una situación real, por tanto, consistirá en equilibrar sesgo y varianza, de manera
que se minimice el error total.
pág. 54
Overfitting y underfitting
El overfitting ocurre cuando el modelo queda ajustado en demasía a los valores de las
características de los datos de entrenamiento, lo que se traduce en que se pueden predecir
con mucha precisión los valores de los mismos, pero se fracasa cuando se suministran datos
nuevos. En esta situación es posible que se haya ajustado tanto el proceso de aprendizaje
que éste haya incluido incluso los valores que constituyen ruido o son valores atípicos
(outliers). El overfitting va acompañado de una alta varianza.
Las causas que pueden conducir a esta situación son varias, pero la raíz común de todas
ellas es la de que el conjunto de datos de entrenamiento es demasiado complejo para el
número de muestras con las que se ha construido el modelo, es decir, se debería haber
llevado a cabo el proceso con más muestras y/o un modelo más sencillo, con menos
características.
Los métodos más empleados para evitar este problema consisten en:
Regularizar los datos, según los métodos ya vistos en el apartado “escalado de
características”.
Regularizar los algoritmos de forma que se penalicen los valores altos de los pesos
que forman parte de las funciones de entrada (perceptrón).
Reducir la dimensionalidad de los datos.
Disminuir el número de iteraciones del proceso de aprendizaje, deteniéndolo cuando
se alcanza un grado de precisión aceptable sobre los datos de entrenamiento. A este
método se le denomina detección temprana.
En el caso del underfitting ni siquiera los datos de entrenamiento consiguen ser clasificados
correctamente, detectándose un alto sesgo que suele deberse al entrenamiento de un
pág. 55
modelo demasiado sencillo, por ejemplo, cuando se intenta obtener un modelo lineal a partir
de datos de no lineales o cuando no se dispone de suficientes datos.
Construir el modelo a partir de más muestras, es decir, recopilar más datos de
entrenamiento.
Aumentar la dimensionalidad de los datos, es decir, el número de características a
partir de las que se entrena el modelo.
Ahora se tienen los datos de las notas de los alumnos y sus resultados expresados mediante
etiquetas de clase. Dos de ellas son ordinales y una de ellas es nominal. Veamos por qué.
El valor de la nota final del curso se expresa mediante los valores {‘Sí’, ‘No’}. Estos valores
no contienen un orden implícito en sí mismos. No nos confundamos pensando que, al ser
mejor aprobar que suspender, el valor ‘Sí’ es superior de alguna forma al valor ‘No’: podría
utilizarse el valor ‘Sí’ para indicar que un paciente está enfermo… En definitiva, la
característica ¿curso aprobado? se expresa mediante valores nominales. Cada uno es el
que es y no está relacionado con el resto de ninguna forma.
Por el contrario, las notas de A y B se expresan mediante los valores {‘Insuficiente’,
‘Suficiente’, ’Notable’, ’Sobresaliente’} y estos valores si contiene un orden implícito, ya que
hay un valor implícito -la nota numérica- que, al crecer, se va correspondiendo con los
valores de las etiquetas, de manera que puede decirse que:
pág. 56
Insuficiente < Suficiente < Notable < Sobresaliente
pág. 57
Alumno Nota en la asignatura A Nota en la asignatura B ¿Curso aprobado?
1 Notable Notable Sí
2 Notable Sobresaliente Sí
3 Insuficiente Suficiente No
4 Insuficiente Insuficiente No
... ... ... ...
Insuficiente
Suficiente en Notable en Sobresaliente ¿Curso
Alumno en asignatura ...
asignatura A asignatura A en asignatura A aprobado?
A
1 0 0 1 0 ... Sí
2 0 0 1 0 ... Sí
3 1 0 0 0 ... No
4 1 0 0 0 ... No
... ... ...
Este proceso puede ser optimizado al máximo si en lugar de emplearse cuatro nuevas
características se emplean sólo tres, de manera que el valor de la característica no
representada esté implícito en las tres que sí lo están:
pág. 58
Insuficiente en Suficiente en Notable en ¿Curso
Alumno ...
asignatura A asignatura A asignatura A aprobado?
1 0 0 1 ... Sí
2 0 0 1 ... Sí
3 1 0 0 ... No
4 1 0 0 ... No
... ... ...
Es decir, pueden representarse explícitamente los casos en los que hay insuficientes,
suficientes o notables en la asignatura A, siendo fácil de deducir que un valor 0 en las tres
características mencionadas implica un valor 1 en la característica no mostrada.
Perceptrón
El perceptrón o neurona artificial de Rosenblatt es el componente software más sencillo
capaz de generar un modelo de clasificación dentro del aprendizaje supervisado. El
perceptrón es alimentado con datos que poseen m características y dos valores posibles
para la etiqueta de destino -clasificación binaria-, siendo capaz de generar, bajo ciertas
condiciones, un modelo que predice la clase destino a partir de nuevos valores de entrada.
Conceptualmente, el perceptrón se representa mediante el siguiente esquema.
pág. 59
Los valores de entrada se denotan por y son los valores de las
características de la muestra que se está empleando para construir o validar el modelo,
dependiendo del momento. En el caso de las notas en las asignaturas A y B, se trabajaría
con dos características de forma que
serían los valores aportados por la primera muestra. El valor 1 que se ve en el esquema,
encima de las variables de entrada, no forma parte de las características de la muestra, sino
que es un elemento que se introduce con el fin de que la función umbral U adquiera una
forma más manejable.
Es decir, la suma de los productos de cada una de las características por su correspondiente
peso más un término de compensación. En notación más compacta esto puede expresarse
así:
pág. 60
más el término de compensación. Añadiendo este término a los vectores w y x, se obtiene
una notación aún más compacta, que es la que se suele emplear internamente en los
algoritmos implementados en los distintos lenguajes de programación:
Toma el valor 1 si z es mayor o igual que 1 y -1 en caso contrario. ¿Qué son en sí estos
valores? Pues, ni más ni menos, los valores que el modelo dado por los valores actuales de
pág. 61
predice para las características empleadas en ese
Es decir, cada uno de los pesos es recalculado en función de su valor anterior, del valor de
la característica correspondiente, de la diferencia de los valores obtenidos para esa muestra
y de un factor r o rango de aprendizaje, que es un parámetro cuyo valor suele estar entre 0
y 1.
Cuando se ha procesado la primera muestra y se han ajustado los pesos convenientemente,
se procesa la segunda muestra y se actúa de la misma forma, y así hasta agotar las n
muestras establecidas para el conjunto de entrenamiento del modelo.
pág. 62
Y por lo tanto z = 0. Aplicando la función umbral, dado que z es 0, el valor calculado que se
obtiene es 1. El supervisor compara el valor calculado 1 con el valor real -1 y decide
actualizar los pesos utilizados, ya que el modelo inicial ha sido incapaz de predecir el valor
de salida -1, que es el asociado a las características (4, 3.5).
Por lo tanto, deben efectuarse los cálculos dados por:
Con lo que el nuevo vector de pesos será (-2, -8, -7), y se empleará en el cálculo del valor
de la siguiente muestra.
pág. 63
En ella se refleja un proceso de entrenamiento de un modelo en el que, en la primera
iteración, se ha detectado una discrepancia, en la segunda iteración se han detectado tres
discrepancias y en la tercera una discrepancia. A partir de la cuarta iteración las
discrepancias desaparecen y todos los valores calculados para las muestras del conjunto de
entrenamiento coinciden con los valores destino de las mismas. Se puede apreciar que el
número de discrepancias aumentó de la iteración nº 1 a la iteración nº 2, lo que ilustra la
necesidad de obtener una serie de iteraciones sin discrepancias para asegurar que el
modelo converge. En el caso del perceptrón puede demostrarse matemáticamente que
converge siempre y cuando las muestras de cada categoría puedan ser separadas
linealmente:
pág. 64
Test sobre el perceptrón
Cuando se dispone del modelo final, el siguiente paso es validarlo. La validación se llevará
a cabo a partir de datos obtenidos de la misma muestra que los datos de entrenamiento y
su proceso será más simple: para cada muestra del conjunto de datos de test se obtendrá
su valor calculado y se comparará con su valor real. Se realizarán los cálculos apropiados y
se obtendrá la correspondiente matriz de confusión, de cuyo análisis podrán obtenerse las
conclusiones definitivas sobre la validez del modelo para predecir valores fiables a partir de
nuevas muestras.
pág. 65
Y, como puede apreciarse, aparece un nuevo elemento que es la llamada función de
activación lineal.
En el caso de las neuronas lineales adaptativas o Adaline (del inglés ADAptive LInear
NEuron) esta función de activación es la función identidad que a cada valor de la entrada de
red z le asigna a sí mismo.
Esto podría considerarse idéntico al perceptrón, pero hay que observar que, antes de
aplicarse la función umbral, el valor obtenido se somete a un proceso de supervisión y sólo
después se aplica la función umbral al resultado obtenido. Esto sugiere que, internamente,
el proceso de supervisión de Adaline funciona de forma diferente al del perceptrón. Así es.
Cuando se entrenaba un perceptrón para obtener el modelo se ejecutaba un proceso de
cálculo de los pesos w por cada muestra del conjunto de entrenamiento procesada. Este
cálculo era individual e implicaba que un conjunto de 150 instancias, por ejemplo, daba lugar
a 150 cálculos por iteración. Si el proceso implicaba 10 iteraciones el total de cálculos para
el reajuste de los pesos w se era de 1500.
En Adaline no va a ser así, ya que el reajuste de cada componente del vector pesos w se
obtiene de la a partir de esta expresión:
pág. 66
Obsérvese el superíndice i -que varía entre 0 y n, el nº total de muestras- que indica que
en el proceso de ajuste de los pesos w se tiene en cuenta la totalidad de las muestras del
conjunto de datos. Es decir, en 10 iteraciones sólo se efectúan 10 cálculos de w.
La expresión de arriba para el cálculo de los pesos se deriva, mediante cálculo diferencial,
de la fórmula:
Que expresa la suma de los cuadrados de las diferencias, para cada muestra i, entre el
valor real de su etiqueta de clase y el valor calculado a partir de los valores actuales de w.
El proceso de aprendizaje de Adaline tiene como objetivo minimizar el valor de esa función,
llamada también función de coste. El procedimiento que lleva desde esta función a la
expresión para el reajuste de pesos de denomina descenso de gradiente.
Convergencia de Adaline
La convergencia de este componente, al igual que en el caso del perceptrón, se produce
cuando las clases destino son linealmente separables.
La ventaja de Adaline sobre el perceptrón estriba en que su convergencia, de producirse,
es definitiva, mientras que, en el caso del perceptrón, una vez que no se obtienen errores,
es necesario ejecutar iteraciones adicionales para verificar que los resultados obtenidos
son definitivos, y que no se ha detectado un mínimo local que lleve a engaño al analizar los
resultados.
Regresión logística
Este modelo de clasificación, a pesar de lo que pueda sugerir su nombre, sigue la
estrategia de Adaline, con la diferencia de que la función de activación no es la identidad
φ(z)=z, sino la función sigma.
pág. 67
La regresión logística, en esencia, se diferencia de Adaline en que la función de activación
sigma proporciona un valor que en sí mismo tiene significado: la probabilidad de que el
valor destino calculado coincida con el valor real de la muestra.
ÁRBOLES DE DECISIÓN
Los árboles de decisión son un algoritmo que permite clasificar datos cuyas etiquetas de
clase no pueden ser separadas linealmente, pero se distribuyen en un espacio n-
dimensional en el que se pueden establecer divisiones n-rectangulares en las que
predomina una etiqueta de clase concreta. Si consideramos este problema de dos
pág. 68
En esta situación es evidente que no existe una línea que divida satisfactoriamente el
espacio de muestras de manera que las etiquetas de clase queden nítidamente separadas,
es decir, no existe separabilidad lineal. Sin embargo, es posible agrupar el conjunto de
muestras en rectángulos en los que predomina una u otra etiqueta destino:
A partir de los valores X1, X2, Y1, Y2 pueden escribirse, por ejemplo, las tres siguientes
expresiones lógicas:
Es evidente que mediante las condiciones oportunas y a partir de los valores X1, X2, Y1,
Y2, que dividen el espacio muestral en seis rectángulos, es posible clasificar perfectamente
todas las muestras. Representémoslo de la siguiente forma:
pág. 69
Esta figura representa un árbol de decisión binario que constituye un modelo que resuelve
el problema de clasificación planteado al principio. El árbol de decisión está constituido por
el nodo raíz, los nodos de prueba y los nodos de decisión.
El nodo raíz constituye el origen del árbol, los nodos de prueba representan las
condiciones que se establecen sobre las características de las muestras datos y los nodos
de decisión los valores que toman las etiquetas de clase para las condiciones anteriores. El
nodo raíz es un nodo de decisión que tiene la propiedad de reflejar la condición que mejor
caracteriza el espacio muestral. Para verlo con más claridad obsérvese la siguiente figura.
pág. 70
nodos obtenidos pertenecen a la misma clase, con lo que el proceso de subdivisión se
detiene.
La función de ganancia de información se define estrictamente por
Y se interpreta así:
Por lo tanto, la ganancia de información consiste en la diferencia entre las impurezas del
nodo padre y de los nodos hijos. Un nodo en el que haya datos que pertenezcan a sólo
una etiqueta de clase carecerá de impureza, mientras que si el nodo posee datos de todas
las clases repartidos equitativamente su impureza será máxima.
La función de ganancia de información definida arriba aplica a la hora de construir árboles
de decisión en los que un nodo padre puede tener m nodos hijos. Sin embargo, para
minimizar el cálculo computacional sin perder capacidad predictiva se emplean
fundamentalmente árboles de decisión binarios. Para ellos la función de ganancia de
información se define así:
pág. 71
Para calcular los valores de las impurezas de un nodo se dispone de varios criterios:
Entropía:
Se calcula sumando para todas las características c los valores mostrados, donde m es el
número de muestras del nodo n, y mc el número de muestras que, en ese nodo,
pertenecen a la clase c. Es evidente que si todas las muestras pertenecen a la misma
clase la entropía del nodo es 0.
Impureza de Gini:
Similar en la práctica a la entropía. Se anula si todas las muestras pertenecen a una clase
y se maximiza cuando la distribución de clases es uniforme.
Error de clasificación:
Los árboles de decisión son modelos que presentan la ventaja de ser muy intuitivos y, por
lo tanto, permiten transmitir información a interlocutores sin necesidad de que estos
posean conocimientos especializados. Presentan el inconveniente, sin embargo, de ser
proclives al overfitting.
pág. 72
BOSQUES ALEATORIOS O RANDOM FOREST
Los bosques aleatorios son un algoritmo de aprendizaje automático bastante flexible que
permite obtener buenos resultados en la mayoría de las ocasiones. Puede ser utilizado, al
igual que su predecesor, el árbol de decisión, tanto para tareas de clasificación como de
regresión.
Este algoritmo crea múltiples árboles de decisión y los combina para obtener predicciones
precisas. El método, en esencia, consiste en crear árboles en los que no se busca la
característica que produzca más ganancia de información, sino que la característica que se
toma como partida para la construcción del árbol es seleccionada aleatoriamente.
Este sistema permite evitar el sobreajuste, ya que los árboles no han de ser muy
profundos. Se “combate” la necesidad de profundizar que puede presentar un árbol de
decisión -para disminuir las impurezas de los nodos- con la variedad de decisiones que
permiten obtener los bosques aleatorios, sobre las que se promedia y se obtiene la
predicción final para una muestra determinada.
Como ventajas hay que decir que los modelos basados en bosques aleatorios poseen una
buena capacidad predictiva y que es difícil que experimenten overfitting. Sin embargo, los
bosques aleatorios pierden la capacidad clasificatoria que manifiestan los árboles de
decisión, ya que las relaciones entre las características y los valores de las clases destino -
la figura de árbol, en definitiva- se pierden, al renunciarse a una clasificación basada en la
ganancia de información entre nodos en función de la mejor característica, ya que dicha
característica es seleccionada al azar en cada árbol de un bosque aleatorio. Además de
esto, si bien la capacidad predictiva de un bosque aleatorio es buena, hay que indicar que
es lenta. Si el algoritmo obtenido debe usarse para efectuar predicciones en tiempo real,
hay que tener este factor en cuenta.
Un beneficio que se obtiene de forma colateral al construir un bosque aleatorio es que es
fácil conocer, en el modelo obtenido, la importancia que en el mismo presenta cada una de
sus características, por lo que es posible reducir las mismas a partir de esta información
seleccionado las más relevantes y, si es necesario, generar otro modelo mediante otro
algoritmo utilizando las características seleccionadas.
pág. 73
REGRESIÓN LINEAL
Es una técnica utilizada para predecir el valor de una variable continua y (variable
dependiente) a partir de un conjunto de variables independientes xi. Cuando sólo se
dispone de una variable independiente se habla de regresión lineal simple.
La idea subyacente a la regresión lineal es la de que existe una relación lineal y aditiva
entre las variables dependientes e independientes y, además, no existe correlación entre
las diferentes variables independientes x1, x2, etc.
Normalmente no se utilizan todas las variables independientes utilizadas para caracterizar
cada muestra de datos. Lo habitual es seleccionar las más significativas, para lo que puede
utilizarse la matriz de correlación o alguna de las técnicas presentadas más adelante.
Ha de tenerse en cuenta que disponer de muchas variables independientes no significa
forzosamente que el modelo lineal obtenido proporcione mejores predicciones. Muchas
pág. 74
variables independientes pueden provocar overfitting y, también, presentar dependencias
entre las mismas (multicolinealidad).
REDUCCIÓN DE DIMENSIONALIDAD
Otro subcampo del aprendizaje automático es la reducción de dimensionalidad. La
reducción de dimensionalidad es un enfoque utilizado con frecuencia en el procesamiento
de características para eliminar ruido de los datos, es decir, información no significativa de
la que no se van a poder extraer conclusiones. La finalidad es la de comprimir los datos en
un subespacio de dimensión más pequeña manteniendo la mayor parte de la información
importante, de forma que los algoritmos sean más rápidos y el consumo de recursos en la
máquina se minimice. La reducción de dimensionalidad también puede ser útil para
visualizar datos.
El problema de la dimensionalidad es uno de los más importantes en la minería de datos.
Existen varias técnicas para descartar los parámetros que tiene menos peso en nuestro
análisis, como la descomposición en valores singulares y el análisis de componentes
principales, siendo esta última es la más popular.
Antes de proseguir con los conceptos teóricos, ejercitemos la intuición con el siguiente
caso.
Se dispone de N muestras de las cuales las 4 primeras son:
El conjunto de muestras está formado por dos clases de figuras geométricas (triángulos y
cuadrados) que pueden tener dos colores (azul y naranja). Las muestras mostradas arriba
se describen así:
pág. 75
Nº. Muestra Forma Color
1 Triángulo Azul
2 Cuadrado Naranja
3 Triángulo Naranja
4 Cuadrado Azul
Cada muestra posee dos características que la definen o, lo que es lo mismo, cada
muestra está descrita por dos coordenadas en un espacio de dos dimensiones (forma y
color), pudiendo tomar cada dimensión dos valores:
Con esto en mente, imagínese que las 4 figuras presentadas arriba forman parte de un
conjunto de muestras compuesto por 1.000.000 de instancias de cada tipo: 1.000.000 de
triángulos azules, 1.000.000 de cuadrados azules, etc. En total, se tienen 4.000.000 de
muestras con formas y colores repartidos uniformemente, de forma que cada combinación
constituye un 25% de la totalidad.
pág. 76
Intuitivamente puede verse así: si se toma una muestra al azar del conjunto, existe la
misma probabilidad de que se trate de un triángulo que de un cuadrado, tanto si es azul
como naranja. Un agrupamiento por la característica “forma”, por ejemplo, haría
desaparecer la característica “color”, que posee tanto significado como la primera: un 50%
de las muestras son cuadrados, pero también es cierto que un 50% de las muestras son
azules. Mientras no se disponga de información adicional, o de un criterio que permita
tomar una decisión, no puede eliminarse ninguna característica/dimensión del estudio. Esto
es, no puede ejecutarse ninguna operación de reducción de dimensionalidad.
pág. 77
Puede decirse, por lo tanto, que la característica “color” no es relevante en la tarea de
agrupación que se lleva a cabo y que puede ser eliminada del estudio. El número de
dimensiones se reduce y el conjunto de muestras se expresa así:
Selección de características
La selección de características es la acción por medio de la cual se lleva a cabo la
reducción de dimensionalidad de las muestras, de forma que estas queden descritas sólo
por las características más relevantes. De esta manera se elimina ruido en los datos, sobre
todo cuando se dispone de pocos valores, y el modelo obtenido adquiere mayor capacidad
predictiva.
Para conocer qué pasos llevan a cabo los algoritmos de aprendizaje automático para
realizar esta selección primero se ha de conocer qué es la regularización L1.
Regularización L1
En aprendizaje automático se llama regularización a un método matemático que, en ciertas
circunstancias, se lleva a cabo para evitar que los algoritmos caigan en el overfitting,
reduciendo su complejidad. El método consiste, en esencia, en añadir a la función de coste
un término que aumente al aumentar los pesos w calculados en el aprendizaje, de forma
que la minimización de la función de coste resultante penalice la obtención de valores altos
para w.
Si la función de coste resultante es de la forma
pág. 78
Se dice que se aplica regularización L2. Si la función resultante obedece a esta expresión:
pág. 79
determinado de características c < m o bien detenerse cuando el científico de datos
concluye que no es posible eliminar una característica más sin poner en peligro la
capacidad predictiva del modelo.
Extracción de características
Cuando se trabaja con datos no clasificados en problemas de agrupamiento o clustering
suele utilizarse el concepto de extracción de características a la hora de simplificar los
datos de prueba o de hacerlos más significativos. La expresión extracción de
características no significa que los datos se simplifiquen, de entrada, mediante la
eliminación de características superfluas o poco significativas. Estrictamente hablando,
este proceso permite que a partir de las características iniciales de los datos se construyan
nuevas características, que dependen de las anteriores y a las que sustituyen, y que
describen más claramente el grupo de datos con el que se trabaja.
Como resultado de la mayor claridad alcanzada, es habitual que en la nueva situación se
manifiesten ciertas características como mucho más significativas que el resto, lo que
permite llevar a cabo un proceso de selección de características en el que se desechan
aquellas que no superan cierto umbral.
Dos métodos muy empleados para extraer características son:
pág. 80
ADL. O análisis de discriminante lineal. Su objetivo es encontrar características que
permitan expresar los datos mediante nuevas coordenadas que maximicen la
separabilidad entre clases.
VIDEOS RECOMENDADOS
Agrupamiento:
[Link]
x3p_5ecDdSEIU&index=4
Clasificación y regresión:
[Link]
x3p_5ecDdSEIU&index=2&t=0s
pág. 81
[Link]
x3p_5ecDdSEIU&index=3
Redes neuronales:
[Link]
x3p_5ecDdSEIU&index=6
GLOSARIO
Anaconda
Anaconda es un distribución libre y abierta de los lenguajes Python y R, utilizada en
ciencia de datos, y aprendizaje automático (machine learning). Esto incluye
procesamiento de grandes volúmenes de información, análisis predictivo y cómputos
científicos. Está orientado a simplificar el despliegue y administración de los paquetes
de software.
[Link]
[Link]
pág. 82
Aprendizaje automático
El aprendizaje automático o aprendizaje automatizado o aprendizaje de máquinas (del
inglés, machine learning) es el 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.
[Link]
Aprendizaje supervisado
[Link]
Aprendizaje no supervisado
[Link]
Aprendizaje reforzado
[Link]
Árbol de decisión
[Link]
Correlación
En probabilidad y estadística, la correlación indica el grado de proporcionalidad entre
dos variables estadísticas.
[Link]
pág. 83
Dataset iris
Conjunto de datos que contiene 50 muestras de cada especie de la flor Iris (Iris setosa,
Iris virginica e Iris versicolor). Para cada una de las 150 muestras se dispone de 4
características (longitud del sépalo, anchura del sépalo, longitud del pétalo y anchura
del pétalo, en centímetros) y la etiqueta o valor destino especie: Iris-setosa, Iris-
versicolor e Iris-virginica.
[Link]
Diagrama de dispersión
Un diagrama de dispersión o gráfica de dispersión o gráfico de dispersión es un tipo
de diagrama matemático que utiliza las coordenadas cartesianas para mostrar los
valores de dos variables de un conjunto de datos, de las que esas dos variables son
parte del conjunto de características o dimensiones que describen las muestras.
[Link]
Instalación de Python
Para la instalación de este lenguaje se recomienda la distribución Anaconda. Esta
distribución es gratuita, incluso para uso profesional, e incluye no solamente el
lenguaje Python sino, además, los paquetes esenciales para la ciencia de datos,
matemáticas e ingeniería.
El instalador de Anaconda puede ser obtenido de las URL indicadas en el
correspondiente apartado. Una vez instalado, desde el mismo podrá acceder a
herramientas de trabajo específico en Python, como son Spyder y Jupyter Notebook.
pág. 84
Junto con Anaconda se instala la utilidad de línea de comandos Anaconda Prompt,
que resulta muy cómoda y segura a la hora de instalar nuevas librerías o actualizar
las ya existentes, así como el propio entorno Anaconda y todos sus elementos.
Jupyter Notebook
Es un entorno de trabajo para el lenguaje Python que permite la programación y,
simultáneamente, la presentación de contenidos. Contiene todas las herramientas
científicas estándar de Python y permite realizar las tareas típicas en el ámbito del
análisis y proceso de datos (importación, exportación, manipulación, transformación
y visualización).
[Link]
pág. 85
Matriz de confusión
Una matriz de confusión es una herramienta que permite la visualización del
desempeño de un algoritmo que se emplea en aprendizaje supervisado.
[Link]
Matriz de correlación
Artefacto matemático que muestra, de forma compacta y sencilla, los valores de los
coeficientes de correlación entre varias características continuas de un conjunto de
valores.
[Link]
Media aritmética
La media aritmética de n números es, por definición, la suma de los valores de los n
números dividida entre n.
[Link]
Mediana
En el ámbito de la estadística, la mediana representa el valor de la variable de posición
central en un conjunto de datos ordenados. Es el valor que divide el conjunto de datos
en dos partes con el mismo número de muestras.
[Link]
Moda
En estadística, la moda es el valor con mayor frecuencia en una de las distribución de
datos.
[Link]
pág. 86
Multicolinealidad
Situación en la que se presenta una fuerte correlación entre variables explicativas
(características) de un modelo. Una de las características es función lineal de una o
más de las restantes.
[Link]
Perceptrón
[Link]
Reducción de dimensionalidad
En aprendizaje automático y estadísticas 'reducción de dimensionalidad' o 'reducción
de la dimensión' es el proceso de reducción del número de variables aleatorias que
se trate.
[Link]
Regresión logística
En estadística, la regresión logística es un tipo de análisis de clasificación utilizado
para predecir el resultado de una variable categórica (una variable que puede adoptar
un número limitado de categorías) en función de las variables independientes o
predictoras.
[Link]
pág. 87
Spyder
Es un entorno de desarrollo integrado multiplataforma de código abierto para la
programación científica en lenguaje Python. Spyder se integra con una serie de
paquetes destacados en la pila científica de Python, incluidos NumPy , SciPy ,
Matplotlib , pandas , IPython , SymPy y Cython , así como otro software de código
abierto.
[Link]
Validación cruzada
Técnica utilizada para evaluar los resultados de un análisis estadístico y garantizar
que son independientes de la partición entre datos de entrenamiento y prueba.
[Link]
pág. 88
BLOQUE 2: Análisis de redes sociales
REDES SOCIALES
En los últimos años la representación de datos en formato de red ha experimentado un
importante auge por motivos bien conocidos. Las redes sociales, con sus centenares de
millones de usuarios, han adquirido una importancia de primer orden por el potencial
económico que representan, y para obtener información de estas redes es necesario saber
representarlas, obtener sus datos, almacenarlos, procesarlos y obtener conclusiones a partir
de ellos.
GRAFOS
Habitualmente se usan las palabras “red” y “grafo” como si fueran sinónimos, pero es
conveniente utilizar “red” para referirse al mundo real, es decir, a los usuarios, sus
conexiones, sus preferencias, etc. y el término “grafo” para su representación lógica en un
entorno computacional.
Un grafo es una pareja de conjuntos G(V,E) donde V está constituido por los llamados
vértices o nodos y E por las aristas o arcos que conectan dichos nodos.
pág. 89
En el grafo arriba mostrado se muestran 4 nodos y 5 arcos. Interpretando su contenido puede
decirse que el nodo v1 está relacionado con el nodo v2 y viceversa. Es decir, las relaciones
son recíprocas y, por lo tanto, bidireccionales. El número n=4 es el orden del grafo, y
representa el número de nodos que forman parte del mismo. El número m=5 es el tamaño
del grafo, y viene dado por el número de arcos o aristas presentes en el grafo. Se denomina
grado de un nodo, y se representa por deg(nodo), el número de nodos con los que está
relacionado.
El grafo representado es un grafo no dirigido, simétrico o bidireccional, y es el que modela
las redes sociales en las que las relaciones de “amistad”, por ejemplo, han de ser
bidireccionales (el usuario A sólo puede ser amigo de B si B es también amigo de A). En
estas redes un nodo es una persona u organización, y el grado de ese nodo coincide con el
número de sus amigos.
En este ejemplo el nodo v1 está relacionado con el nodo v2, pero no al revés. En este
escenario, se siguen manteniendo las definiciones de grado de un nodo y tamaño y orden
del grafo, pero es necesario introducir los conceptos de grado exterior y grado interior de un
nodo.
El grado exterior de un nodo es el número de sucesores que posee, es decir, el número de
nodos al que se puede llegar desde dicho nodo. El grado interior de un nodo es el número
de nodos desde los cuales es posible llegar a él, es decir, el número de antecesores.
Este tipo de grafo se emplea para representar aquellas redes sociales en las que las
relaciones no son bidireccionales. Un determinado usuario A puede seguir a uno o más
pág. 90
usuarios B, C…, y sin embargo estos últimos no seguir al usuario A. El grado de un nodo,
ahora, viene dado por el número de usuarios a los que sigue y el número de usuarios que le
siguen a él, con la nota importante que una interconexión mutua entre dos usuarios A y B
debe contabilizarse como dos relaciones, ya que la relación no es bidireccional.
Captura de grafos
Para poder trabajar con un grafo que represente una red social es necesario obtener los
datos de los elementos reales que componen esa red social. Los millones de usuarios que
componen la red poseen atributos como su nombre, fecha de nacimiento, preferencias, sus
publicaciones, etc. y, también, relaciones con otros usuarios y su interacción con los mismos
mediante comentarios y valoraciones de las publicaciones de estos últimos. Estas relaciones
son tan importantes como los atributos del usuario y deben ser recogidas con total fidelidad.
Por lo común la plataforma de una red social pone a disposición de los programadores
funciones y procedimientos que permiten conectarse a la red, recorrerla y obtener
información que puede ser almacenada para propósitos propios.
El formato utilizado para representar los datos obtenidos suele ser JSON, ya que se trata de
un formato de texto que permite representar información semi estructurada de forma legible.
Almacenamiento de grafos
El almacenamiento de grafos en el contexto de big data es complejo, ya que por lo común
no es posible almacenar todos los datos en la misma plataforma, sino que deben repartirse
entre multitud de máquinas, independientemente del sistema de almacenamiento concreto
que se utilice.
Almacenar los nodos (personas y organizaciones) en sí no es un gran problema, ya que se
trata en suma del equivalente a almacenar registros en un sistema de datos distribuido. El
problema surge cuando se trata de representar los arcos que representan las relaciones
entre esos usuarios y los datos que dependen de esa relación, y no estrictamente de los
nodos en sí. Por ejemplo, una valoración que el usuario A efectúa de una publicación del
usuario B no es estrictamente función de los usuarios A y B en sí mismos, sino de la relación
que los une.
Representar y mantener actualizada la representación implica que cualquier cambio en la
estructura del grafo deberá comunicarse a todos los servidores que contengan a los nodos
de forma rápida y fiable, con el fin de impedir la aparición de inconsistencias entre los datos
pág. 91
que podrían originar que la información que sobre los usuarios A y B posee la plataforma no
se presentara de igual forma a dos usuarios C y D que accedieran a diferentes servidores,
en función de su ubicación.
Matriz de adyacencia
La matriz de adyacencia es un sistema de almacenamiento de grafos que puede ser
empleado para almacenar los datos en un archivo de texto. Conceptualmente es algo
sencillo: basta con construir una matriz cuadrada en la que tanto las filas como las columnas
representan los nodos del grafo. Si los nodos no están relacionados entre sí el valor
correspondiente será 0, mientras que si existe relación el valor será 1.
Para los dos grafos mostrados anteriormente se tendrían las siguientes matrices de
adyacencia. En el caso del grafo bidireccional:
pág. 92
Lista de adyacencia
Para cada nodo del grafo, este sistema emplea una lista para almacenar los nodos con los
que está relacionado.
Procesamiento
Una vez que se dispone de los datos de la red almacenados en forma de grafo es necesario
procesarlos y obtener información de los mismos.
Una de las tareas más importantes es la relacionada con descubrir la importancia que un
nodo de la red posee en la misma. Esta situación es muy común en internet, ya que conocer
qué grupos de usuarios de una red social tienen más importancia es interesante de cara a
campañas publicitarias o de generación de opinión, por ejemplo; asimismo, dentro de la
propia web y considerando a las páginas HTML como nodos de la misma, se pueden
visualizar los enlaces entre las diferentes páginas como arcos direccionales que las
relacionan, obteniéndose así un grafo dirigido del que puede extraerse gran cantidad de
información.
Por ejemplo, los algoritmos PageRank, patentados por Google, se dedican a obtener la
importancia de una página web y la de las páginas relacionadas con ella. Una vez que se
conoce la importancia de una página web, ésta queda posicionada a la hora de responder a
una búsqueda de un usuario en Google: si dos páginas cumplen con las condiciones
establecidas en la búsqueda, se presentará primero la que posee mayor relevancia. El valor
del PageRank de una página A a la que enlazan n páginas viene dado por la expresión:
pág. 93
En la que los PR(i) indican los valores PageRank de cada una de las n páginas que enlazan
a la página A, y los valores C(i) el número de enlaces que cada una de ellas posee hacia
otras páginas, independientemente de si son o no a la página A. Cada uno de estos enlaces
se denomina voto, y se dice que la página vota por aquellas páginas hacia las que mantiene
un enlace. El valor d es un parámetro que indica la probabilidad de que un usuario navegue
por la web a través de los enlaces que se encuentra en las páginas que visita. Dicho de otra
forma, el valor 1-d expresa la probabilidad de que un usuario llegue a una página web
escribiendo la url de forma explícita en la barra del navegador o a través de uno de sus
favoritos, sin utilizar un enlace de la página visible en ese momento. El valor de d es uno de
los secretos protegidos por la patente, pero varios expertos consideran que probablemente
el valor utilizado sea 0.85.
El algoritmo PageRank, obviamente, ha de ser recursivo, ya que si dos páginas se enlazan
mutuamente cada una de ellas intervienen en el PageRank de la otra, y se considera que la
solución converge cuando el incremento entre dos cálculos produce un incremento mínimo
que ya no se considera significativo.
Otra tarea interesante es la de explorar el grafo de una red social y descubrir las
denominadas comunidades dentro de dicho grafo. Una comunidad es un conjunto de nodos
que se encuentran fuertemente relacionados entre sí, pero débilmente conectados al resto
de nodos del grafo. Detectar comunidades y analizar las características de los nodos que las
componen tiene interés tanto sociológico como comercial, ya que normalmente los nodos
(personas y organizaciones) que forman parte de una misma comunidad presentan
propiedades (características, gustos) similares.
La detección de comunidades es una tarea de agrupación en la que el número y
características de cada una de ellas es desconocido. Además, presentan la característica de
que no poseen tamaño constante al poder vincularse o desvincularse continuamente nuevos
nodos.
Para detectar comunidades se utilizan algoritmos jerárquicos, espectrales y dinámicos (ver
glosario), pero cuando se trata con grandes cantidades de datos no todos ellos son
pág. 94
adecuados por su elevado coste computacional. En este escenario pueden utilizarse
algoritmos como el paseo aleatorio (random walk) o el denominado algoritmo de propagación
de etiquetas, más sencillo que el algoritmo de propagación de creencias del que es un caso
especial.
GLOSARIO
Agrupamiento jerárquico
Método de análisis de grupos puntuales para obtener una jerarquía de grupos.
[Link]
Agrupamiento espectral
Conjunto de técnicas que emplean los valores propios de una matriz para reducir su
dimensionalidad y agrupar en un menor número de dimensiones.
[Link]
Algoritmo HITS
Algoritmo de análisis de enlaces que valora las páginas web, desarrollado por Jon
Kleinberg.
[Link]
Algoritmos PageRank
Familia de algoritmos utilizados para asignar de forma numérica la relevancia de los
documentos (o páginas web) indexados por un motor de búsqueda.
pág. 95
[Link]
Cadena de Márkov
[Link]
Camino aleatorio
Formalización matemática de la trayectoria que resulta de hacer sucesivos pasos
aleatorios.
[Link]
Centralidad
En teoría de grafos y análisis de redes la centralidad de un nodo en un grafo es una
medida que determina la importancia relativa del nodo dentro del grafo.
[Link]
Grado
En un grafo, el grado de un nodo es el número de aristas que inciden en el mismo.
[Link]
Grafo
En matemáticas y ciencias de la computación, un grafo es un conjunto de objetos
llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que
permiten representar relaciones binarias entre elementos de un conjunto.
pág. 96
[Link]
JSON
JSON (acrónimo de JavaScript Object Notation, «notación de objeto de JavaScript»)
es un formato de texto sencillo para el intercambio de datos.
[Link]
Lista de adyacencia
En teoría de grafos, una lista de adyacencia es una representación de todas las
aristas o arcos de un nodo mediante una lista.
[Link]
Matriz laplaciana
También denominada matriz de admitancia o matriz de Kirchhoff — es una
representación matricial de un grafo especialmente utilizada en el análisis espectral.
[Link]
Matriz de adyacencia
Matriz cuadrada que se emplea para representar relaciones binarias.
[Link]
pág. 97
BLOQUE 3: Aplicaciones
ANÁLISIS DE SENTIMIENTO
El análisis de sentimiento, también conocido como minería de opiniones, es una
subdisciplina del procesamiento de lenguaje natural. Está relacionado con el análisis de la
polaridad de documentos, que tiene como uno de sus objetivos la clasificación de dichos
documentos en función de la connotación (positiva, negativa o neutra) del lenguaje empleado
en los mismos.
En la era de las redes sociales la opinión de la gente, sus gustos, sus críticas, sus
recomendaciones y, en general, todo lo relacionado con sus opiniones tiene importancia
social y económica. El análisis de sentimiento es la tecnología que permite acceder a esa
información y extraer conclusiones prácticas.
Obtención de datos
Los datos que dan lugar a la tarea de análisis de sentimiento pueden ser obtenidos de
múltiples orígenes, tanto de forma no estructurada como estructurada. Pueden proceder de
redes sociales, de foros, de cadenas de correos, de formularios de sugerencias de clientes
o de evaluación de servicios por parte de los mismos. La lista es variada. En ocasiones
también pueden obtenerse en formato estructurado, ya recopilados por diferentes
organizaciones. Un ejemplo de esto último es la base de datos de películas en internet, más
conocida como IMDb.
Tras recopilar las fuentes de datos apropiadas y obtener los correspondientes datos lo
habitual es procesarlos para darles un formato común y fusionarlos/dividirlos en archivos, en
función del tamaño total y del sistema de almacenamiento empleado.
pág. 98
marcadores HTML, etc. En ocasiones pueden eliminarse signos de puntuación como “,”, “.”,
“;”, “:”, aunque estos elementos son susceptibles, según se utilicen de transmitir sentimiento.
pág. 99
texto determinado no aporta información sobre el tema del texto o de su polaridad emocional.
Principalmente son, en español, las preposiciones, conjunciones, determinantes, algunos
adjetivos y los verbos haber, tener, ser y estar.
Tras este filtrado, las palabras se aíslan por sí mismas o mediante su raíz. Según este último
criterio, las palabras “hábito”, “habitual” y “habitualmente” podrían ser representadas
mediante la palabra “hábito”, que contiene el significado que se propaga al adjetivo y al
adverbio. Los textos preparados para ser procesados poseen, al final, sólo los componentes
léxicos considerados relevantes. Por ejemplo, la frase:
Quedaría reducida a:
No hace falta demasiado análisis para aventurar la posible puntuación vinculada a este
comentario.
Bolsa de palabras
Para seguir avanzando en el proceso de análisis es necesario identificar numéricamente
cada componente léxico, de manera que puedan aplicarse a los documentos que los
contienen algoritmos de aprendizaje automático. El principal instrumento para ello es la bolsa
de palabras.
La bolsa de palabras de un grupo documentos -en nuestro caso de los textos de los 200.000
comentarios almacenados y puntuados- es el conjunto de todas los componentes léxicos
diferentes utilizados en esos documentos, a los que se ha asignado un índice numérico
diferente que lo identifica unívocamente dentro del conjunto.
pág. 100
La bolsa de palabras estaría compuesta por las seis unidades léxicas: conforme, bien,
satisfecho, solucionado, insatisfecho y problema. Asignando valores a cada una de ellas se
obtendría:
1 2 3 4 5 6
conforme bien satisfecho solucionado insatisfecho problema
Y a partir de esos valores los documentos pueden representarse como vectores de seis
componentes:
1 1 1 0 0 0
1 2 0 1 0 0
“insatisfecho problema”:
0 0 0 0 1 2
Vectores de características
Los vectores arriba mostrados se denominan vectores de características, y sirven para
representar numéricamente los contenidos de los documentos procesados. Obsérvese que
cada vector no sólo indica qué componentes léxicos se usan en el documento, sino también
el número de veces que aparecen en el mismo.
pág. 101
En un caso real estos vectores están formados por miles de elementos, ya que la longitud
del vector es el número de elementos léxicos diferentes detectados. Además, dado que un
documento en concreto utiliza, generalmente, un número de componentes léxicos mucho
menor que el total, lo habitual es que el vector esté constituido prácticamente por valores 0.
Este hecho permite, a los algoritmos de aprendizaje automático, optimizar el uso de memoria
sustituyendo largas cadenas de valores 0 por un resumen comprimido de las mismas.
tf-idf
Cuando se analizan datos textuales puede ocurrir que aparezcan una o más
palabras/componentes léxicos en la gran mayoría de documentos, independientemente de
su clase. En definitiva, estos componentes léxicos acaban por comportarse como si fueran
palabras vacías, aún sin serlo: están, pero no caracterizan el documento en el que figuran.
En el caso que estamos tratando, dado su contexto, la palabra “motivo” es susceptible de
aparecer en una gran cantidad de comentarios, tanto positivos como negativos, lo que hace
de ella un elemento poco relevante.
La frecuencia de término-frecuencia inversa de documento es una técnica que puede
utilizarse para atenuar el peso de los términos que ocurren con mucha frecuencia en la
colección de documentos e incrementa el peso de los términos que ocurren pocas veces. La
fórmula que expresa este concepto es la siguiente:
pág. 102
Donde N es el número total de documentos y DF(t) el número de documentos en los que
aparece el término t.
Se aprecia de inmediato que el valor idf de los términos que aparecen en más ocasiones
adquieren un valor idf menor que el resto, es decir, se considerarán menos significativos.
Este es el objetivo de esta técnica.
pág. 103
El cálculo del valor final tf-idf los convertiría en:
n-grama
A lo largo de la exposición anterior se ha utilizado tanto el término palabra como componente
léxico a la hora de describir los diferentes pasos que se han ido dando. Esto es así porque,
si bien lo normal es emplear la palabra como componente léxico básico de desglose de los
documentos, es posible utilizar agrupaciones de n palabras o n-gramas para efectuar el
estudio.
Utilizar 1-gramas es el equivalente a emplear las palabras aisladas, mientras que utilizar 2-
gramas tendría como resultado, para la frase “motivo queja comunicar deficiente resolución
problema”, el siguiente conjunto de 2-gramas: “motivo queja”, “queja comunicar”, “comunicar
deficiente”, “deficiente resolución”.
El empleo de un n-grama u otro depende del problema estudiado. Por ejemplo, n-gramas de
tamaño 3 y 4 dan un buen resultado en el filtrado de spam en correos electrónicos. Puede
ser una buena opción modificar el tamaño de los n-gramas utilizados en un proceso de
aprendizaje automático de forma que pueda conocerse la mejor solución.
pág. 104
Proceso de aprendizaje
Cuando ya se han obtenido los vectores de características de los documentos se está en
condiciones de aplicar al conjunto de textos un proceso de aprendizaje automático
supervisado. Cada comentario posee su valoración, por lo que el conjunto de vectores de
características y etiquetas de clase (positivo, negativo) permite construir las muestras
completas, que pueden ser divididas en un conjunto de entrenamiento y un conjunto de
prueba.
En este escenario, obtener un modelo válido que permita prever la etiqueta destino
(positivo/negativo) de un texto escrito por los usuarios del sistema es equivalente a afirmar
que se está en condiciones de evaluar el sentimiento de dichos usuarios.
GLOSARIO
Análisis de sentimiento
Análisis de sentimiento (también conocido como minería de opinión) se refiere al uso
del procesamiento del lenguaje natural, análisis de texto y lingüística computacional
para identificar y extraer información subjetiva de los recursos.
[Link]
pág. 105
[Link]
Palabra vacía
Nombre que reciben las palabras sin significado como artículos, pronombres,
preposiciones, etc. que son filtradas antes o después del procesamiento de datos en
lenguaje natural.
[Link]
pág. 106
tf-idf - Frecuencia de término-frecuencia inversa de documento
La frecuencia de ocurrencia del término en una colección de documentos es una
medida numérica que expresa cuán relevante es una palabra para un documento en
una colección.
[Link]
pág. 107
EJERCICIOS DE LOS DIFERENTES BLOQUES
BLOQUE 0
Ejercicios de desarrollo
1. Describe brevemente los tipos de datos que manejas en tu día a día en función de
su tipo: ¿son estructurados? ¿no estructurados?
2. Estima el tamaño de dichos datos.
3. ¿Qué sistemas utilizas para su almacenamiento? ¿Basta con dispositivos locales
como hojas de cálculo? ¿Almacenas información en carpetas?
Test
Las tres V
Volatilidad, velocidad, Velocidad, Volumen, Volumen, Veracidad,
asociadas a variedad. Volatilidad. Variedad.
biga data son
Hadoop es un ecosistema
Hadoop implementa el
de código abierto creado
Una frase no paradigma Map Reduce en Hadoop es imprescindible
para procesar y
es correcta almacenar grandes
muchos de los productos que para realizar Data Science.
lo integran.
cantidades de datos.
pág. 108
Cuando una Debe recopilar todos los
Debe procurar centrarse Debe centrarse en aquellos
organización datos disponibles,
en aquellos que tengan que no hayan sido tenidos
quiere extraer significado para los
independientemente de su
en cuenta hasta el
información objetivos de la empresa.
formato, origen y fecha de
momento.
de sus datos creación.
El científico de datos no
necesita conocimientos
El científico de datos debe
Una frase no El científico de datos matemáticos, ya que las
poseer sólidos conocimientos
es correcta genera conocimiento.
matemáticos.
librerías ofrecidas por los
lenguajes de programación
obvian esa necesidad.
Las Pueden ser ampliadas Pueden ser ampliadas para Pueden equipararse a
para procesar big data, procesar big data, a costa de plataformas como Hadoop
plataformas apoyándose en hardware grandes inversiones en si se utilizan lenguajes de
de n-capas ... de bajo coste. hardware y software. programación apropiados.
Un lenguaje de propósito
Una evolución de R,
general, dotado de Un lenguaje funcional
pensada para profesionales
Python es extensiones que lo expresamente creado para la
no expertos en
capacitan para la ciencia ciencia de datos.
programación.
de datos.
pág. 109
BLOQUE 1
Ejercicios de desarrollo
1. Los datos que manejas en tu día a día, ¿los conoces hasta el punto de poder
agruparlos por características? ¿eres capaz de enumerar los grupos en los que
consideras que pueden ser clasificados?
2. ¿Dispones de información suficiente para describir proyectos, proveedores u ofertas
en términos de aprendizaje automático? ¿Puedes, por ejemplo, prever el éxito de un
proyecto en función de proyectos similares y de sus características? Si no es así,
¿qué características consideras necesarias y cómo las obtendrías?
Test
pág. 110
características de las suficiente precisión, cuando las muestras son
muestras, aportando incluso cuando no existe linealmente separables.
información a todos los separabilidad lineal de
roles de la organización. ningún tipo.
Permiten conocer con
Se construyen a partir de
Son herramientas óptimas facilidad cuáles son las
Los bosques las características más
para efectuar predicciones características más
aleatorios en tiempo real. significativas de un grupo
significativas de un grupo
de datos.
de datos.
Se descartan las Se dota al modelo de
Mediante la características no nuevas características, Se soluciona el problema
reducción de relevantes en un proceso que se expresan en de underfitting o ajuste
dimensionalidad de agrupación o función de las defectuoso.
clasificación. características iniciales.
A la hora de La media, la moda o la
imputar valores mediana de la Siempre es mejor eliminar
La media, la moda o la
ausentes de una característica, a ser del estudio las muestras
mediana de la
característica característica.
posible calculadas en con valores de
pueden función de la etiqueta características ausentes.
utilizarse destino de las muestras.
Utiliza parte de los datos
Utiliza un 50% de los
disponibles para crear el
Utiliza todos los datos datos como datos de
Un proceso de modelo y parte para
disponibles para crear el entrenamiento, es decir,
aprendizaje modelo, que se testea
verificar su capacidad
para crear el modelo, y un
supervisado después con datos nuevos.
predictiva a partir de la
50% de los datos como
matriz de confusión
datos de prueba.
obtenida.
Los tipos de
error en un
proceso de Sesgo, varianza y error Sesgo, varianza y error
Sesgo y varianza.
aprendizaje cuadrático medio. irreductible.
supervisado
son
Árboles de decisión,
Algoritmos con Regresión logística y
regresión lineal y regresión Árboles de decisión.
bajo sesgo son logística.
lineal.
La regresión logística
La regresión logística, al
permite conocer la La regresión logística es
Una frase no es igual que la regresión
probabilidad de que una un algoritmo de baja
correcta muestra presente cierto
lineal, son modelos
varianza.
clasificatorios continuos.
valor destino.
La
Se emplea para evitar el Se emplea para evitar el No sirve para identificar
regularización ajuste defectuoso. ajuste excesivo. características relevantes.
de un algoritmo
Es un valor atípico cuyo
Es un valor que se presenta
efecto sobre el proceso Son valores atípicos y
en una o en pocas
de aprendizaje puede escasos, que no influyen
Un outlier muestras, y cuya magnitud
evitarse mediante la en un proceso de
difiere mucho de la del resto
normalización de aprendizaje automático.
de datos.
características.
El escalado Se apoya en el valor Se apoya en los valores
Se apoya en el valor medio medio de la característica máximo y mínimo
mediante la de la característica. y en la desviación típica presentados por la
normalización de sus valores. característica.
pág. 111
BLOQUE 2
Ejercicios de desarrollo
Orden y tamaño.
Grado, antecesores y sucesores de cada nodo, si aplica.
Matriz de adyacencia.
pág. 112
Test
BLOQUE 3
Ejercicios de desarrollo
pág. 113
2. Obtener los valores idf para los siguientes términos:
Test
pág. 114
3. Con los valores obtenidos, actualizar la siguiente tabla:
pág. 115