¿Qué se necesita conocer de R project para aprender algunas técnicas de Machine Learning?

Sobre R

El lenguaje R o R project, en recientes años se ha vuelto muy popular, sobre todo en el ámbito académico y poco a poco empieza a sonar en el sector de la industria de la Tecnologías de la Información (TI).

Tan es así, que Oracle una empresa líder en tecnología y conocida por su gestor de bases de datos con el mismo nombre, ahora ofrece una versión de R dentro de su gestor de bases de datos. No he probado la versión, por lo cual desconozco si tienen todas las funcionalidades iguales o si tienen ciertas restricciones al compararlo con la versión de R que uno descarga libremente.

Si uno busca en la red o en la página principal de R project, se encontrará con la abrumadora noticia de que existen aproximadamente más de 7 000 librerías. Las librerías son un bloque de código o funciones que alguien escribió y compartió libremente para hacer uso de ellas en el software.

Al ser libre R project uno tienen la posibilidad de compartir algunas funciones que considere que son buenas y que a otros les pueden servir, eso hace que una comunidad a nivel mundial esté actualizando librerías o compartiendo nuevos algoritmos.

Entre todas las librerías uno puede encontrar un poco de todo. Se encuentran librerías que permiten la manipulación de datos, realizar conexiones a la red, automatizar pronósticos, manipular y analizar textos, generar reportes, conectarse con gestores de bases de datos, manipular mapas, etc.

Si uno toma alguna técnica  estándar para hacer algo de estadística, es probable que exista más de una librería que nos permite hacer eso. Por lo tanto pretender conocer todas las librerías es una tarea casi imposible y lo que recomiendo es ir consultando en la red, en foros o blog para conocer las librerías que sugieren para realizar tal o cual técnica.  Al final las mejores librerías y las más usadas tenderán a persistir en las recomendaciones que haga la gente.

Existen muchos manuales básicos para aprender a usar R [1,2,3,4,5]. Lamentablemente el manual de introducción en español no ha sido actualizado desde hace años, pero se cuenta con muchas referencias que van desde blog, notas y textos  que cubren prácticamente todo lo que uno debe de saber a un nivel básico o intermedio, y posiblemente hasta un poco avanzado ( hay un libro hermoso de temas avanzados escrito por Hadley Wickham que deben de apurarse a leerlo).

Lo “malo” hasta cierto punto es que las mejores referencias se encuentran en Ingles, es importante aprender por lo menos a leer en dicho idioma pero hace falta en ocasiones manuales en español que clarifiquen los conceptos e ideas.

Al final lo recomendable para aprender cualquier software es practicar, tomar varias fuentes para aprender y replicar ejemplos. Estudiar el código que otros hacen y hacer las modificaciones que uno pueda ir pensando que mejoran dicho código, ya sea para optimizarlo o solo para probar si se puede usar para hacer otra cosa.

Lo que puedo decir es que R project es un software bastante sencillo de aprender,  lo complicado no radica en el software mismo, sino conocer lo que hacen comandos, técnicas, algoritmos y librerías. A gente que lleva toda su vida haciendo software le desconcierta y le parece muy “científico” como para aprenderlo, pero con algo de tiempo y algunas revisiones de como declarar variables, hacer funciones, manipular tipos de datos, etcétera; van perdiendo el miedo a usarlo.

R project y Machine Learning

La instalación en el sistema que sea, Windows, Mac Ox o Linux, son sencillas y el IDE (Entorno de Desarrollo Integrado) es prácticamente igual para todos los sistemas. Lo único que es importante y que cambia es al correr un script desde la consola del sistema. En general la consola de Windows es muy pobre comparada con las de los otros dos sistemas, pero se puede fortalecer usando otros software. Para ese caso en otro momento explico el tipo de cosas que hay que hacer para correr los script.

Un complemente para programar en R es usar el entorno R Studio, que prácticamente es tener un entorno de desarrollo amigable, de mejor vista y con herramientas que simplifican el trabajo al momento de programar en R. Existen  otros entornos, pero es cosa de cuál se adecua mejor a nuestro modo de trabajo y necesidades.

En el caso de los ejemplos de Machine Learning, lo necesario del software se puede clasificar en:

  1. Funciones estándar en R.
  2. Importación, exportación y manipulación de datos.
  3. Funciones particulares de ciertas librerías.

Del primer punto las funciones estándar son: lm, plot, hist, summary, head, apply, sapply, poly, tail, dim, str, names, c, paste, princomp, subset, cov, cor, ts, entre otras. Lo recomendable es revisar por medio de la función help la información de los parámetros y ver algún ejemplo del uso de dicha función, como siempre la recomendación es hacer pruebas para ir mejorando en el manejo de dichas funciones o comandos. Por supuesto que existen más funciones que no menciono, pero son en general las que de momento creo se usan más en las entras.

Sobre la importación y exportación de datos, lo principal en mi opinión es tener claro que el tipo de dato base en R son los vectores o en otras palabras R es un lenguaje “vectorizado” y en general la mayoría de funciones que se usan depende de asignarle data.frame o matrices, que son construidos con vectores.

La importación de los datos se hace por medio de las funciones read.csv, read.txt,scan entre otras. Para este tema se puede consultar un pequeño manual de aproximadamente 30 páginas en la página oficial de R. En general se requiere practicar con la importación de datos, ya que en ocasiones pedir que se importen datos con cierta restricción, como por ejemplo pedir que las cadenas no sean leídas como factores, que se separen las columnas por tabuladores,etc.

Respecto a la manipulación, se cuenta con algunas funciones subset, with, ifelse, cbind, rbind   las cuales son estándar del software. Pero se cuenta con varias librerías que permiten la manipulación de datos, entre ellas, reshape2,  gdata ,data.table, plyr, dplyr.

Del tercer punto, para aprender sobre algunas funciones de ciertas librerías mi recomendación es revisar los manuales de usuarios que son publicados cuando se libera la librería o paquete, es decir; cuando nos permiten usar su código otras personas que usan R project.

La mayoría  de las librerías suelen contar con algunos ejemplos, datos y  en Internet suele haber información casi suficiente para conocer como funcionan. Creo que lo mejor es tratar de replicar los ejemplos, cambiar las condiciones de parámetros y crear un ejemplo, también esto resulta más divertido para comprender lo que hacen las funciones.

Algunas librerías son más populares que otras y en buena medida es por la calidad y utilidad. Ejemplo, la librería ggplot2  es bastante buena para gráficos, se cuenta con libros y notas que explican su uso con buen detalle, además de que en recientes años se ha hecho muy popular y es considerada unas de las herramientas indispensables en análisis de datos.

Otra librería que ha tenido popularidad es tm, que se refiere a Text Mining ( Minería de Textos); se cuenta con bastante información en la red sobre como usar sus funciones con algunas ejemplos, pero además está relacionada con las investigaciones del Procesamiento de Lenguaje Natural (NLP, en ingles).

Por último las librerías que son populares para analizar redes es igraph y sna, con redes me refiero a redes sociales o redes complejas, esta librería cuenta con una gran cantidad de funciones. La gran ventaja es que se cuenta con suficiente explicación y ejemplos debido a la gran popularidad de las redes sociales en nuestro día a día, entonces basta con buscar un poco en la red para encontrar buen material al respecto [6,7].

Espero las explicaciones generen interés en explorar más sobre R project. La última observación que hago es entender que este software permite rápido aprender ciertas técnicas, pero existen otros software que ante proyectos grandes puede ser mejores( Python, C,Ruby, Java, scala), pero sin duda es una buena fuente para aprender practicando,  R lo permite con una curva de aprendizaje muy pequeña.

Comentario: Debido al desarrollo de R y  la creación de nuevas librerías, con el paso del tiempo algunos de los comentarios respecto a las librarías puede dejar de ser actualizado. Ejemplo, ggplot2 ha evolucionado no solo con mejoras y más funciones, sino también con la aparición de otro tipo de librerías que se abocan a la visualización de datos a nivel web. Otro ejemplo es en el procesamiento de datos, debido a la relevancia de plyr y dplyr es posible que aparezcan librerías más optimizadas o con otro tipo de características, ejemplo data.table es mejor para ciertas operaciones con datos. Así que siempre hay que tener en mente que los software evolucionan, pero ello es recomendable conocer de manera solida las estructuras base o herramientas base.

“The best thing about R is  that it was developed by statisticians. The worst thing about R is that….it was developed by statisticians.”  Bo Cowgill, Google, Inc.

Referencias:

1.-The R inferno.

2.-Using R for Numerical Analysis in Science and Engineering.

3.-A handbook of Statistical Analyses using R.

4.-Data Manipulation with R.

5.-R in Action.

6.-Igraph

7.-SNA

8.-R-bloggers

9.-Revolution Analytic

Anuncios

Un comentario sobre “¿Qué se necesita conocer de R project para aprender algunas técnicas de Machine Learning?

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s