lunes, 2 de junio de 2014

Matlab - Optimización, procesado paralelo y distribuido --> machine learning y procesado Big Data

Matlab es un lenguaje de alto nivel y un entorno interactivo para el cálculo numérico, la visualización y la programación. Mediante MATLAB, es posible analizar datos, desarrollar algoritmos y crear modelos o aplicaciones. Por lo tanto, constituye una herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M).

Optimización en Matlab

Matlab incorpora una libreria llamada  "Optimization Toolbox" que incorpora algoritmos para optimización, tanto para problemas estandar como para problemas a gran escala. Proporciona algoritmos para resolver problemas continuos o discretos, tanto con  restricciones o sin ellas:
"Linear programming", "quadratic programming", "binary integer programming", "nonlinear optimization", "nonlinear least squares", "systems of nonlinear equations" y "multiobjective optimization".  
En muchos problemas nos encontramos que los algoritmos de optimización pueden conducir a mínimos o máximos locales. Matlab incorpora una libreria llamada "Global Optimization Toolbox" que incorpora  técnicas y algoritmos para la búsqueda y obtención de soluciones globales, evitando mínimos/máximos locales:
"Global search", "multistart", "pattern search", "genetic algorithm" y "simulated annealing solvers".

Procesado paralelo y distribuido

Matlab incorpora librerias para facilitar al usuario la programación de algoritmos que sean capaces de correr en paralelo utilizando procesadores multinúcleo, GPUs o clusters de ordenadores:
Muchas de las funciones de optimización incorporadas pueden configurarse para hacer uso de estas herramientas de procesado paralelo y distribuido, tanto para acelerar el proceso, como para la resolución de problemas a gran escala (Big Data).
Recomiendo darle un vistazo a estos dos trabajos donde se utilizan estas librerias en problemas de optimización y de procesado de datos:
"Programación Matlab en paralelo sobre clúster computacional",
"Parallel Optimization in Matlab"

Minería de datos y machine learning

Matlab puede ser usado para realizar tareas de minería de datos y machine learning, incluyendo una gran cantidad de algoritmos implementados en diferentes Toolboxes. Por ejemplo, incluye algoritmos de clasificación (support vector machine (SVM), boosted and bagged decision trees, k-nearest neighbor, Naïve Bayes, discriminant analysis, neural networks...), de regresión (linear model, nonlinear model, regularization, stepwise regression, boosted and bagged decision trees, neural networks, adaptive neuro-fuzzy learning,...) y de clustering (k-means, hierarchical clustering, Gaussian mixture models, hidden Markov models, self-organizing maps, fuzzy c-means clustering, subtractive clustering...).

Big data en Matlab

Matlab incorpora una serie de funcionalidades y herramientas que ayudan a realizar labores de análisis y procesado de datos en problemas Big Data, por ejemplo:
  • Disk Variables. The matfile function lets you access MATLAB variables directly from MAT-files on disk, using MATLAB indexing commands, without loading the full variables into memory. This allows you to do block processing on big data sets that are otherwise too large to fit in memory.
  • Intrinsic Multicore Math. Many of the built-in mathematical functions in MATLAB, such as fft, inv, and eig, are multithreaded. By running in parallel, these functions take full advantage of the multiple cores of your computer, providing high-performance computation of big data sets.
  • GPU Computing. If you’re working with GPUs, GPU-optimized mathematical functions in Parallel Computing Toolbox provide even higher performance for big data sets.
  • Parallel Computing. Parallel Computing Toolbox provides a parallel for-loop that runs your MATLAB code and algorithms in parallel on multicore computers. 
  • Distributed Computing: you can execute in parallel on clusters of machines that can scale up to thousands of computers.
  • Cloud Computing. Cloud computing lets you process big data without having to buy or maintain your own cluster or data center.
  • Distributed Arrays. Using Parallel Computing Toolbox and MATLAB Distributed Computing Server, you can work with matrices and multidimensional arrays that are distributed across the memory of a cluster of computers.
  • Streaming Algorithms.  you can perform stream processing on incoming streams of data that are too large or too fast to hold in memory. In addition, you can generate embedded C/C++ code from your MATLAB algorithms using MATLAB Coder, and run the resulting code on high-performance real-time systems.

No hay comentarios:

Publicar un comentario