I’m currently working on my dissertation which is centred around forecasting social conflict events. I’m using data from GDELT (Global Database of Events, Tone, and Language) to develop my forecasting model. For the sake of conveying the problem and limiting the length of this post, I have simplified the features used in my investigation. These can be summarised as follows:

(please feel free to skip the feature description to the end of this post indicated by "The Question" marked in bold if TL:DR)

Temporal Attribute:

  • FractionDate: Date of event [numerical].

Actor Attributes:

  • Actor1Type: The type of actor who performed the action [factor]. (e.g. Government, Rebels, Civilians, etc.)
  • Actor2Type: The type of actor who received the action [factor]. (e.g. Government, Rebels, Civilians, etc.)

Event Action Attributes:

  • EventClass: Verbal cooperation, material cooperation, verbal conflict, and material conflict encoded as 1,2,3,4 respectively [factor].
  • EventImpact: A numeric score from [-10,10] capturing the potential impact that type of event may have on the stability of a country [numerical].

Spatial Attributes:

  • ActionGeoLong: Longitude where the action took place [numerical].
  • ActionGeoLat: Latitude where the action took place [numerical].

The database is updated on a daily schedule and is roughly 50 MB on average for single days data. The data is filtered to include only events that took place in a single country, which decreases the file size to about 1-2 MB. These events are then aggregated on a weekly basis.

One notable modeling method to predict spatio-temporal data is by means of ConvLSTM models. These models have been successfully implemented in, for example, predicting precipitation or traffic flow. So the strategy that I have so far is:

  1. Aggregate the spatial data to generate weekly geographical heatmaps, showing the intensity (for the sake of simplicity, can be thought as a weighted product of frequency and EventImpact) of events for each EventClass. That is, you are left with a time series of 4 heatmaps similar to the ones below.

Series of heatmaps for each event type intensity

  1. Aggregate the actor data to generate weekly actor "Interaction" matrices [I]. These matrices show the intensity (yet again, can be thought as a weighted product of frequency and Eventimpact) of interaction between each actor for each EventClass. Actor 1 (performer) are on the rows and Actor 2 (receiver) are on the columns, therefore, [I]_{n,m} would mean the intensity of Actor n doing something to Actor m. (Note that these matrices won't be symmetrical, the intensity of actor n doing something to actor m, is different from actor m doing something to actor n). Then you are left with a time series of 4 matrices similar to the ones below:

enter image description here

The two above (geographical heatmaps and interaction matrices) will be the "input" to my model, and it should be able to predict the next weeks heatmap and interaction matrix given the history of events. In theory I should be able to construct ConvLSTM model for the geographical heatmaps or the interaction matrices separately. Therefore, the problem I am faced with is building a sort of ensemble of ConvLSTM which is able to learn from both input sources simultaneously.

The Question:

Is there a way to construct a ConvLSTM that can learn from two different "types" of input tensors? The first being a sequence of geographical heatmaps (with 4 channels), and the second being a matrix (also with 4 channels). If so, how would you implement this in Keras? It is very important that the model considers both sources in order to learn underlying mechanisms of the system. An example of the model Input and Output is provided below.

enter image description here

Thank you for taking the time to read. I would appreciate additional opinion or other applicable modeling methods very much.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.