R: tutoriales básicos y ejemplos de scripts

octubre 19, 2010

Cuando estás aprendiendo algo nuevo, un tutorial es de gran ayuda. Sin embargo, encontrar documentos que te faciliten el proceso de aprendizaje no siempre es sencillo. Después de revisar varios tutoriales de R, encontré algunos que permiten hacer cosas rápidamente, sentir y experimentar el lenguaje de forma inmediata.

Mis tutoriales básicos de R favoritos son los siguientes: tutorial 1, tutorial 2

Ahora sigue la parte interesante. Una herramienta es solamente el medio; la representación de la información, su análisis e interpretación no es responsabilidad del software.

En el git están disponibles los scripts.


Eligiendo herramientas

octubre 13, 2010

Encontrar las herramientas adecuadas para realizar una tarea no siempre es sencillo. Puedes usar lo que ya conoces sin importar si es lo más indicado o no. Con buena suerte, lo que ya conoces es lo adecuado y todo sale bien. Sin embargo, si no es así, el tiempo que ganarías según tú por conocer bien la herramienta en cuestión, se perdería al tener que trabajar más para cubrir sus deficiencias. Recientemente me encontré en una situación semejante.

Perl ha sido mi lenguaje de scripts favorito desde hace varios años. Su flexibilidad hace que puedas obtener resultados rápidamente. Una desventaja es que fácilmente puedes tener un código muy críptico y desordenado que al poco tiempo no entiendas. Mi dilema surgió recientemente: ¿seguiría usando Perl para el proyecto actual?, si era así, ¿era lo indicado?. Así, tratando de evitar aspectos emocionales como “… es que en Perl hice la transformación de datos que más me ha divertido …” y cosas parecidas, decidí buscar lo que luce más conveniente al proyecto.

 

Perl: el hippy, liberal, relajado

Buscaba algo que hiciera énfasis en el análisis estadístico y también que, como Perl, permitiera pegar cosas (Glue Language). Así, después de considerar distintas alternativas, he escogido Python como lenguaje de propósito general y R para la parte estadística. A diferencia de Perl, Python te exige mayor formalidad; es como la dama de La dama y el vagabundo. Por ejemplo, en Perl puedes escribir el código identado o sin identar, es indistinto.  En Python, por el contrario, la identación es un deber, no cuestión de estilo ni de buenas prácticas. Lo ideal sería que se tuvieran buenos hábitos con todos los lenguajes pero sabemos que en la práctica, eso difícilmente se cumple. Después de hacer algunos pininos,  he sentido las ventajas de Python, pero lo admito, Perl sigue siendo mi favorito.

 

Python: el formal, el elegante

En cuanto a R, su fortaleza radica en el análisis estadístico y  lo poco que he probado hasta ahora, me ha convencido. Sobre R ya había leído diversos comentarios, la mayoría positivos; sin embargo, fue un  análisis estadístico muy interesante lo que me hizo volver a poner mis ojos en él.

Pero, ¿cómo usar R desde Python? todo indica que rpy es lo que busco para aprovechar lo mejor de ambos mundos.

La experiencia y los resultados que se logren mostrarán si son buenas elecciones.

===

Imagen hippy, del usuario de flickr gabbahey


Imagen corbata
, del usuario de flickr fhashemi


Sobre cómo conocí LaTeX y nunca más volví a Word

mayo 10, 2010

Podría decir que LaTeX es una alternativa de software libre para la edición de textos pero eso sería una terrible injusticia. Los resultados que se obtienen con LaTeX son superiores a cualquier software que haya usado antes. Básicamente, LaTeX es un sistema para composición tipográfica de alta calidad. Se usa generalmente para documentos científicos y técnicos pero  puede usarse para todo tipo de publicación.

Al iniciar la maestría ya conocía LaTeX pero todavía no encontraba una razón lo suficientemente poderosa como para dejar el entorno al que estaba habituada. Usaba Word más por costumbre que por gusto y aunque me tentaba probar LaTeX, había leído que su curva de aprendizaje era elevada. En ese tiempo estaba preparando el estado del arte para la tesis. La fecha de entrega estaba muy cerca y según yo, prefería avanzar rápidamente a consumir tiempo en aprender otra cosa. Y un día sucedió lo inevitable. La inserción de ecuaciones era intensa y estaba a punto de terminar el documento, cuando de pronto, un cuadro de diálogo me avisó de un error desconocido. El documento, de forma inexplicable, quintuplicó su tamaño y aunque contaba con respaldos, al cargarlo sucedía lo mismo: no abría. Al día siguiente tenía que entregarlo y ahí estaba yo, con un documento que se convirtió en un monstruo y que no podía abrir. Pero cuando ocurren estas eventualidades a mitad de la noche previa a la entrega, la desesperación hace milagros. De alguna manera, logré dividir el documento en partes y lo  imprimí. Ése fue el último día que usé Word.

Es cierto, tardas un poco más en aprender LaTeX pero si tus expectativas de edición son elevadas no hay nada que pensar. Una vez que generas tu primer documento, no vuelves a Word. Muchas veces, como en este caso, lo que llamamos “consumir” tiempo, es más bien una inversión.

LaTeX se ha convertido en el estándar para la preparación de artículos científicos. Y se llega al extremo de que quien no usa LaTeX es criticado. No falta escuchar el susurro: “mmm, ¿ya viste? usa Word”. Es algo así como ir mal vestido a una fiesta.

Referencia: LaTeX – A document preparation system


Software libre para aprendizaje automático

mayo 9, 2010

En la comunidad científica, la publicación de artículos es una actividad central. Quienes se dedican al aprendizaje automático, generalmente asocian a sus artículos, software para resolver un problema determinado, mostrar pruebas de concepto, algoritmos nuevos, combinar técnicas, entre muchas aplicaciones. Sin embargo, pocos son los investigadores que ponen el software a disposición del público. El objetivo principal es obtener resultados para el artículo en turno mientras que el desarrollo y distribución del software no es una prioridad. Este esquema de trabajo constituye un obstáculo para el avance científico ya que:

  • Impide que se reproduzcan con fidelidad los resultados presentados en el artículo.
  • Genera la necesidad de implementación incesante.
  • Dificulta la combinación de diferentes enfoques.
  • Dificulta la comparación entre algoritmos.

Las principales excusas que se suelen poner para liberar el código son:

  • Mi software está horrible. La existencia de un esquema de software libre forzaría a generar mejor código.
  • Nos robarán las ideas. El enfoque debería ser: se extenderán nuestras ideas.
  • No tengo tiempo, además ya lo publiqué. El enfoque debería ser: lo haré y eso me permitirá generar nuevos resultados y experimentos en menor tiempo.

A raíz de esta carencia, en el 2007 se propuso la plataforma MLOSS (Machine Learning Open Source Software). Desde entonces, lentamente ha ido creciendo el interés de la comunidad; en principio, por probar el software disponible; posteriormente, por difundir el propio. Lo importante es que se va ganando terreno en este aspecto.

Confesión: Esta nota surgió del remordimiento que tengo porque no he pulido el software generado en mi tesis para ponerlo a disposición libre.

Referencia: The Need for Open Source Software in Machine Learning


A %d blogueros les gusta esto: