---
# System prepended metadata

title: 'Simulation: Preference Space and Category World'
tags: [research]

---

---
tags: research
---

# Simulation: Preference Space and Category World

## Problem setting

We imagine a number of users with preferences about what categories should be used to describe contributions to some shared mission.

More generally, there are many contexts in which a group of people want to categorize things, but we'll use **contribution categories** as a motivating example

The categories can conflict with each other (e.g., user1 would like to see "committed code to GitHub" recorded but user2 does not want this category to exist at all), 

Down the line, the categorization system may also include proposed parent-child (i.e. subcategory) relationships (e.g. user1 would like "fixed bug" and "fixed hard bug" to exists as separate categories, but "fixed hard bug" should be automatically treated as a subcategory of "fixed bug")

The goal is to produce a canonical graph that aggregates over different taxonomy preferences.

For any given set of contributors $C_i$, a subset of all possible contributors $C$, a given preference schema (i.e. in what format are preferences recorded) and a given aggregation mechanism, we can identify a canonical set of categories.

## Single Category Case
First, let's consider a case with this simplest possible "category space". How would this materialize in practice? It could materialize if a community is deciding to record something or not.

There is only ONE possible category. Users either want to record contributions from that single category, or want no categories at all (i.e., no recording at all). 

In other words, this is a binary vote for "should we record things, yes or no".

Options: $\varnothing, \{A\}$

For n users, we can fully describe the underlying preference space with single vector $[x_1, ..., x_n]$ with each $x_i \in {0,1}$. 

We can think about trying to solve the problem as making inference about a binomial variable: each user draws either a 0 or 1. The parameter $p$ is the fraction of users who want category A. We estimate $\hat{p}$ and select the canonical graph via a single threshold (intuitively, if more than half of contributors want the category, include it).

The main way this scenario could get more complicated is if each contributor is not given equal weights.

## Case 2: Two Possible Categories ($2^2$ combinations, 5 possible DAGs)
Next, we imagine a case with two categories "up for debate".


Later, we will more exhaustively consider the role of dimensionality reduction in the contribution categories problem, but for now we're just going to assume optimistically that the contributors have already agreed upon the two categories up for debate.


Options: $\varnothing, \{A\}, \{B\}, \{A,B\}$

Can model as two  binomial variables?
$p_A$ is ratio of people who like category A
$p_B$ is ratio of people who like category B

We can select our set of categories just by looking at $p_A$ and $p_B$ 


## Case 3

$\varnothing$
$\{A\}, \{B\}, \{C\}$ 
$\{A,B\}, \{A,C\}, \{B,C\}$
$\{A,B,C\}$ 

We could also impose constraints, like "a contributor must select at least 2 categories, so the only options are:
A, B | A, C | B, C | A,B,C "

# Won't category numbers constantly vary as contributors drop in and out?
The actual number of categories depends on the user population. A key idea is that one user might think of 5 new categories that don't appear at all yet. So in practice, we probably need to start off assuming there are *many categories*.

However, we have several arguments for starting with an exploration of very low category number experiments (i.e. 2 or 3 categories max).

- There is an inherent advantage to having low number of categories. i.e. we can assume every user is directly incentivized to keep # of categories lower whenever possible. Why? Contributors need to fill out contribution records, with drop-down menus or other selections. The cost of recording a contribution scales up with the # of categories
- Starting with lower number of categories makes early experiments cheaper, and lets us leverage spatial metaphors. If the preference space is only 2D or 3D, we can visualize our experiments as agents "meandering through preference space". Of course, we shouldn't sacrifice ecological validity for cuter simulations, but this is a real advantage for communicating simulation results to contributors.
- Dimensionality reduction: If we take an information theory approach to thinking about categories, there will surely be redundancy between categories. For a given category set and *empirical set of contribution records*, we can compress the category set.
    - e.g.: Users vote that they really wants categories A, B, C, and D. But in practice, every record marked A is also marked B. Every record marked C is also marked D. Can easily compress to two categories ${A,C}$
    -  (unless: users had important domain knowledge, and one day a rare "only category B" or "only category D" contribution popped up).


# How this simulation proceeds
We run a random initialise procedure:
 - Draw a starting "preference position" for each contributor
 - Draw or hard-code a starting aggregation mechanism, e.g. binary vote for each category
 - Calculate the initial "aggregate choice" (i.e., count the votes!)
 - Select a function taht captures noise in preference identification (how do I know if I'm a 9/10 or a 10/10 in terms of my support for Thing A) and tendency for preference to fluctuate


If no sub-categories are allowed, we're just sampling sets.

If sub-categories are allowed, we're sampling from all possible Directed Acyclic Graphs (DAGs).


We probably need to define a utility function or loss function that describes how "upset" someone is when the canonical taxonomy does not match their preference

Here's one: utility $u_i$ for user $i$ is given by the # of categories from their preference indiciator vector $x_i$ (i.e. all $x_i$ values are just 0 or 1) that appear in the aggregate set $X$

Here's another: preference vectors represent the total utility $u_i$ that $i$ gets from thing $k$

So $u_i = <u_{i,1}, u_{i,2}> = <5,10>$ means 5 points of happiness for thing 1 and 10 points of happiness for thing 2.

# Mechanisms
Threshold mechanism: if a category gets enough votes (e.g., greater > $0.5 * population$), it's included the collective taxonomy

Quadratic voting: each user get 100 (arbitrary) credits and can "vote to include" a category with quadratically increasing costs (4 credits for 2 votes, 9 credits for 3 votes...)


Important: if categories are drawn from free text, need to do some kind of de-duplication/merging so that e.g. if one person capitalizes and another doesn't things are treated as separate categories


# What are the main concerns a simulation can re-assure us about?

Given some distribution of preferences, will certain aggregation mechanisms trap us in local minima?


Equilibrium type question: number of categories


What happens when people update their preferred categories to "conform" to the "mainstream opinion".
(frame it as: agents who learn)®


# Hypotheses We Can test

**Preventing category explosion:**
* Quadratic voting or similar is probably the best way to naturally constrain the max # of categories, avoid category explosion
- Adding a cost to add new categories
- What happens if vary when certain constraints kick in: e.g. there's a cost to add categories, but ONLY after $x$ rounds (c.f. stability)
- Equilibrium type question: number of categories. Is there an optimal number of categories?
    
**Encouraging Stability**
- What choices penalize outliers in terms of stability
- What happens when people update their preferred categories to “conform” to the “mainstream opinion”.
(frame it as: agents who learn: "CategoryWorld")

**Preference Aggregation**

- Majority vote is nice, but probably does NOT match how "utility functions" operate
- Given some distribution of preferences, will certain aggregation mechanisms trap us in local minima?


## Discussion Questions Sep. 15
- Gotchas with representing taxonomy as sets (no sub-categories) and DAGs (yes subcategories)
    - What if these are vector spaces? Assume there's a blob behind the scenes, but we can suppose a map from "blob" to metric
    - imagine 7 metrics, space $|R^n$
    - Get data from people, in fact things aren't so separate. Values are co-linear... the world has inflows and outflows so things are connected by functions (would be nice if it's a linear operator or can be approximated as such!)
    - Start w/ the set-based approach, but then we can try vector representation... think about spans of vector spaces! Are there *enough dimensions* to capture the variety in the preferences we're observing... might be 3 vecs are co-linear, and then a 4th is orthogonal... a nice linear alg, signal-processing way to think about the underlying "preference space"
    - Get values generated by some "real-world" process, then figure out how to represent
    - Think as a dimensionality problem!!
    - find a metric that adds no additional information affects how people perceive it... even though 
- - 

## Sync Notes Sep 22
- agent-based model approach
    - forces us to write out assumptions 
- preferences visualized as a space
- understanding dimensionality of space
    - merging in our original language is like dimension reduction
    - is each dropdown menu option, aka discrete contribution type a dimension?
    - we can represent a taxonomy with dimensions
    - we could try to create word vectors
    - we could do clustering
- preference aggregation
    - deduplicating administrative overhead by understanding correlated dimensions
- categorization more difficult than equilbrium
    - is there an optimal number of contribution types
- wrote a utility function for individuals
    - and then this related to value assignment


## Additional thoughts Sep 24
- What are the assumptions about agent behavior?
    - What are the sources of utility agents get from changing the taxonomy?
        - Direct rewards (I do lots of "research" tasks, so I Want to make sure they appear in the taxonomy)
        - Value in terms of information, i.e. creating an efficient language to coordinate with
    - How do agents map their preferences into voting behavior?
        - Is this the main source of noise / uncertainty?

# Markdown from the sim2.jl file

One-liner pitch: a group of agents collectively decide how to categorize contributions.

## About the *preference space*
We assume each agent can either support or oppose the inclusion of a particular category. We represent as space with length 21 (intensity can range from -10 to +10).

An agent's position in preference space corresponds to the amount of utility from that category being included in the final taxonomy.

Assumptions:
- people can accurately guess how much utility they'll get from a category being included/rewarded.
- there are some constraints on how people move through preference space


## About the *agents*

What are the reasons why an agent would prefer a category to be included?
* inherently believes the category to be valuable (utility gained from better information sharing)
* utility gained from rewards
* minus cost of attention
* Social Influence

Examples of why an agent could have preference=10 for category X.
* They perform 10 units of contribution X and expect to receive $10 if X is included, but could lose out on that $10 if X is not included.
* They expect to get $10 worth of value out of tracking category X.

We start by abstracting this away and just assuming: people have different preference strengths! These are drawn from some random distribution, and futher shaped by a randomly drawn social network.

How to approximate the actual preference generations?
Option 1: normal distribution centered at 11 with stdev 5. (so 95 perecentile at 1 and 21).

An agent's 'true preferences' can be distinct from their cultivation records (votes).

## Related Work
- Thanks to Michael Zargham for pointing us towards prior work on Conviction Voting Algorithm: https://github.com/1Hive/conviction-voting-cadcad/blob/master/algorithm_overview.ipynb
- Of course, this work relates to much larger body of literature. We plan to write a much longer paper and/or blog post that will discuss other connections in much more detail.
- https://eckhartarnold.de/papers/2014_Social_Simulations/Whats_wrong_with_social_simulations.pdf


## About the "Collective Agents" (the voting mechanisms)

### Binary Vote

### Quadratic Voting

### Others?