BLAS, eficiencia y lme4

Cada cierto número de años me reencuentro con la cuestión de BLAS, ATLAS y todas esas cosas por tratar de arañar un poco de eficiencia a R. Existen el BLAS de toda la vida que, parece ser, viene de serie con R y uno puede optar por otras versiones optimizadas como ATLAS u OpenBLAS, cuyas ventajas relativas, de acuerdo con estos benchmarks, no parecen demasiado claras. Lo novedoso en esta revisita al problema es que he aprendido que a los anteriores se han sumado en estos últimos años, cuando menos: ...

2 de octubre de 2019 · Carlos J. Gil Bellosta

Factorización matricial con nulos

In illo tempore me llamaba mucho la atención encontrar métodos de ciencia de datos basados en factorización de matrices cuando la matriz a factorizar tenía nulos. Ocurre, por ejemplo, en sistemas de recomendación (cuando un usuario no ha visto o no nos ha dicho si le gusta determinada película). Y claro, con un nulo en la cosa, te comes los apuntes de álgebra lineal con papas. ¿Cómo se hace? Si buscas $U$ y $V$ tales que $Y = UV^\prime$: ...

19 de septiembre de 2019 · Carlos J. Gil Bellosta

Sobre mi nueva infraestructura de backups

Tengo dos ordenadores, tiramisu y ede. Uno va conmigo y el otro me espera en casa. Hasta hace 4 días, usaba OwnCloud para mantenerlos sincronizados y, de paso, gestionar mis backups: siempre tenía tres copias de mis datos en tres sitios distintos (mis dos ordenadores y un VPS). Pero: Alquilar un disco duro en la nube no es tan barato. OwnCloud es un coñazo: hay que actualizarlo cada que se te olvida cómo. OwnCloud es demasiado… aparatoso. Es más adecuado para organizaciones que para uso personal. Buscando alternativas, llegué a una lista corta de dos: ...

11 de septiembre de 2019 · Carlos J. Gil Bellosta

Mi infraestructura para Python

Resumen: He decidido usar RStudio como IDE para Python. RStudio no es el mejor IDE para desarrollar, pero es incomparablemente mejor que cualquier otro IDE para explorar, etc. Funciona muy bien y solo puede mejorar. He decidido pasar de Jupyter. Los notebooks valen para lo que valen, pero no para lo que hago. En caso de necesidad, uso Rmarkdown con bloques de Python. De nuevo, funcionan muy bien y solo pueden mejorar. Finalmente, he decidido pasar de Anaconda. Tiene incompatibilidades con RStudio. Particularmente, cuando los módulos de Python tratan de cargar shared libraries. Los módulos de Anaconda tienen el vicio de buscarlos dentro del directorio de instalación, pero al lanzar el intérprete de Python a través de reticulate, en Linux parece que los busca en el sistema (por debajo de /usr/lib y similares). Y todo se rompe mucho. Mucho y muy, muy feo. Así que uso los Python (3.7 cuando puedo, otras versiones cuando me obligan) del sistema. Pero la instalación del sistema es mínima. He creado varios environments ad hoc (y dentro de un directorio ad hoc para ellos) y obigo a reticulate a usarlos (vía use_virtualenv()) según conveniencia. En ellos tengo todas las dependencias (de numpy para arriba). ...

6 de junio de 2019 · Carlos J. Gil Bellosta

Demasiada gente conozco que todavía no sabe de GPT-2

Así que si eres uno de ellos, lee esto. Todo. Completo. Incluidos los motivos por los que no se va a liberar tal cual. Si te quedas con ganas de más, lee esto (un divertimento) o, más en serio, esto otro, donde se da cuenta de uno de los logros de GPT-2 que, a primera vista, pasa desapercibido: que ha logrado adquirir determinadas habilidades sin haber sido entrenado específicamente para ello.

8 de abril de 2019 · Carlos J. Gil Bellosta

¿Irán por aquí los tiros en el futuro de la "ciencia de datos"?

Para muchos, el futuro de la llamada ciencia de datos seguirá la estela dejada por y sus continuadores usando cosas deep. Pero a la vez, sin tanto estruendo y con una mucho menor cobertura mediática, otros están trazando una ruta alternativa que ilustran artículos como Bayes and Big Data: The Consensus Monte Carlo Algorithm (atención todos a lo que hace uno de sus coautores, Steven L. Scott, que convierte en oro todo lo que toca). Como abrebocas, su resumen (con mi subrayado): ...

1 de abril de 2019 · Carlos J. Gil Bellosta

Todo lo que deberías saber sobre encodings

¿Por qué (casi) nadie sabe sobre encodings? ¿Por qué (casi) nadie ha leído What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text?

20 de febrero de 2019 · Carlos J. Gil Bellosta

Extingámonos con dignidad: generaciones actuales y futuras, no incurramos en los errores de las anteriores

Participé el otro día en una cena con gente friqui. Constaté con cierto desasosiego cómo han virado los sujetos pasivos de nuestra indignación profesional a lo largo de los años. Antaño, fueron los viejos que seguían apegados a la paleoinformática. Hogaño, los primíparos que usan Python y desdeñan R. Tengo sentimientos encontrados y no sé qué más añadir.

8 de octubre de 2018 · Carlos J. Gil Bellosta

Windows Subsystem for Linux

Igual todo el mundo conoce ya WSL. Pero por si acaso queda entre la audiencia algún otro despistado, pues, eso: que existe en Windows 10 (¿solo?) un subsistema Linux que permite correr comandos de consola, instalar paquetes (p.e., con apt-get), etc. Incluso R. Me queda solo la duda del entorno gráfico, sobre el que no he visto nada. En su día, Windows fue un programa de MS-DOS que arrancaba al escribir win en la consola. Después hubo que arrancar la consola como un programa más de Windows. ...

14 de marzo de 2018 · Carlos J. Gil Bellosta

Efectos secundarios (nota: que existan no significa que debas usarlos)

Una función no debería cambiar nada de cuanto la rodea. Debería devolver algo y ya. Se acepta barco como animal acuático cuando hay funciones que escriben en logs, guardan datos en disco o crean gráficos. R deja que los usuarios se disparen en el pie permitiendo hacer cosas tan peligrosas como: a <- new.env() a$1 # error foo <- function(){ a$a <- 1 } foo() a$a # [1] 1 De la misma manera, si le enseñas un cuchillo a una vieja, es posible que te dé su bolso con todo lo que contiene. Pero eso no significa que debas usar los cuchillos para tales fines.

10 de octubre de 2017 · Carlos J. Gil Bellosta