Big Data con MATLAB

Cómo trabajar con conjuntos de datos voluminosos y rápidos

Big Data hace referencia al drástico aumento en cuanto a cantidad y velocidad en la creación de datos disponibles para el análisis.

Uno de los motivos principales de esta tendencia es el creciente nivel de digitalización de la información. El número y los tipos de dispositivos de adquisición y otros mecanismos de generación de datos aumentan sin cesar.

Las fuentes de Big Data incluyen streaming de datos procedentes de sensores de instrumentación, imágenes médicas y generadas por satélite, vídeos de cámaras de seguridad, así como datos derivados de los mercados financieros y las operaciones de comercios. Los conjuntos de Big Data de estas fuentes pueden contener gigabytes o terabytes de datos, y pueden aumentar varios megabytes o gigabytes a diario.

Big Data supone una oportunidad para los científicos y los analistas de datos de obtener un conocimiento más profundo y tomar decisiones más informadas, aunque también presenta una serie de retos. Es posible que los conjuntos de Big Data no quepan en la memoria disponible, tarden demasiado en procesarse o se generen demasiado rápido para almacenarlos. Los algoritmos estándar no suelen estar diseñados para procesar conjuntos de Big Data en un tiempo o una cantidad de memoria razonables. No existe un enfoque único con relación a Big Data. Por tanto, MATLAB proporciona una serie de herramientas para hacer frente a estos retos.

Usos de Big Data en MATLAB

  1. Informática de 64 bits. La versión de 64 bits de MATLAB aumenta de forma drástica la cantidad de datos que se pueden albergar en la memoria (normalmente, hasta 2000 veces más que cualquier programa de 32 bits). Mientras que los programas de 32 bits están limitados a un máximo de 2 GB de memoria, la versión de 64 bits de MATLAB permite hacer uso de toda la memoria física del SO. En el caso de Windows 8, eso significa 500 GB para las versiones de estación de trabajo y 4 TB para Windows Server.
  2. Variables de memoria mapeadas. La función memmapfile de MATLAB permite mapear un archivo o una parte de un archivo a una variable de MATLAB en memoria. Esto ofrece la posibilidad de acceder en el disco de forma eficiente a conjuntos de Big Data que son demasiado grandes para ajustarse a la memoria o que tardan demasiado tiempo en cargarse.
  3. Variables de disco. La función matfile permite acceder a variables de MATLAB directamente desde archivos MAT almacenados en el disco a través de comandos de indexación de MATLAB y sin cargar las variables completas en la memoria. Esto hace posible llevar a cabo el procesamiento por bloques en conjuntos de Big Data que, de otra manera, resultan demasiado grandes para almacenarlos en la memoria.
  4. Matemáticas multinúcleo intrínsecas. Muchas de las funciones matemáticas incorporadas en MATLAB, tales como fft, inv y eig, son multithread. Gracias a la ejecución paralela, estas funciones sacan todo el partido posible de los diversos núcleos del ordenador, lo cual permite el cálculo de alto rendimiento de conjuntos de Big Data.
  5. Cálculo GPU. Si trabaja con GPUs, las funciones matemáticas optimizadas para GPUs de Parallel Computing Toolbox proporcionan un rendimiento aún mayor para los conjuntos de Big Data.
  6. Cálculo paralelo. Parallel Computing Toolbox ofrece un bucle de for paralelo que ejecuta el código y los algoritmos de MATLAB en paralelo en ordenadores multinúcleo. Si se emplea MATLAB Distributed Computing Server, es posible llevar a cabo la ejecución en paralelo en clusters de equipos que pueden sumar miles de ordenadores.
  7. Computación en la nube. Es posible realizar cálculos paralelos en MATLAB mediante MATLAB Distributed Computing Server en Elastic Computing Cloud (EC2) de Amazon para el procesamiento paralelo bajo demanda en cientos o miles de ordenadores. La computación en la nube permite procesar Big Data sin necesidad de comprar o mantener un cluster o centro de datos propios.
  8. Arrays distribuidos. Parallel Computing Toolbox y MATLAB Distributed Computing Server permiten trabajar con matrices y arrays multidimensionales distribuidos en la memoria de un cluster de ordenadores. Mediante este enfoque, es posible almacenar y realizar cálculos en conjuntos de Big Data que son demasiado grandes como para que la memoria de un único ordenador sea suficiente.
  9. Algoritmos de streaming. A través del uso de objetos de sistema, se puede realizar el procesamiento de streaming de datos entrantes con un tamaño o una velocidad demasiado elevados para albergarlos en la memoria. Además, es posible generar código C/C++ embebido a partir de los algoritmos de MATLAB mediante MATLAB Coder y ejecutar el código resultante en sistemas en tiempo real de alto rendimiento.
  10. Procesamiento de imágenes por bloques. La función blockproc de Image Processing Toolbox permite trabajar con imágenes realmente grandes gracias a su eficiente procesamiento bloque por bloque. Los cálculos se ejecutan en paralelo en varios núcleos y GPUs cuando se emplean con Parallel Computing Toolbox.
  11. Aprendizaje automático. El aprendizaje automático resulta útil para extraer información y desarrollar modelos predictivos con conjuntos de Big Data. Existe una amplia variedad de algoritmos de aprendizaje automático, incluidos árboles de decisión boosted y bagged, clustering jerárquicos y de K medias, búsqueda KNN, mezclas gaussianas, el algoritmo de expectation maximization, modelos ocultos de Markov y redes neuronales, todos ellos disponibles en Statistics and Machine Learning Toolbox y Neural Network Toolbox.