Upload
john-lenin-ortiz-gamba
View
212
Download
0
Embed Size (px)
Citation preview
8/17/2019 Monografia John Ortiz
1/10
Universidad Simón BolívarMaestría en Ingeniería de SistemasPS-8190: Fundamentos Teóricos de Sistemas
Profesor: Jorge MoleroAlumno: John Lenin Ortiz G Carnet 15-90190
Monografía
Título: Técnicas y lenguajes de programación usados en Aprendizaje de Maquinas (Machine
Learning) y sus aplicaciones.
Temas a tratar : Machine Learning, lenguajes de programación, algoritmos.
Reseña: En el presente trabajo se realiza un resumen de los lenguajes de programación usadosen el aprendizaje de máquinas o Machine Learning (ML), mostrándose las ventajas que tiene cada
lenguaje y sus diferentes aplicaciones. Primero se describe que en que consiste el aprendizaje de
máquinas y se muestran sus características. Luego se muestran los lenguajes de programación que
se usan para diferentes aplicaciones de ML. Finalmente, se muestran una serie de conclusiones
respecto al aprendizaje automático.
Introducción :
¿Qué es el aprendizaje de Máquinas?
El aprendizaje de máquinas, o Machine Learning (ML) en inglés, es una de las áreas más
antiguas de la inteligencia artificial y trata el estudio de métodos computacionales para el
descubrimiento de nueva información y para la administración de información existente. Los
métodos de ML se han aplicado en varios dominios. Sin embargo, en los últimos años, debido a
varios avances tecnológicos y esfuerzos en investigación (por ejemplo, la culminación del
Proyecto Genoma Humano, y la evolución de la WEB) hay disponible nueva información y
consecuentemente han aparecido nuevos dominios donde se puede aplicar el aprendizaje de
máquinas (1).
Machine learning consiste en algoritmos o modelos que aprenden patrones en información y
luego predice patrones similares en nueva data. Machine learning significa tomar decisiones en
tiempo real sin intervención humana.
8/17/2019 Monografia John Ortiz
2/10
Aprendizaje automático y sistemas cognitivos.
Un sistema cognitivo trata de entender el concepto de su medio al usar una interpretación
simplificada de su entorno llamada Modelo . El proceso de construcción de tal modelo es llamadoAprendizaje Inductivo. Además, un sistema cognitivo tiene la capacidad de organizar su
experiencia al construir nuevas estructuras llamadas patrones . La construcción de modelos y
patrones por un sistema cognitivo usando un arreglo de datos es llamado Machine Learning.
Patrón Vs Modelo
Un modelo describe el arreglo completo de información y es también caracterizado como
Modelo Predictivo puesto que puede ser usado para predecir la salida de una función (Función
Objetivo) para unos valores dados en el dominio de la función. Además, un modelo provee
información cualitativa sobre la data. En contraste, un patrón solo describe una porción de la data
y es caracterizado como Patrón Informativo.
Métodos usados en ML
Dos de los métodos más adoptados en ML son el aprendizaje supervisado y el aprendizaje no
supervisado. La mayor parte del ML usado (alrededor del 70%) es aprendizaje supervisado,
mientras que el aprendizaje no supervisado es usado de un 10 a un 20%. El aprendizaje semi-
supervisado y el aprendizaje por refuerzo o Reinforcement Learning (RL) son otras dos tecnologías
que también se usan.
Aprendizaje Supervisado .
Esta clase de aprendizaje también se conoce como Aprendizaje por ejemplos. En el
aprendizaje supervisado el sistema cognitivo tiene que aprender un concepto o una función, la cual
es de hecho la descripción de un modelo. En particular, el sistema está dotado con un conjunto de
ejemplos. La salida de la función objetivo para cada uno de esos ejemplos también está disponible.El sistema tiene que descubrir la descripción del modelo basado en la salida de la función. Para
propósitos de evaluación, se construye un modelo usando un subconjunto de la data (conjunto de
entrenamiento o training set), mientras que la data restante se usa para evaluar el modelo construido
(conjunto de prueba o test set). Se usa comúnmente cuando la data histórica puede predecir futuros
8/17/2019 Monografia John Ortiz
3/10
eventos. Por ejemplo, puede anticipar cuando las transacciones con tarjetas de crédito pudieran ser
fraudulentas o cual cliente de una compañía de seguros pudiera realizar una demanda o reclamo.
En el aprendizaje supervisado se reconocen dos tareas de aprendizaje, llamadas clasificacióny regresión. La clasificación se trata de la construcción de modelos predictivos para funciones con
rango discreto, mientras que la regresión se trata de la construcción de modelos predictivos para
funciones con rango continuo.
Métodos de aprendizaje supervisado más comunes :
Aprendizaje de conceptos : Se le proveen ejemplos al sistema cognitivo que pertenecen
(ejemplos positivos) o no pertenecen (ejemplos negativos) en un concepto (clase). Luego, se llama
al sistema para producir una descripción generalizada del concepto para decidir en futuros casos
basados en esta descripción.
Clasificación o árbol de decisión de inducción (Decision Tree Induction). Los métodos de
Clasificación son muy populares y se utilizan para la aproximación de funciones objetivo discretas.
Estos métodos construyen estructuras de árbol que representan gráficamente los datos de
entrenamiento. La principal ventaja de los árboles de decisión es que se interpretan fácilmente.
Los árboles de decisión también pueden ser representados como reglas de la forma "si-entonces".
Aprendizaje bayesiano . Este tipo de aprendizaje se basa en el teorema de Bayes e incluye
métodos que utilizan las probabilidades y estadistica. Si se tiene conocimiento previo, éste puede
ser incorporado en forma de probabilidades iniciales.
Regresión lineal . La regresión lineal es un método para la descripción de una función objetivo
con una combinación lineal de una serie de otras variables. El rango de la función objetivo debe
ser un intervalo continuo.
Redes neuronales: Genéricamente, son métodos de proceso numérico en paralelo, en el quelas variables interactúan mediante transformaciones lineales o no lineales, hasta obtener unas
salidas. Estas salidas se contrastan con los que tenían que haber salido, basándose en unos datos
de prueba, dando lugar a un proceso de retroalimentación mediante el cual la red se reconfigura,
hasta obtener un modelo adecuado.
8/17/2019 Monografia John Ortiz
4/10
Algoritmos genéticos: Son métodos numéricos de optimización, en los que aquella variable o
variables que se pretenden optimizar junto con las variables de estudio constituyen un segmento
de información. Aquellas configuraciones de las variables de análisis que obtengan mejores
valores para la variable de respuesta, corresponderán a segmentos con mayor capacidad
reproductiva. A través de la reproducción, los mejores segmentos perduran y su proporción crece
de generación en generación. Se puede además introducir elementos aleatorios para la
modificación de las variables (mutaciones). Al cabo de cierto número de iteraciones, la población
estará constituida por buenas soluciones al problema de optimización, pues las malas soluciones
han ido descartándose, iteración tras iteración.
Aprendizaje No Supervisado
Este tipo de aprendizaje también se conoce como el aprendizaje a partir de la observación. En
el aprendizaje no supervisado el sistema tiene que descubrir cualquier patrón (es decir,
asociaciones o clústeres) basadas únicamente en las propiedades comunes del ejemplo sin saber
cuántos o incluso si hay algún patrón. Los principales métodos de aprendizaje de máquina no
supervisado son los siguientes:
Minería de secuencias. la minería de secuencias se refiere al aprendizaje a partir de datos
ordenados. El orden es generalmente temporal. Tiene también muchas contribuciones del área deinvestigación de bases de datos y se ha propuesto como una extensión de minería de reglas de
asociación.
Clustering o agrupación . Clustering es el procedimiento de descubrimiento de grupos de
ejemplos, de manera que los ejemplos que pertenecen al mismo grupo sean tan similares como sea
posible, mientras que los ejemplos que pertenecen a grupos separados son tan diferentes como sea
posible.
Aplicaciones
Muchas de las actividades cotidianas involucran algoritmos de aprendizaje automático,
incluyendo:
- Detección de fraudes
8/17/2019 Monografia John Ortiz
5/10
- Resultados en motores de búsqueda
- Detección de intrusos en redes
- Publicidad en tiempo real en sitios web y dispositivos móviles
- Reconocimiento de patrones e imágenes: Un uso popular de ML se basa en el
reconocimiento de patrones, ya que se puede usar para distinguir y reconocer muchos tipos
de imágenes, por ejemplo, para el reconocimiento de letra manuscrita.
- Ofertas basadas en consumo
- Filtro de spam en emails
Así mismo, las grandes compañías de informática actualmente tienen proyectos y productos
que involucran el aprendizaje automático, y en general la inteligencia artificial, como se muestra
en la siguiente figura:
Figura 1: Productos y proyectos en Inteligencia Artificial de lagunas compañías.
Lenguajes de programación usados en ML
En general, el lenguaje de programación usado para realizar un proyecto en base al aprendizaje
automático debe considerar los requerimientos y necesidades de cada proyecto. KDnuggets (2),
quien realiza constantemente encuestas sobre lenguajes de programación, recientemente realizó
8/17/2019 Monografia John Ortiz
6/10
una encuesta sobre el tema, encontrándose que los lenguajes de programación R y Python son más
usados para análisis de grandes volúmenes de datos. Los resultados de dicha encuesta se muestran
en la figura 2:
Figura 2: Plataformas más populares para el uso de ML, tomado de (2)
Por otro lado, Kaggle, quien ofrece competiciones en ML, ha censado cuales son las
herramientas y lenguajes de programación usados por los participantes en sus competencias. El
resultado sugiere un abundante uso de R, mientras que también se muestran amplios usos de
Matlab y SAS con una representación menos fuerte de Python.
8/17/2019 Monografia John Ortiz
7/10
Figura 3: Herramientas más populares usadas en Kaggle, sitio web de competencias de ML
Teniendo en cuenta la anterior información, se realizó una búsqueda de los principales
lenguajes de programación mencionados en estos estudios, obteniendo la siguiente síntesis para
cada uno:
R
R es un espacio de trabajo para análisis estadístico, y por extensión, para ML. Es la plataforma
a usar cuando se quiere explorar y entender una información dada usando métodos estadísticos y
gráficos. Contiene una cantidad enorme de algoritmos de ML e implementaciones avanzadas
escritas por los desarrolladores de los algoritmos. El lenguaje R es ampliamente usado por
estadistas y data miners para el desarrollo de software estadístico y análisis de información. R es
un proyecto de GNU. El código fuente para el entorno de software R está escrito en C y Fortran,
y es de dominio público.
En R se pueden implementar una amplia variedad de técnicas gráficas y estadísticas,
incluyendo modelado lineal y no lineal, pruebas clásicas estadísticas, análisis de series temporales,
clasificación, clustering, entre otros. R se puede extender fácilmente mediante funciones y
8/17/2019 Monografia John Ortiz
8/10
extensiones. Se pueden escribir códigos en C, C++, Java, .NET o Python para manipular los
objetos de R directamente.
Python
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una
sintaxis que favorezca un código legible. Python es un lenguaje de programación multiparadigma,
es decir; soporta hacer programación orientada a objetos y programación imperativa. Su creador
fue Guido Van Rossum y debido a que es de código libre la comunidad de desarrolladores ha
creado librerías o módulos para hacer casi cualquier cosa.
En general la gente que hace análisis de datos o estadística conoce bien R Project, SAS o
SPSS. Pero pocos se han acercado a Python y sus librerías para análisis de datos. Las ventajas
pueden ser cuestionables con respecto a software que específicamente fueron diseñados con una
perspectiva estadística, pero sin duda la potencia y calidad de librerías es muy buena.
Principalmente para hacer uso de algoritmos de Machine Learning las librerías en Python son
mejores que las de R, sobre todo las técnicas de Deep Learning (3).
Quizás el mejor candidato para comparar el uso de Python en el análisis de datos es R, por ser
software libre y ser actualmente de alta demanda y atracción en la ciencia de datos. Sin embargo,
Python siendo realmente un lenguaje de programación, no se limita a ser usado solamente para
analizar datos, sino bien puede ser parte de un sistema o para desarrollar un proyecto completo. ya
que soporta orientación a objetos, programación imperativa y, en menor medida, programación
funcional.
Python fue diseñado para ser leído con facilidad. Una de sus características es el uso de
palabras donde otros lenguajes utilizarían símbolos.
Matlab
MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es una
herramienta de software matemático 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. Entre sus prestaciones básicas se hallan: la manipulación de
8/17/2019 Monografia John Ortiz
9/10
matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de
interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros
dispositivos hardware.
OpenCV
OpenCV es una biblioteca libre de visión artificial originalmente desarrollada por Intel,
multiplataforma, existiendo versiones para GNU/Linux, Mac OS X y Windows. Contiene más de
500 funciones que abarcan una gran gama de áreas en el proceso de visión, como reconocimiento
de objetos (reconocimiento facial), calibración de cámaras, visión estérea y visión robótica. El
proyecto pretende proporcionar un entorno de desarrollo fácil de utilizar y altamente eficiente.
Esto se ha logrado realizando su programación en código C y C++ optimizados, aprovechandoademás las capacidades que proveen los procesadores multinúcleo.
SAS
El Sistema SAS ( Statistical Analisys System ) es un paquete de software que abarca múltiples
áreas de trabajo del campo científico, centrándose especialmente en todas las ramas de la
Estadística aplicada. Dado que esta disciplina es prácticamente universal en la actualidad, la
utilidad de este software puede extenderse a la mayoría de las ciencias experimentales y sociales.
El sistema SAS consta de una serie de módulos, cada uno de ellos orientado a una tarea
específica. El lenguaje SAS opera principalmente sobre tablas de datos: puede leerlas,
transformarlas, combinarlas, resumirlas, crear informes a partir de ellas, etc.
Conclusiones
En resumen, el objetivo del machine learning (ML) es enseñar a las máquinas el llevar a cabo
ciertas tareas enseñándoles algunos ejemplos de cómo o cómo no llevar a cabo la tarea.
El aprendizaje de máquinas es un método de análisis de data que automatiza la construcción
de modelos analíticos. ML le permite a las computadoras encontrar patrones ocultos, mediante el
uso de algoritmos que iterativamente aprenden de la data, sin estar programados explícitamente de
donde buscar.
8/17/2019 Monografia John Ortiz
10/10
El aspecto iterativo de ML es importante, dado que, a medida que los modelos se exponen a
nueva data, son capaces de adaptarse independientemente.
Debido a las nuevas tecnologías de computación, ML hoy no es como el ML del pasado. Asícomo muchos algoritmos de ML han estado presentes desde hace mucho, la habilidad de aplicar
automáticamente cálculos matemáticos complejos a grandes cantidades de información de manera
repetida y cada vez más rápida, es un desarrollo reciente.
Un factor que ha impulsado el uso de ML es la construcción de modelos automáticos en tiempo
real. Los humanos pueden crear típicamente uno o dos buenos modelos en una semana, mientras
que el aprendizaje automático puede crear miles de modelos en el mismo tiempo.
Referencias
1. Tzanis, George, y otros. Modern Applications of Machine Learning . University of
Thessaloniki, GR-54124 Thessaloniki, Greece : s.n.
2. KDNuggets™. Languages for analytics/data mining. [En línea] 2013. [Citado el: 25 de
Marzo de 2016.] http://www.kdnuggets.com/polls/2013/languages-analytics-data-mining-data-
science.html.
3. Gorreta, Danielle. Algo sobre Python, análisis de datos y machine learning. [En línea]
[Citado el: 27 de Marzo de 2016.] https://dlegorreta.wordpress.com/2015/05/13/algo-sobre-
python-analisis-de-datos-y-machine-learning/.