Monografia John Ortiz

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