Sopa de bits

Reflexiones sobre la información

By

Enlaces de interés 2014-29

 

 

By

Frecuentistas y Bayesianos

Probablemente el debate entre el enfoque frecuentista y bayesiano sea un tema que le trae a poco a la inmensa mayoría de usuarios de la estadística, como también lo será el debate entre software libre y propietario de la informática.  Como sucede en éste, también en aquél los resultados finales pueden diferir poco, pero la clave está en la metodología y la filosofía.

Y lo cierto es que no sabría explicarlo mejor que en el blog Pythonic Perambulations, que ha publicado una serie de (por ahora) cuatro artículos sobre frecuentismo y bayesianismo, con ejemplos de programación en Python:

Lo que se desprende de estos artículos es un posicionamiento claro en favor del enfoque bayesiano. Algo cada vez menos raro. Pero, ¿por qué?

¿Por qué oiremos cada día más sobre el enfoque Bayesiano?

Resumiéndolo en un solo concepto, Aprendizaje automático, o en su traducción inglesa, más habitual, Machine Learning. Ante la ingente cantidad de datos, es necesario encontrar métodos y algoritmos que faciliten la adaptación de aplicaciones informáticas a los datos que las alimentan. Los métodos Bayesianos ofrecen una buena base para implementar algoritmos en programas que necesitan adaptar su funcionamiento a los datos que les son suministrados.

Ante la pregunta sobre las potenciales aplicaciones, no es necesario ir muy lejos para conocer una aplicación muy conocida: las herramientas de detección de SPAM cumplen todas las condiciones: los datos no tienen una estructura conocida, es necesario adaptar los criterios (los emails de los spammers cambian, la longitud y los enlaces también, así como los criterios para la evaluación del coeficiente de spam).

El Machine Learning y otras aplicaciones de algoritmos estadísticos a la Inteligencia Artificial y Deep Learning, pueden oscilar desde el marketing directo y la personalización hacia el cliente, hasta el análisis de modelos de datos para los que no existe una suposición de normalidad.

Pero lo más importante que aporta este enfoque es que incorpora en el núcleo de su funcionamiento el propio principio del aprendizaja, a partir de los conceptos de la distribución a priori y a posteriori.

By

Enlaces de interés, 2014-27

Una presentación de Seth Lloyd sobre Quantum Machine Learning, que viene a ser una implementación de algoritmos de Machine Learning sobre ordenadores cuánticos (computación cuántica). Algo que por lo que parece, no tardará mucho en llegar.

By

Enlaces de interés, 2014-26

Una charla muy recomendable de Santiago Ortiz (@moebio) sobre la exploración de métodos no lineales en la representación de la información.

By

PHP es lo suficientemente rápido

Desde hace aproximadamente unos dos años he estado flirteando con alternativas a PHP, en especial NodeJS.  El motivo principal ha sido conocer otras soluciones con una aproximación diferente a los problemas que plantea el entorno web en general, y la potencial mejora que supone compartir el mismo lenguaje de programación en el entorno cliente y el servidor. Python también está en la lista de flirteos, aunque debo decir que a cierta distancia.

El atractivo por NodeJS es (y en parte seguirá siendo) un enfoque diferente para la operativa en los cuellos de botella de las aplicaciones web. Al poder tratar las operaciones I/O de una forma asíncrona (eventos y callbacks), es un valor añadido en ciertos casos.  El enfoque asíncrono de NodeJS permite una ejecución más fluida, que a su vez permite combinar consultas exigentes con el trabajo paralelo mientras se espera a la finalización de estas tareas.  Además, una orientación a eventos, soluciones PubSub y otras características derivadas hacen pensar en NodeJS como una opción más que interesante para ciertas soluciones del entorno cloud.

Velocidad del código, velocidad del desarrollo

Pero quizá el enfoque que más aporta NodeJS, y por el cual también llegué a introducirme en el mundo del PHP fue la velocidad a la hora de desarrollar, y la agilidad para realizar cambios.  Hace unos meses leí el artículo PHP Performance: “fast enough” and improving, que pone énfasis en ese punto.

PHP tiene y tendrá infinidad de defectos, pero por alguna razón es el lenguaje más utilizado para aplicaciones web.  La razón es sencilla: es fácil empezar el desarrollo con PHP, no requiere una curva de aprendizaje como Java. En una palabra, funciona.

Pero la propia evolución de PHP no ha sido nada sencilla. El paso de la versión 4 a la 5 supuso un salto bastante difícil de seguir, y la introducción gradual de los Frameworks primero (empujado probablemente por actores como Ruby on Rails),  y en especial de los PSR, parece haber dividido una comunidad que debate entre la necesidad de estructurar y madurar el lenguaje, o mantenerlo en ese nivel de libertad que ha tenido desde sus inicios. Probablemente la aparición de lenguajes como Ruby (y RoR) como Python ha dado más empuje a la primera alternativa. Sinceramente lo desconozco.

Por último, la aparición de HipHop primero, y de HHVM después, han dado un empuje a la velocidad de carga de las aplicaciones PHP, con una integración completa (o casi) en muchas aplicaciones del ecosistema PHP,entre las cuales destacaría algunos casos clave, como Drupal, MediaWiki y Magento 2.

Es posible que las próximas versiones de PHP incorporen más mejoras en el rendimiento. ¿El mismo que Java? Probablemente no, pero seguro que a la par con NodeJS y mejor que otros lenguajes interpretados. Dependerá del uso que se le dé. En realidad, se puede descartar a PHP por varios motivos, pero en pocos casos ése será el de su rendimiento.

Los nuevos entornos

Es innegable que PHP no está pensado para ciertos otros entornos, como son las aplicaciones móviles (aunque sí parece teóricamente posible). Ahí es donde en parte entra un lenguaje como Javascript (vía AngularJS, Ionic Framework y/o similares).

No pienso en Javascript como algo que deba convertirse en un lenguaje de programación para todos los usos, pero sí para cualquiera. Si un lenguaje permite moverme en varios entornos a la vez (navegador, servidor, aplicación móvil o de escritorio con node-webkit), eso es algo de valorar si por un lado se quiere prototipar y producir un resultado sin detenerse en los detalles del tipado de datos, o en un requerimiento de un extremo rendimiento o de extrema fiabilidad en algunos procesos.

Cada proyecto es diferente, pero PHP, como afirma el artículo comentado más arriba, es lo suficientemente rápido y maduro para ser un gran candidato.

By

Enlaces de interés 2014-25

Un video de Code For America, en concreto de Catherine Bracy, hablando del por qué los buenos hackers (que no son piratas) hace buenos ciudadanos:

Feliz verbena!

By

Enlaces de interés, 2014-22

 

 

 

 
El humilde border-radius y lo que podemos dar de sí. Una presentación de de Lea Verou en la Fluent Conf 2014:

By

Enlaces de interés 2014-21

El video de hoy trata sobre la aplicación de Javascript para controlar “cacharritos” como Arduino, o para programar un drone:

By

Big data, desigualdad y desarrollo

Admito que de primeras este título puede parecer mezclar churras con merinas, pero no lo es en absoluto.  El análisis de datos en el ámbito de los negocios se centra en la optimización de los beneficios. Esa optimización a su vez hace rentable la recopilación de los datos dentro de un proceso, un flujo de actividad de sus clientes potenciales: si recopilando unos datos la empresa gana dinero, los seguirá recopilando.

Así pues, es posible que tu rango de actividades esté fuera de ese flujo de datos de interés para las empresas. Y en ese caso, corres el riesgo de ser excluído. Así lo comentaba Jonas Lerman en su artículo Big Data and Its Exclusions del Stanford Law Review del Septiembre de 2013 (el destacado es mío):

big data has the potential to solidify existing inequalities and stratifications and to create new ones. It could restructure societies so that the only people who matter—quite literally the only ones who count—are those who regularly contribute to the right data flows.

Es complicado reaccionar con una insubordinación a esta tendencia, comenta este autor, si no es que se traslada a los Estados mediante un cuerpo legal consistente, y también al sector privado. Que la capacidad para tratar esos datos, no lleve a la exclusión a todos aquellos que se mantienen ajenos a la corriente principal.

Pero las exclusiones también pueden suceder dentro del flujo de datos. Es lo que expone el artículo Big Data’s Dangerous New Era of Discrimination, en el que comenta:

But the main source of concern won’t be privacy, per se — it will be whether and how companies and organizations like your own use Big Data analytics to justify their segmentation/personalization/discrimination strategies.

The more effective Big Data analytics are in profitably segmenting and serving customers, the more likely those algorithms will be audited by regulators or litigators.

Regulación de algoritmos, entonces. Bueno, quizás sí, aunque no tengo muy claro cómo se evitará que esos datos se procesen con ese algoritmo. Incluso se puede desglosar el algoritmo en sus diversas operaciones matemáticas para poder dar un rodeo a las restricciones.

Big Data para el desarrollo

He aquí la otra cara de la moneda: enfocar el Big Data no para optimizar los ingresos, sino para optimizar el número de beneficiarios de sus algoritmos. ¿Cómo se podría aplicar esta tecnología para el desarrollo? Un informe de las Naciones Unidas titulado Big Data for Development (2012, incluye un enlace a PDF en la página) trata de tipificar y reenfocar la terminología habitual de este tema.

El documento adolece de su relativa antigüedad y deja abiertos muchos puntos que quizá ahora se podrían concretar. Pero en todo caso, presenta una serie de posibilidades para la aplicación del Big Data a este contexto:

  • Disponibilidad de dispositivos de bajo coste y fácil mantenimiento para recopilar datos.
  • Crowdsourcing como modelo operativo en la recolección.
  • Estándares de privacidad para los datos personales.

Y sus aplicaciones:

  • Mejora de la capacidad de seguimiento y respuesta de sucesos inesperados (Outbreak).
  • Mejora de la comprensión del cambio de comportamiento en las crisis.
  • Mapeo más concreto de las necesidades de los servicios.
  • Habilidad para predecir los cambios en la la oferta y la demanda.

Todo ello depende de la participación, tanto en el crowdsourcing como en una actitud de cooperación que acoja este proceso de recopilación de datos.  Al fin y al cabo, el objetivo final es poder crear una base de evidencias que permitan afrontar el desarrollo, con unos recursos siempre escasos.

By

Enlaces de interés 2014-20