Influence Maximization Simulation Testbed
Influence maximization (IM) is a fundamental problem in graph machine learning, that is used in analyzing the spread of epidemics, tracing gossip/propaganda spread and social media marketing. The goal is to find the most "influential" set of nodes in an influence network, where the influence of nodes probabilistically spreads to their neighbors. Our generalization, online influence maximization (OIM), learns the underlying influence network online and applies the multi-armed bandit paradigm from the online/reinforcement learning literature.
This library is implemented in Python and uses Cython to wrap around an existing C library called TIM+ as a coroutine. This library is free software and can be found here. TIM+ (approximately) solves the static IM problem with a known influence graph and can be swapped out for another static IM solver. Our implementation contains variations that consider limited feedback (OCIMP_Node) and costly feedback (OCIMP_Active) and is designed to be easily adaptable to accommodate novel OIM settings. This library was written in 2015-2016 as part of my undergraduate research and was used in a conference and a journal paper.
Since then, I have used this project as a reference to remind myself how to Cythonize an opaque C library in various future projects. While Cython has evolved significantly since then, the complexity of this wrapper layer is complex enough to cover tricky cases and simple enough to help remind the Cython syntax without drowning the reader in complexity.