3.5 Conversion of Lumped-Elements to Distributed Elements
3.5.1 Low-pass Filter
La estructura Registro de Propagaciones se genera y actualiza en la segunda etapa del enfoque propuesto al igual que el Grafo Social. Y análogamente a este último son utilizadas en etapas posteriores por diversos módulos. En la Figura 4.9 se ilustra el diagrama de clase de la unidad Registro de Propagaciones.
Figura 4.9. Diagrama de clases de la unidad Registro de Propagaciones.
Cabe destacar que por razones de prolijidad no se incluyen los getters y setters de las clases Action.java y LogEntry.java.
Como se puede apreciar en el diagrama de la Figura 4.9, el Log de Acciones (o Registro de Propagaciones) contiene entradas y cada una de ellas contiene una acción y un tiempo. Dichas entradas se implementan en la clase LogEntry.java y además de lo mencionado anteriormente, permiten diferenciar cuándo una interacción tuvo un usuario intermedio y cuándo se realizó de manera directa. Esta
información se utiliza luego para la Generación de Entradas del Influence Models, perteneciente a la etapa 3 del enfoque propuesto.
Respecto a la clase Action.java es un contenedor que indica, el identificador normalizado de una acción o interacción, el tipo ( tweet, retweet, reply ) y el texto que contiene. Cabe recordar que el usuario contiene un listado de las acciones realizadas. Esta clase es la que representa el módulo Acción visto en el diagrama de la sección 4.1.
Por último y siendo la clase más importante, se ilustra ActionLog.java. Esta clase contiene la estructura del denominado Registro de Propagaciones y permite la agregación de nuevas interacciones. Es importante destacar que el registro de interacciones se mantiene de manera ordenada primero por ID de acción y luego por tiempo de realización. Esto es así para facilitar la creación de las entradas del Influence Models, que será analizada en la sección siguiente.
4.10. Volcado de Información
Este módulo pertenece a la primera parte de la etapa tres del enfoque propuesto, la Obtención del Conjunto de Semillas. Para llevar a cabo esta última se utiliza la herramienta denominada Influence Models [4]. Esta herramienta como se explicó en el capítulo anterior permite cinco maneras de funcionamiento:
Selección de Semillas para la Maximización de la Influencia bajo el CD. Determinar la Verdadera Propagación de Influencia de un conjunto de semillas bajo el CD.
Experimentos de Predicción de Propagación.
Maximización de Influencia bajo los modelos LT e IC. Generación de Archivos de Entrada.
El modo de trabajo a elegir se debe indicar en el archivo de configuración de la herramienta, bajo el parámetro phase . Cada uno de los modos anteriores se identifica con un número entero y dependiendo del funcionamiento que se desee utilizar el resto de los parámetros que son necesitados puede variar. En el caso particular del enfoque propuesto, la phase a utilizar es la primera del listado anterior, identificada con el número 12 (doce). Para ello, se deben indicar ocho parámetros además del ya mencionado modo. A continuación son listados junto con una breve descripción de los mismos:
1. Phase: 12 Selección de Semillas para la Maximización de la Influencia bajo el CD.
2. graphFile: ruta al archivo que contiene la información sobre el Grafo Social. Cada línea debe contener 5 (cinco) columnas, separadas por un espacio en blanco. Este archivo puede ser generado utilizando el quinto modo enunciado
en la lista (Generación de Archivos de Entrada). A continuación se enumeran las columnas y su contenido.
● Columna 1: ID del usuario 1. Debe ser un entero positivo. ● Columna 2: ID del usuario 2. Debe ser un entero positivo. El
usuario 1 y el 2 son amigos. En esta etapa el grafo ya no es dirigido. En cambio, si se utilizara el modo de Generación de Archivos para producirlo, sí se debería establecer la dirección de la arista.
● Columna 3: Tiempo promedio tomado en propagarse las acciones del usuario 1 hacia el usuario 2. La unidad temporal es segundos.
● Columna 4: Tiempo promedio tomado en propagarse las acciones del usuario 2 hacia el usuario 1. La unidad temporal es segundos.
● Columna 5: Tiempo en segundos, en que el usuario 1 y el usuario 2 se hacen amigos. Indicar 0 si el grafo es estático. Como dicha información no es provista por Twitter, se indica el valor cero en este campo para todas las filas.
3. actionsFile: ruta al archivo que contiene la información sobre las trazas de propagación. Cada línea debe contener 3 (tres) columnas, separadas por un espacio en blanco. Las mismas se enumeran a continuación
● Columna 1: ID del usuario. Debe ser un entero positivo. ● Columna 2: ID de la acción. Debe ser un entero positivo.
● Columna 3: Tiempo en segundos en que el usuario realizó la acción.
4. trainingActionsFile: ruta al archivo que contiene los IDs de las acciones que están en el conjunto de entrenamiento. En este caso, el conjunto son todas las interacciones que sobrepasan a los filtros. Cada línea debe contener una única columna con el ID de la acción.
5. userInflFile: ruta al archivo que contiene la información sobre la influenciabilidad del usuario. Cada línea debe contener 3 (tres) columnas, separadas por un espacio en blanco. Las mismas indican:
● Columna 1: ID del usuario. Debe ser un entero positivo.
● Columna 2: Número de acciones que el usuario realizó del conjunto de entrenamiento.
● Columna 3: Número de acciones que el usuario realizó del conjunto de entrenamiento, en las cuales no fue el iniciador. ● Columna 4: Es la división de la columna 3 sobre la 2 e indica la
influenciabilidad del usuario.
7. maxTuples: número máximo de tuplas en el log de acciones a ser consideradas. Se debe indicar el valor numérico 0 si se desean considerar todas.
8. truncation_threshold: Umbral de Truncamiento. Valores por debajo de este umbral son descartados del cómputo del crédito otorgado a nodos influyentes. En los experimentos de [38] se determina que el valor 0.001 obtiene muy buenos resultados, aunque este valor puede ser modificado. 9. budget: número de semillas que se desean determinar.
Como se puede apreciar algunos parámetros son básicos de la configuración como la cantidad de semillas, el umbral de truncamiento, la cantidad de interacciones a considerar, o el directorio donde crear el archivo de salida. Sin embargo, los que resultan de interés para destacar son los relacionados con el Grafo Social y el Log de Acciones. En la Figura 4.10 se ilustra la clase FilesBuilder.java, en la cual el método makeFiles() implementa la generación de los archivos necesarios. Estos incluyen graphFile , actionsFile, trainingActionsFile y userInflFile. Para el último archivo se utiliza la estructura del Grafo Social, mientras que para el primero de ellos, solo el Registro de Propagaciones. Para la generación del actionsFile se utilizan ambas estructuras.
Cabe destacar que se debe indicar un directorio en el cual guardar dichos archivos que luego debe coincidir con el directorio que selecciona las entradas para la ejecución del Influence Models (módulo que se analiza en la sección siguiente). Figura 4.10. Diagrama de clase que genera las entradas del Influence Models.
También puede apreciarse la existencia del método getOlderTime(), el cual se encarga de retornar el tiempo más antiguo registrado en el Log de Acciones. Este tiempo se utiliza para normalizar los valores de los demás tiempos. Es decir, el tiempo más antiguo se utiliza como valor 1, y en base a él se normalizan los demás. Esto es así, ya que la representación de los tiempos se encuentra en milisegundos desde el 1ro de Junio de 1970 y el Influence Models no permite valores extremadamente altos.