Neeka research
Welcome to Neeka Social! At Neeka, our goal is to create healthier online communities and improve discourse over technological mediums. We believe that in the same way engagement-based algorithms create echo-chambers and divisive content, algorithms designed to promote social-health could help eliminate those things! We think the Neeka Consensus algorithm may be one such example. Please support us as we research solutions to the social media dilemma.
This page will be used to document our research on the Neeka Consensus algorithm.
If you have any questions, critiques, or suggestions about our research, please feel free to email us at research@neeka.social
Also if you want to support us, you can “buy me a coffee” at coff.ee/neeka
The name Neeka came from an attempt to shorten “anechoic” as in anechoic chamber which is the opposite of an echo-chamber. We also intend for it to refer to the Jainism philosophy of anekantavada, which states that the truth is complex and therefore you should search for it in diverse places.
The Neeka algorithm traverses the graph formed by user interactions on a social network. While doing so, it creates a sort of “DNA” for each user that can be used to represent their interests, views, and stances. User DNA is used to calculate specific statistics about consensuses on content: the diversity of users who like or dislike a piece of content and the polarity between users who like and dislike that content. Consensuses are weighed in favor of ideologically diverse groups and in favor of content that is less divisive.
We will show two of our tests here. One uses a simulation to test the algorithm and the other uses real-world vote data from Reddit.
We use the same evaluation method in each test. In both tests we assume the existence of two groups of users: GROUP0 and GROUP1. Each group has its own set of beliefs and interests which may are distinct from the other group. Each post is allocated values that represent the post’s affinity to each group. Posts can either be liked by both groups, disliked by both groups, or liked by one and not the other; and all by varying degrees.
With the group affinity of each post, we can calculate the theoretical ideal rankings of posts, optimizing for two statistics: agreement between user groups and apolarity. With those ideal rankings established, we calculate a percentage difference between those rankings and the rankings generated by both simple consensus and the Neeka algorithm.
We also are able to calculate the overall bias toward a user group for each ranking. We use this to calculate the neutrality of both simple consensuses and the Neeka algorithm.
To further demonstrate this algorithm, we will show examples of the posts most-promoted and most-demoted by the Neeka algorithm as it runs on the real-world Reddit data.
This test corresponds to the code here.
In this simulation, we generate 18535 synthetic posts and 17004 synthetic users, with each user making an average of 59 posts. There is a strong imbalance between the two groups of users, with GROUP0 composing about 70% of the user base and GROUP1 composing only about 30%. Here are the results:
simple_agreement: 76.63 %
neeka_agreement: 89.24 %
simple_apolar: 33.27 %
neeka_apolar: 45.04 %
simple_neutrality: 66.0 %
neeka_neutrality: 99.28 %
Here we see that the Neeka algorithm improves upon simple consensus significantly across all three statistics. We see a 12.61% improvement in the promotion of posts that the two groups agree upon and an 11.78% improvement in apolarity. We also see a 33.28% improvement in neutrality of the ranking, bringing Neeka’s neutrality extremely close to the ideal for that statistic.
Although we are only showing this one simulation as an example, these results are typical for simulations with the specified parameters.
For this test, we narrow the scope of our test to the large political subreddits /r/politics, /r/news, and /r/worldnews.
We don’t have “ground-truth” for the affinity values of each post or the membership of users in any ideological groups. It is not ideal, but we use the user embeddings the Neeka algorithm generates along with K-means clustering to cluster users into two groups. With group membership established, we are able to calculate the “affinity” values for each post based on user votes. This allows us to use the same metrics that we used in the simulation. However, “the proof is in the pudding” so we will provide a list of the titles most promoted and demoted by the Neeka algorithm over simple-consensus.
We ran several tests. We hypothesized that the density of the interaction graph might affect the performance of the algorithm so in each set, we restrain the samples in each test by enforcing two variables: the minimum number of votes per user and the minimum number of votes per post. By varying these parameters we change the graph density between each test.
We hypothesize that the agreement, apolarity, and neutrality statistics will be higher for the Neeka algorithm than for simple consensus. We hypothesize that less politically devisive content will be promoted by the Neeka algorithm than by the simple-consensus algorithm. We also hypothesize that the changes the Neeka algorithm makes will be in-favor of the idealogical minority.
In this test we enforce a minimum number of 4 votes per user and a minimum number of 4 votes per post. This results in a sample that contains 71048 posts and 17236 users.
This corresponds to the test run in this notebook.
Here are the results:
simple_agreement: 50.45 %
neeka_agreement: 65.77 %
change: 15.33 %
simple_apolar: 33.88 %
neeka_apolar: 49.21 %
change: 15.33 %
simple_neutrality: 70.66 %
neeka_neutrality: 91.46 %
change: 20.8 %
simple_group0_bias: 30.32 %
simple_group1_bias: 59.66 %
neeka_group0_bias: 46.31 %
neeka_group1_bias: 54.85 %
Below are the titles of posts that saw the most change between the Neeka algorithm and simple-consensus.
Most Promoted by Neeka Consensus over simple-consensus (most demoted by simple-consensus):
Most Promoted by simple-consensus over Neeka (most demoted by Neeka):
In this test we enforce a minimum number of 8 votes per user and a minimum number of 8 votes per post. This results in a sample that contains 35608 posts and 12656 users.
This corresponds to the test run in this notebook.
Here are the results:
simple_agreement: 46.21 %
neeka_agreement: 65.27 %
change: 19.06 %
simple_apolar: 33.42 %
neeka_apolar: 54.0 %
change: 20.58 %
simple_neutrality: 66.32 %
neeka_neutrality: 93.9 %
change: 27.58 %
simple_group0_bias: 24.84 %
simple_group1_bias: 58.52 %
neeka_group0_bias: 45.05 %
neeka_group1_bias: 51.15 %
Below are the titles of posts that saw the most change between the Neeka algorithm and simple-consensus.
Most Promoted by Neeka Consensus over simple-consensus (most demoted by simple-consensus):
Most Promoted by simple-consensus over Neeka (most demoted by Neeka):
In this test we enforce a minimum number of 16 votes per user and a minimum number of 16 votes per post. This results in a sample that contains 17500 posts and 7958 users.
This corresponds to the test run in this notebook.
Here are the results:
simple_agreement: 49.79 %
neeka_agreement: 61.8 %
change: 12.01 %
simple_apolar: 45.86 %
neeka_apolar: 58.98 %
change: 13.11 %
simple_neutrality: 79.41 %
neeka_neutrality: 90.19 %
change: 10.78 %
simple_group0_bias: 28.75 %
simple_group1_bias: 49.34 %
neeka_group0_bias: 39.09 %
neeka_group1_bias: 48.9 %
Below are the titles of posts that saw the most change between the Neeka algorithm and simple-consensus.
Most Promoted by Neeka Consensus over simple-consensus (most demoted by simple-consensus):
Most Promoted by simple-consensus over Neeka (most demoted by Neeka):
The statistics produced seem to support our major hypotheses. We see in all three tests that the Neeka algorithm significantly improves on each of the three statistics: agreement, apolarity, and neutrality. We also see that the Neeka algorithm boosts representation of the ideological minority in each test. The Neeka algorithm does not boost representation of the idealogical minority beyond the majority.
We see in the listing of post titles that the simple-consensus algorithm is more likely to promote posts that mention politically divisive figures than the Neeka algorithm. The titles promoted by simple-consensus seem to be a bit more politically inflamattory whereas the posts promoted by Neeka seem to be more matter-of-fact and seem to not touch on politically divisive issues as much.
We see that the performance of Neeka seems to improve between Test 1 and Test 2, but does not improve between Test 2 and Test 3, which seems to contadict our hypothesis concerning graph density.
There are further tests to be run. In our previous tests we assume the existence of only two ideological groups, but in the real-world there are many. Future tests will involve more than two groups.
The best test would be to run the Neeka algorithm on a website so the public can try it out themselves. The federated social networking platform Lemmy is open-source and may be an opportunity for us to implement Neeka in the real-world. If you would like to help with that, email us at research@neeka.social.
Thanks for making it all the way to the end! Well, actually… hopefully this is only the beginning! In any case, this is very early work so we appreciate your attention. Personally I am optimistic about the idea of making the internet a better place, but it will require a lot of work! If you want to help out you can email me at research@neeka.social.