log log binning

Una de las materias que hice el año pasado (estrictamente hablando, aún la estoy haciendo) fue Topología de Internet, con Nacho Alvarez-Hamelin. En ella estudié a Internet como sistema complejo, donde routers y/o ASs se interconectan y forman un grafo.

Una de las propiedades más características de los grafos es su distribución de grados. El grado es la cantidad de vértices que tiene un nodo. En el ejemplo de la izquierda, el nodo 4 tiene grado 3. La distribución de grados es una característica del grafo en su conjunto y no es otra cosa que contar cuántos nodos hay con grado 0, cuántos con grado 1, y así siguiendo. En el caso de la topología de Internet, no hay nodos con grado 0, ya que es una red totalmente conexa (triste sería estar conectado a ese router que no está conectado a nada más).

La topología de Internet (es decir, cómo se interconectan sus componentes) no se conoce a ciencia cierta (tema que quedará para otro post) pero hay algunos acercamientos académicamente aceptados. Uno de ellos es el de CAIDA que provee información sobre como están conectados los distintos sistemas autónomos. Esta data, después de modificar un poco su formato, puede ser analizada con el módulo Complex Systems Toolbox, para Scilab, un clon libre de Matlab.
Resulta ser que, al analizar la distribución de grados de la topología de Internet, uno se encuentra con una distribución de ley potencial (chocolate por la noticias, dirían los hermanos Faloutsos, que ya sabían esto desde 1999).

Esta ley de potencia (en inglés, power law) es una relación en que la frecuencia de un hecho cae de forma exponencial con respecto a la magnitud. Este tipo de distribuciones tiene una forma de panza hacia el eje de coordenadas y abunda en la naturaleza™, desde el crecimiento de los ríos hasta la popularidad de las personas en las redes sociales. Por su forma tan particular, se suele dibujar en ejes logarítmicos, quedando como una recta que se caracteriza por su pendiente (en el dibujo, b), que es el exponente de la curva en ejes lineales.

En estos dibujos, la curva es continua y elegante. Pero cuando uno va al mundo discreto de la modelización de fenómenos, la cosa cambia. Y mucho. Por ejemplo, este es el gráfico de la distribución de grados de la topología de AS, según CAIDA:

Los puntos rojos son las muestras discretas, las uní solo para que se aprecie mejor cuál va delante de cada cuál. Como se ve, la cosa no queda tan prolijita y agradable. Es que hay veces que la naturaleza™ se resiste a ser modelada con una fórmula y la estimación de al pendiente cuando se trata de datos experimentales puede ser complicada, sobre todo en la cola. Así es como llegamos al concepto de binning.

La idea es sencilla. Consiste en dividir el eje x es zócalos (bins) de tamaño fijo. Después tomar todas las muestras que caigan en un bin y promediarlas. Así, se grafica solo este promedio como un único punto que representa a todo el bin. Como estamos trabajando con ejes logarítmicos, el calculo del ancho de los bins requiere cierta aritmética, dado que estos se van ampliando exponencialmente (de forma tal que queden todos del mismo tamaño, o casi, al plotearlos). A esto lo llamamos log log binning.

Por suerte, el Complex Systems Toolbox tiene una función para hacer esta magia. Y aquí está el resultado:

Las muestras son las cruces rojas, mientras que los puntos verdes son los representantes de binning. Puede verse que están casi equidistantes, sobre todo después de 10. Por otro lado ¿no notan nada raro acá? Vamos por partes. En la parte inicial de la curva, ésta aparece por debajo de la línea de las cruces rojas. Esto empieza a tener poco sentido. Se supone que el promedio de un único punto es ese mismo punto.

Más grave aún es lo que ocurre en la cola. Ahí, esporádicos puntos (hay muchos ceros) generan una recta paralela al eje. Cuando uno promedia varios valores el resultado debería ser cada vez menor si la cantidad de ceros aumenta. Sin embargo, aquí la curva se suaviza hasta perder toda su inclinación.

Fue así como decidí mejorar esta funcion de log log binning (si, toda esta introducción para contarles esto... es que evidentemente soy muy pedante). A continuación, el mismo gráfico, resultado de mi propia implementación:

Algunas reimplementaciones por acá, fixeo de bugs por allá y ahora la pendiente se puede ver mucho más clara. Obvio que también podías leerte el paper de los hermanos Faloutsos, donde se explica que b está entre 2.1 y 2.4, pero no hubiese sido igual de divertido. Tuve que leer bastante y entender aritmética que había olvidado. Putié mucho contra scilab/matlab pero terminé descubriéndole cosas interesantes. En general, fue algo bastante entretenido.

La nueva implementación de log log binning ya está en el trunk de Complex Systems Toolbox y seguramente estará disponible en la próxima versión. También incluí novedades para graficar distribución de grados cuando los grafos son dirigidos y algunas otras pequeñeses de formato.

(hot) boxing network

Hace unos días comenté que, por razones de practicidad, metí todos mis aparatos de redes en una caja. Si bien le puse alguna ventilación no forzada, varios amigos y conocidos insistieron en la alta temperatura que podía llegar a alcanzarse dentro del susodicho tupperware. Desde mi punto de vista, no hay (había) nada de que preocuparse.

Pero hablar es gratis, así que decidí ir a los papeles y a las pruebas concretas, para lo que, evidentemente, era necesario un termómetro. Fue así como encontré la excusa para hacerme de uno, tal como se puede ver:


Ahora puedo saber que dentro de la caja la temperatura ronda los 48ºC, aunque tiene picos de 50ºC cuando hace calor en el living. En lo personal, era más o menos lo que calculaba. El sensor lo fijé a la tapa superior, con lo que voy a suponer que es el lugar más caliente de la caja (aunque tal vez lo sea entre los transformadores, no se...).

Con la intensión de ver que tan grave puede ser esto para los equipos en su interior, me puse a recolectar las especificaciones de la parte electrónica (¿debería preocuparme también por las condiciones en la que trabajan los transformadores?). Aquí, la lista de dispositivos con el rango de temperatura operativo y links a las fuentes:

Para mi sorpresa (es que claramente soy un ignorante) 3 de los 4 aparatos tienen temperaturas máximas de operación de 40ºC, ~10ºC menos de lo que se respira por esos lares.

Evidentemente, estimados comentaristas, tenían razón. Es que soy un cabeza dura, ya lo saben. El hecho es que tal vez sí debería preocuparme un poco más por bajar la temperatura de ese cajón si es que quiero que mi pequeña red siga funcionando.

update 16 Jan 2010 12:01:10 -0300: Finalmente le puse un ventilador que expulse aire en la tapa (no solo fue la sugerencia de muchos, también era el único lugar donde cabía). Uno de fuente de PC, brushless.


En el mismo lugar de medición, en el que antes tenía 48ºC ahora tengo entre 37ºC y 38ºC, lo cual es buenísimo. Un amigo me sugirió que mida entre los dispositivos. Ahí la historia cambia: 43ºC (no tengo idea de cual era antes en esta ubicación). Tal vez pueda hacer un sistema de tuberías para hacer correr aire entre ellos.

boxing network

Since I am a housewife (i.e. since I live on my own) my concerns have been extended to foreign horizons, such as taming dust and lint. All my network devices and wires has a particular magnetism for them. To make things worse, the devices cleaning is quiet hard.

So, I decide to boxing them. All you need is a big tupperware and few rubber bands. Here is the process to build it:

boxing process

And this is done:
boxing