Archivo de 21 mayo 2009

Encuesta para una tesis doctoral

mayo 21, 2009

La vida de los doctorandos es muy dura, y tienen que hacer las cosas más inverosímiles para sus investigaciones. Un ejemplo claro es la pobre Eva Ferreras que está haciendo una tesis sobre cosas muy raras, entre la que está Menéame.

Ahora está en la fase de analizar los participantes y nos pidió expresamente que le ayudemos a divulgar para poder acabarla. Le podéis dar una pequeña gran ayuda contestando una encuesta que preparó.

Disclaimer: La encuesta y la doctorando no tienen relación alguna con Menéame. No hemos pasado datos de usuarios, ni tendremos acceso a los datos de la encuestas más allá de lo que desee publicar la autora.

Explicación simple del algoritmo de promoción de noticias (promote)

mayo 7, 2009

Actualización mayo 7, 2009: En la pestaña log de cada noticia se puede observar en qué momento se hicieron los reajustes de karma y las notas informativas del algoritmo.

Siempre que una noticia controvertida con varios votos negativos  (y/o que algunos piensen que no “queremos que salga” aunque le hayamos votado positivo o dado publicidad en nuestros blogs) no sale publicada surgen sospechas o conspiranoias de que “hay manipulación”, aunque el algoritmo de promoción es público, como así también los cálculos que realiza.

Suele pasar porque hay parámetros que ajustan el valor del karma de la noticia y hay poca gente capaz o con tiempo para tomarse el trabajo de leer el código y  de seguir la evolución del karma de cada noticia. Para esas personas intentaré explicar el funcionamiento básico del promote, y porqué lo hemos implementado de esa forma.

Los parámetros que más afectan al karma son los siguientes, ordenados más o menos de los que más influyen a los que menos:

  1. Bonus temporal a las nuevas noticias
  2. Coeficiente por metacategorías
  3. Añejamiento de noticias antiguas
  4. Control de diversidad de votos (o de afinidad)
  5. Control de media de votos

(Recalco lo de “más o menos”, ya que depende de varios factores, por ejemplo si la media de votos de una noticia es muy baja, afectará más que los demás, pero está al último porque no se suele llegar a esos extremos, salvo casos de intento de spam con muchos usuarios nuevos o inactivos por mucho tiempo, por ejemplo)

1. Bonus temporal a las nuevas noticias

El objetivo es publicar rápidamente aquellas noticias que reciben muchos votos apenas se envió la noticia. Este algoritmo funciona desde el primer día. Básicamente multiplica el karma de la noticia por un coeficiente decreciente tempral entre 2 y 1 1.5 a 1. A las dos horas el coeficiente se hace igual a uno por lo que deja de influenciar. Este coeficiente es visible en el promote, la columna COEF. La explicación más completa.

2. Coeficiente por metacategorías

En Menéame hay cuatro metacategorías: ocio, cultura, actualidad y tecnología. El objetivo es intentar tender a un balance entre número de enviadas y publicadas en cada categoría. De esta forma también se evita que el Menéame sea monotemático –o dominado por unas pocas categorías–.

Basado en el número de enviadas / número de publicadas de cada metacategoría se calcula un coeficiente. Los coeficientes de cada una son visibles en el promote. Por ejemplo ahora mismo:

Karma coefficient for tecnología: 1.31632555175
Karma coefficient for cultura: 0.982548801982
Karma coefficient for actualidad: 0.93282154627
Karma coefficient for ocio: 0.872050062752

Los números anteriores significan que a las noticia de tecnología se multiplica por 1.31 mientras que a las de actualidad 0.92. Esos coeficientes son medias entre las enviadas y publicadas de cada una en los últimos 2 días. Están también disponibles justo arriba de los coeficientes anteriores:

2 days stats for tecnología (queued/published/total): 157/13/98 -> 0.0679107630313
2 days stats for cultura (queued/published/total): 175/19/98 -> 0.0905408163265
2 days stats for actualidad (queued/published/total): 455/44/98 -> 0.10136577708
2 days stats for ocio (queued/published/total): 176/22/98 -> 0.104336734694

Los tres números de cada meta significan respectivamente: número de enviadas, número de publicadas y publicadas totales.

3. Añejamiento de noticias antiguas

El objetivo del algoritmo es quitar progresivamente la relevancia de las noticias después de varias horas (nueve). Se hace así para evitar que salgan publicadas siempre noticias de hace varios días, ya que por razones lógicas –el tiempo que están en pendientes– las más antiguas tienen más posibilidades y probabilidad de tener más votos que una noticia reciente.

El coeficiente varía progresivamente desde 1 a 0.4 una vez que han pasado nueve horas desde que se envió la noticia. Este coeficiente es visible también en la columna COEF del promote.

La parte del código que lo calcula es:

// Aged karma
$diff = max(0, $now - ($link->date + 9*3600)); // 9 hours without decreasing
$oldd = 1 - $diff/(3600*60);
$oldd = max(0.4, $oldd);
$oldd = min(1, $oldd);
$link->new_coef = $oldd;

El añejamiento de cada noticia también funciona desde el principio del Menéame.

4. Control de diversidad de votos (o de afinidad)

El objetivo de este control es evitar que grupos de usuarios se voten las noticias entre ellos y logren publicarlas (eso que algunos dicen que existen y llaman “mafias”).

El algoritmo calcula un porcentaje de afinidad entre usuarios y decrementa el karma que “aportan” a la noticia dependiendo de la afinidad con el usuario que le envió: a mayor afinidad menor es su influencia final (aunque el voto siempre suma). Con esto se asegura que para que una noticia salga publicada tiene que haber un mínimo de diversidad de votos.

El algoritmo está explicado en detalle en otro apunte. Está activo desde principios de setiembre de este año (2008).

La parte esencial del código que calcula el coeficiente de afinidad es el siguiente:

foreach ($votes as $vote) {
	if ($vote->id > 0 &&
			$vote->id != $uid &&
			abs($vote->count) > max(1, $nlinks/10) ) {
		$c = $vote->count/$nlinks * 0.75;
		if ($vote->count > 0) {
			$affinity[$vote->id] = round((1 - $c)*100);
		} else {
			$affinity[$vote->id] = round((-1 - $c)*100);
		}
	}
}

5. Control de media de votos

El objetivo de este control es evitar que se creen usuarios nuevos –o se tengan usuarios “inactivos”– con el único objetivo de publicar noticias de un determinado sitio. Por ejemplo que se pongan de acuerdo en un foro, o que haya grupos o empresas con muchos usuarios los intenten “vender” para promocionar sitios.

El promote analiza las medias de votos en los últimos días y usa esa media para controlar que no haya desvíos importantes. La media es visible en el promote:

Karma average for each link: 9.15856554197

Esto significar que la media ponderada de los votos a cada noticia en los últimos días es igual a 9.16.

Para cada noticia se calcula cuál es la media de sus votos. Si la diferencia de la media de un enlace es inferior al 3% de la global –para permitir variaciones hacia abajo–, entonces no toma en cuenta votos inferiores a la media para hacerla como mínimo igual a 9.16 * 0.97 (el -3%) aproximadamente.

Este control funciona desde el primer semestre de 2007.

Tuvimos que hacerlo cuando empezamos a detectar los intentos de spams mediante la creación de decenas de usuarios, especialmente cuando se acercaban fechas electorales o campus parties (ademas incluimos más controles de frecuencia de registros que se pueden hacer por IP y subred).

// Make sure we don't deviate too much from the average
// (it avoids vote spams and abuses)
// Allowed difference up to 3%
$karma_pos_user = (int) $karma_pos_user_high +
                  (int) min($karma_pos_user_high * 1.07, $karma_pos_user_low);

El karma es fundamental

Espero que esta breve explicación elimine algunas dudas sobre el funcionamiento del algoritmo de promoción y que de más tranquilidad, ya que está claro que se intenta asegurar que no haya abusos y grupos que tengan más influencia –llámese mafias o fanboys– capaces de publicar noticias sólo con sus votos.

En toda la explicación de las diferentes técnicas, el parámetro fundamental que evoluciona con el tiempo es el karma –en este caso el de las noticias, pero también el de cada usuario–. Ojalá que aclare mejor lo que comentábamos hace tiempo sobre la potencia y utilidad de ese numerito que llamamos “karma” [*]:

Lo anterior creo que explica más o menos los fundamentos de tener un karma: es un sistema básico de protección “anti abusos” que evita tener que tomar medidas más “drásticas”, además hace posible el voto anónimo.

[...]

Sí, admitimos que no es perfecto, ni de lejos, pero el karma ha sido fundamental para controlar y evitar abusos sin tener que recurrir a medidas extremas y un coste de administración que hubiese sido prohibitivo para nosotros.

(y permite publicar todo, el algoritmo y sus cálculos)

[*] Es decir, la potencia de las matemáticas de nivel de ESO para hacer cálculos y controles complejos y a la vez resumirlos en un número que todos podemos entender para darnos una idea de la “situación” :-)

La lista-meme, y rehabilitación de las cuentas afectadas

mayo 1, 2009

La lista de nombres de usuarios que se convirtió luego en un meme fue la razón de la deshabilitación de varias cuentas de usuarios. La versión original de la lista es de este comentario (la gran mayoría de los usuarios mencionados no tienen relación alguna con Menéame, ni son “admins”). Menos de dos minutos después uno de los mencionados se queja, con razón, y pide que actuemos como antes [*]. A los pocos minutos recibimos por email la queja de dos usuarios más.

[*] Desde que la lista de votos negativos es pública suelen crearse estas listas para acusar de “mafias”. Fue particularmente duro durante el ataque de Israel a Gaza, se hacían listas negras de “usuarios pro-sionistas- genocidas” a los que votaban negativo. Allí establecimos que no podíamos permitir semejante acoso a usuarios sólo por su voto negativo.

Aunque estas horas hubieron muchas quejas contra los admins, ellos no son responsables del ban, aquí asumo personalmente toda la responsabilidad. Aunque varios admins no estaban de acuerdo, mi decisión fue que debíamos ser coherentes, que hacer listas parciales cuando la información es pública es prácticamente un acoso mafioso para los que votaban en sentido contrario, que había quejas de mencionados y que en todo caso la decisión era reversible.

Horas más tarde (después de las 20hs)  un usuario que tenía su dirección del blog en el perfil nos avisó a las pocas horas que le habían dejado una amenazas de muerte en su blog. En ese momento pusimos en marcha un programa que periódicamente verificaba si se ponían listas de usuarios en comentarios y baneaba automáticamente la cuenta.

Sí, fue un error porque no sirvió de nada, es un meme, así que aún tenía menos sentido el ban a los usuarios. Desde las 7 horas están rehabilitados. En un momento relanzaremos el proceso de cálculo de karma para que se restablezca a valores más próximos al que tenían antes.

Este proceso se hizo mediante otro pequeño programa, así que puede ser que haya quedado alguno todavía sin re-habilitar. La lista completa de los baneados y rehabilitados está disponible (460 en total) Aunque no era nuestra intención algunos la consideraron a la publicación lista como crítica o escarnio, nada más lejos de nuestra intención, quitado el enlace y fichero (si falta alguno avisadnos a abuse[en]meneame.net). Si se trata de un ban por las mismas razones, la cuenta será inmediatamente restablecida. Para los que quieran dar de baja definitivamente su cuenta puede acceder a su perfil y seleccionar allí “deshabilitar cuenta” (abajo del formulario).

De nuevo, disculpas a los afectados. Claramente no tuvo sentido y generamos que esa lista se divulgase aún más en sitios externos, causando aún más molestias.

Para los usuarios mencionados en la lista, disculpas especiales. Tomamos la decisión que nos pareció coherente y buena, pero os generó más problemas (al menos a algunos). Si estáis molestos os recomendamos acceder a vuestro perfil y cambiar el nombre de usuario. Aquellos que hayan recibido amenazas o insultos, por favor hacednos llegar la información a abuse[en]meneame.net, analizaremos y pondremos los medios legales necesarios.

Disculpas, y sí, como han comentado varios, se aprende cada día. También queremos agradecer especialmente a lso admins –la mayoría voluntarios– por el duro e insoportable trabajo de las últimas horas para controlar los abusos y gamberradas (y perdonadlos si han tomado decisiones equivocadas, era muy duro).

Algunos se preguntarán que pensamos de las causas del vandalismo. Una parte [no sabríamos medirla] seguro fue ocasionado por la lista y deshabilitación de cuentas relatadas en este apunte. Otras por decisiones o estrategias erróneas adicionales. Pero hay una parte fundamental que está resumida perfectamente en este comentario de un usuario y en el que Benjamí y yo estamos plenamente de acuerdo.

Postdata 1: Un gran favor que pedimos encarecidamente, sobre todo en estas horas de “quejas”. Esas listas agobian a los usuarios afectados, se sienten acosados injustamente. En algunos casos son tonterías, en otros como las “listas de genocidas” (o incluso en otras más superficiales como las de este caso) suelen derivar en problemas más graves que llegan hasta las amenazas de muerte del tipo sé dónde vives, ya verás lo que te puede pasar [sic]. Los votos negativos completos están disponibles, todos en su contexto, la idea fue aumentar la transparencia, no que sea usado para señalar a usuarios.

Postdata 2:  A raíz de los problemas de “listas de los que votan negativo” nos estamos replanteando la conveniencia de mostrar la lista de votos negativos y quizás volver al estado inicial de sólo mostrar los positivos.

Edición. La parte negativa de esta decisión. Acabamos de recibir un email, desolador para nosotros, de unos de los usuarios que aparecía en la lista:

A la atención de los ADMINS:
Con lagrimas en los ojos,lo digo:Menéame ha perdido.Llevo toda la noche pensando en las acciones que tomaría al ver el final de la guerra fraticida iniciado por descerebrados,alborotadores,niñatos y borregos.Hoy al levantarme esperaba otra situación pero al contrario me he encontrado un paisaje desolador:

  • Los baneos han sido rehabilitados y las listas de “la Mafia” siguen pululando por el Internet
  • Las noticias “pulla” siguen en portada,noticias que han llegado a portada debido al ataque de los clones (eso va contra el ToS de Menéame)
  • Mi karma no se ha restablecido aún después de haber estado toda la noche luchando contra clones (tengo 3 paginas de noticias irrelevantes o cansinas)

Lo siento,no valgo para perdonar y debido a este problema,creo que es el momento de decir adios a Menéame (quizas sea un hasta luego pero creo que sera dentro de bastante tiempo).Nunca cedais a las exigencias,luchad por lo que creais un abuso…

PD:Nunca participe en el Menéame (mande 2 noticias durante mi estancia) o en el Nótame pero ayer,me sentí un ciudadano de Menéame y como tal,la defendi y luche por ella.
PD2:No deshabilito mi cuenta para que en mi interior vea que no todo ha sido en vano y quede huella de lo que en el BANDAY viví.

Lo sentimos, tienes razón :-(


Seguir

Get every new post delivered to your Inbox.

Únete a otros 25 seguidores