Algorithmic Bias
The Algorithmic Bias model considers a population of individuals, where each individual holds a continuous opinion in the interval [0,1]. Individuals are connected by a social network, and interact pairwise at discrete time steps. The interacting pair is selected from the population at each time point in such a way that individuals that have close opinion values are selected more often, to simulate algorithmic bias. The parameter gamma controls how large this effect is. Specifically, the first individual in the interacting pair is selected randomly, while the second individual is selected based on a probability that decreases with the distance from the opinion of the first individual, i.e. directly proportional with the distance raised to the power -gamma.
After interaction, the two opinions may change, depending on a so called bounded confidence parameter, epsilon. This can be seen as a measure of the open-mindedness of individuals in a population. It defines a threshold on the distance between the opinion of the two individuals, beyond which communication between individuals is not possible due to conflicting views. Thus, if the distance between the opinions of the selected individuals is lower than epsilon, the two individuals adopt their average opinion. Otherwise nothing happens.
Statuses
Node statuses are continuous values in [0,1].
Parameters
Name |
Type |
Value Type |
Default |
Mandatory |
Description |
epsilon |
Model |
float in [0, 1] |
|
True |
Bounded confidence threshold |
gamma |
Model |
int in [0, 100] |
|
True |
Algorithmic bias |
Methods
The following class methods are made available to configure, describe and execute the simulation:
Describe
AlgorithmicBiasModel.
get_info
(self)
-
Describes the current model parameters (nodes, edges, status)
Returns: |
a dictionary containing for each parameter class the values specified during model configuration |
AlgorithmicBiasModel.
get_status_map
(self)
-
Specify the statuses allowed by the model and their numeric code
Returns: |
a dictionary (status->code) |
Execute Simulation
AlgorithmicBiasModel.
iteration
(self)
-
Execute a single model iteration
Returns: |
Iteration_id, Incremental node status (dictionary node->status) |
AlgorithmicBiasModel.
iteration_bunch
(self, bunch_size)
-
Execute a bunch of model iterations
Parameters: |
- bunch_size – the number of iterations to execute
- node_status – if the incremental node status has to be returned.
|
Returns: |
a list containing for each iteration a dictionary {“iteration”: iteration_id, “status”: dictionary_node_to_status}
|
Example
In the code below is shown an example of instantiation and execution of a AlgorithmicBiasModel model simulation on a random graph: we set the initial infected node set to the 10% of the overall population.
import networkx as nx
import ndlib.models.ModelConfig as mc
import ndlib.models.opinions.AlgorithmicBiasModel as ab
# Network topology
g = nx.erdos_renyi_graph(1000, 0.1)
# Model selection
model = ab.AlgorithmicBiasModel(g)
# Model configuration
config = mc.Configuration()
config.add_model_parameter("epsilon", 0.32)
config.add_model_parameter("gamma", 1)
model.set_initial_status(config)
# Simulation execution
iterations = model.iteration_bunch(200)