servidor de Reputación AntiSPAm

domingo, 30 de agosto de 2009

La espina, características y funcionamiento

La Espina es un algoritmo de reputación que en función de una serie de parámetros modificables por parte del equipo de desarrollo cambiará la reputación asociada a un determinado usuario en nuestra base de datos. Su funcionamiento es muy sencillo; a partir de unas variables que o bien se mandan en el mensaje desde el cliente o bien se sacan de la base de datos se realizan unos cálculos matemáticos, el resultado es lo que llamaremos factor de cambio; el factor de cambio es lo que sumaremos o restaremos (según convenga) a la antigua reputación quedando está actualizando.

A continuación pasamos a detallar el funcionamiento de la Espina especificando los parámetros empleados en su cálculo y como se modifican.

a) Reputación del Votante:
Cuando un blogger emite un voto sobre un comentario en su blog se envía un mensaje al servidor RASPA, el algoritmo lo primero que hace es ver si la persona que ha emitido el voto no es spammer ya que de ser así el algoritmo no le protege de otros spammers terminando aquí toda su funcionalidad; por el contrario si el valor de su reputación es lo suficientemente alto se pasa a medir cual es el valor del voto; este puede ser un valor de uno a cinco dependiendo de lo alta que sea la reputación del emisor del voto.

b) Índice de Colegueo:
Es un factor que mide el grado de amistad/enemistad entre dos usuarios entendiendo este como el número de comentarios que se han cruzado entre los blogs de los cuales son administradores ambos en la última semana. El objetivo es evitar que entre dos amigos se aumenten sus reputaciones votándose positivamente de forma reiterada o el caso contrario entre dos personas enemistadas.

El funcionamiento de este índice consiste en obtener de la base de datos el número de comentarios que tengan como emisor y receptor a los dos usuarios implicados en la votación y se hayan producido durante la última semana. El valor del índice es un valor entre el rango uno y cero; de esta forma si los mensajes entre usuarios han sido constantes y el valor llega a cero el valor final de la votación será cero con lo que no habrá cambio en la reputación del votante. Cabe destacar que este factor decrece de forma exponencial.

c) Índice de Actividad:
Factor empleado para que los votos de los usuarios más activos tengan más peso; su forma de actuar es sencilla, se busca en la base de datos la última fecha de actualización de sus posts; si esta es superior a quince días el peso final del voto se reduce a la mitad, en caso contrario no se ve alterado; la finalidad es que los usuarios que más usen el servicio sean los que más importancia tengan en la modificación de una reputación.

d) Factor Negativo:
Este es un factor que únicamente se aplica a los votos clasificados como spam; su función es la de hacer que un voto negativo pondere más que uno positivo, lo cual permitirá una identificación de los spammers más rápida.

Todos estos factores e índices se operan como se indica a continuación para obtener la nueva varianza en la antigua reputación:


Si el voto es positivo (aprobado):
VarianzaReputacion = (ValorVoto*IndiceColegueo)/IndiceActividad

Si es negativo (spam):
VarianzaReputacion = (FactorNegativo*ValorVoto*IndiceColegueo)/IndiceActividad

Una vez obtenidos todos estos factores y operados lo único que resta por hacer es sumar el coeficiente resultante a la antigua reputación de la persona que emitió el voto.


DATOS DEL ALGORITMO

En este apartado mostramos cómo evolucionan los parámetros del algoritmo según fluctúan las distintas variables.

a) Reputación del votante:


En la tabla podemos ver la línea de tendencia que cumple esta función. El eje horizontal representa la reputación del votante y el vertical el coeficiente que le corresponde.

b) Índice de colegueo:

En la gráfica podemos ver como a partir del quinto mensaje (eje horizontal) el valor del índice es cero anulándose los votos.

c) Evolución general:
Según todo lo citado anteriormente y teniendo en cuenta el índice de actividad y el factor negativo para los votos clasificados como spam; la evolución general del algoritmo será como se representa a continuación.


Los votos pueden ir desde un valor de cinco si es muy alta la reputación del votante (eje horizontal) hasta cero si es muy baja, también vemos como desciende la ponderación del voto según aumentan los comentarios comunes entre los usuarios.

Los votos negativos tienen un mayor peso con el fin de detectar antes a los posibles spammers; todos los valores de la tabla anterior se ven multiplicados por el factor negativo; hemos considerado conveniente darle a este una ponderación de un 50% superior al de un voto positivo; los resultados por tanto resultan de la siguiente forma.

Vemos como se puede llegar a un valor de menos siete para aquellos votos clasificados como spam.

Por último sólo nos queda resaltar que la ponderación de cada nuevo voto puede reducirse a la mitad si el usuario no ha actualizado su blog en los últimos quince días.


Conclusiones

Creemos que nuestro algoritmo es completo y adecuado ya que cubre todos los posibles parámetros básicos que influyen en la modificación de la reputación así como otros menos triviales como el tiempo que lleva el votante inactivo. Teniendo en cuenta todo esto, en nuestra opinión, se premia los votos imparciales sobre los que pueden ser más objetivos y los votos negativos sobre los positivos haciendo que sólo los usuarios sobre los que no haya dudas puedan seguir sus tareas con total normalidad; según esto nuestro sistema es bastante disuasorio para los usuarios que envíen mensajes comerciales no solicitados; como curiosidad afirmar que si un usuario nada más comenzar su actividad (supongamos una reputación inicial de cincuenta) empieza a mandar mensajes que a juicio del resto de los usuarios son spam sólo podría enviar seis mensajes; si la tasa por darse de alta en RASPA es de cinco euros cada comentario tendría un coste de 0,83 céntimos; por este motivo creemos que RASPA no es solo un filtro anti-spam si no también una herramienta disuasoria contra este tipo de usuarios.

Además se cubre esta funcionalidad sin sobrecargar el servidor ni con un gran número de consultas ni con una alta carga computacional.