• No se han encontrado resultados

3.1 Fase de entrenamiento

3.1.2 Discretización y segmentación de actividades

3.1.2.2 Segmentación

Otro de los problemas que nos enfrentamos fue comparar actividades de diferente cantidad de eventos. Cuando una actividad se está realizando en tiempo real no se tiene el conjunto total de eventos que conforman dicha actividad. Esto genera que la comparación con las actividades entrenadas sea injusta, dado la diferencia de eventos que contie- ne cada una. Una de las posibles soluciones a dicho problema es segmentar cada actividad en partes más pequeñas [10].

El objetivo de la segmentación es dividir las actividades en segmentos más pequeños que la representen [22]. De esta forma las técnicas de machine learning pueden comparar partes iguales de información independientemente de la cantidad de eventos que posean las actividades. Cada segmento de la actividad está identificado por un valor

CAPÍTULO 3. ENFOQUE DE APR 40

numérico y contiene una cantidad N de eventos. APR permite definir la cantidad de eventos que contiene un seg- mento a través de un parámetro de configuración. Cuando N eventos son capturados por APR se procede a crear un segmento.

APR cuenta una cola del tamaño de segmento elegido donde se almacenan los eventos capturados. Cuando la cola se encuentra llena, APR genera un segmento. A cada segmento generado se le asigna un identificador numérico. De esta manera las actividades quedan representadas como una lista ordenada de números que hacen referencia a los segmentos que la componen.

Cada segmento generado por APR debe ser discretizado. Esto se debe a que las técnicas de machine learning son entrenadas con la información de la actividad discretizada. Como la actividad que se está realizando en tiempo real no contiene todos los eventos, la discretización se debe realizar por segmentos. De esta manera las técnicas pueden comparar las mismas porciones de información.

Siguiendo con el ejemplo y suponiendo un tamaño de segmento igual a 10, en la figura 3.1.12 se puede observar cómo queda la actividad CaminoInglés y el primer segmento generado al procesar los primero 10 eventos. Al ser el primer segmento, APR le asigna el identificador 1. Este segmento en particular está compuesto por una trayectoria discretizada en 5 grupos (1, 2, 3, 4 y 5), la fecha (6#Lunes) y un evento de información ( “_E:TempMedia” ).

Figura 3.1.12: Actividad CaminoInglés con su primero segmento generado

Cuando un nuevo evento es capturado, APR utiliza los últimos N-1 eventos almacenados en la cola (descartan- do el primero) y añade el nuevo. Como la cola vuelve a contener N eventos se genera un nuevo segmento. De esta manera la cola nunca se vacía. Como se puede observar en la figura 3.1.13, cuando APR recibe el evento ( “_E:TransitoBajo” ) genera un nuevo segmento con los 9 últimos eventos del segmento anterior. Como el nuevo segmento generado es prácticamente igual al anterior, no se agrega como nuevo segmento, sino que añade la nueva información generada al segmento anterior.

Figura 3.1.13: Segundo segmento generado para la actividad CaminoInglés

La información de dos segmentos que tienen características similares es unida por APR para formar un único segmento con el fin de evitar redundancia de información. Antes de almacenar el nuevo segmento dentro del perfil

CAPÍTULO 3. ENFOQUE DE APR 41

del usuario, APR verifica si se trata de un nuevo segmento o ya existe uno con características similares. El segmento será almacenado en el perfil con nuevo identificador solo si no se encontró, dentro de los segmentos almacenados, uno que sea similar. Para saber si dos segmentos son similares APR utiliza una heurística.

La heurística representada en el pseudocódigo3.2 nos determina si dos segmentos son similares. Para esto la heu- rística compara la fecha en la que se realizaron y la similitud de sus trayectorias (si son parecidas en un porcentaje mayor al 60 %, las trayectorias se consideran similares).

Algoritmo 3.2Comparar dos segmentos

input : Segmento A, B output : boolean begin

if ( getFechadeInicio (A) != getFechadeInicio (B)) return false

int min = min ( getLongitudTrayectoria (A), getLongitudTrayectoria (B)) trayectoria T = interseccion ( getTrayectoria (A), getTrayectoria (B )); int total = tamaño (T) / min ;

if ( total < 0.6) return false return true

end

Si la heurística retorna que los segmentos son similares se añade en el segmento almacenado aquella información nueva que aporte el nuevo segmento. Se toma como información nueva todos aquellos eventos de tiempo o de información (no posiciones) que pertenecen al nuevo segmento pero que no se encuentran en el segmento ya alma- cenado. El objetivo de agregar la información que aporten los segmentos nuevos a los ya almacenados, es poder comprender cuales son los eventos que son determinantes para cada segmento.

En base a esta heurística, el segundo segmento generado para la actividad CaminoInglés no es almacenado en el perfil ya que es similar al segmento 1. Sin embargo el evento “_E:TransitoBajo” del segundo segmento no se encuentra en el segmento 1 por lo que es agregado. Este cambio nos da la información de que el segmento 1 puede realizarse aunque haya poco tránsito. Luego de reconocer el nuevo segmento, la actividad CaminoInglés generada hasta el momento no sufre cambios, ya que el último segmento que la compone (segmento 1) es igual al nuevo segmento reconocido.

Siguiendo la lógica explicada en esta sección, APR procesa el resto de los eventos de la actividad CaminoInglés. En la figura 3.1.14 se puede observar cómo se representa la actividad CaminoInglés finalizada y los segmentos almacenados en el perfil del usuario.

CAPÍTULO 3. ENFOQUE DE APR 42

Figura 3.1.14: Resultado final luego de segmentar la actividad CaminoInglés

De la misma manera se crea y procesa la actividad Inglés. En la figura 3.1.15 se puede observar dicha actividad representada. Como se puede ver, la actividad Inglés contiene menos cantidad de posiciones, esto se debe a que la persona no realiza una trayectoria. De esta manera cuando se aplica el algoritmo de K-means, se genera un solo grupo. Como el grupo generado intersecta con el grupo 8 de la actividad CaminoInglés se utiliza el mismo identificador.

Figura 3.1.15: Resultado final luego de segmentar la actividad Inglés

Documento similar