Google

Blog Archive

Recent Comments

1/3/07

Defining social algorithm

The word social is currently in vogue, we have social networking, social software, social bookmarking, and now social algorithm. Social networking is the activity, social software are the tools which make social networking possible, but what is a social algorithm?
The following tries to define what a social algorithm is.

Social Networking.
Let us look at the examples. Famous social networking sites include Flickr, YouTube, MySpace, Friendster, Wikipedia, Facebook, del.icio.us and the the virtual gaming world of Second Life. Bookmarking and tagging are considered social network activities. The purpose of the network is for people to rendezvous, collaborate, or just sharing something (photos, music, movies, information, etc).

Social Software.
Social software are the tools which make it possible for people to network. These range from email, mailing lists, RSS, IRC, instant messaging, Napster like P2P, blogs, wikis, AJAX, Web 2, etc. Their characteristic is that the networking must be interactive, and bottom-up (users provide content). These software used to be called group-ware. Some of these software are quite old, but some others like blogs are more recent. Wikis have been around ever since Ward Cunningham, the father of Wiki started it, but it was then considered for geeks only, and have been accepted widely only in the last couple of years. Some software are documented using wikis, and businesses, educational institutions have started to make use of it.

Algorithms.
So, what is a social algorithm? An algorithm is like a cooking recipe or computer program with step-by-step instructions to execute a procedure. Algorithms
are stated in pseudo-code, easy for people to understand, and are more abstract than computer programs. The programs are said to implement some algorithm, being a machine level translation of the pseudo-code.

Although most algorithms are numerical, they need not be, as shown in cooking recipes, logical unification algorithm, string matching, face recognition, etc.

Agent based.
Social algorithms differs from general algorithms in that they involve agents, and the algorithm is the result of the interaction of the agents. The ant colony algorithm is an example, with ants as the agents, and used to solve some problem, such as the shortest path or the traveling salesman problem. Social algorithms can used for distributed problem solving as the ant colony algorithm, but need not be.

It is said that Google's PageRank algorithm is the decisive factor for Google to win the battle of the web. The PageRank algorithm ranks websites using many criteria, including the number of inbound links, each with a weight which is the PageRank of the referring site (the algorithm is recursive and almost real-time).
To have an idea of the algorithm, here is a description:

The original PageRank algorithm was described by Lawrence Page and Sergey Brin in several publications.
It is given by

PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))

where
PR(A) is the PageRank of page A,
PR(Ti) is the PageRank of pages Ti which link to page A,
C(Ti) is the number of outbound links on page Ti and
d is a damping factor which can be set between 0 and 1.

Since PageRank defines ranking of sites in a search, it affects many things, and in the last analysis, many people who derive income from the sites. Hence people, who are the agents here, try to modify their site parameters to increase their ranks. This is commonly known as SEO: search engine optimization.
This is an example where the algorithm provides rules for the social network, and in so doing modifies the agents behavior or actions. Abuse of the algorithm have occurred, in one case, someone builds websites based on (almost) links only with no content, but manages to get a high PageRank. Such anomalies will be probably be taken care of, as the PageRank algorithm is also evolving.

Internet auctions and reverse auctions such as provided by eBay, are also algorithms which provide the rules of the game, where we are the players.
Digg.com is a social bookmarking site, the original suggestion is given 1 digg, and people can digg again if they like the suggestion, or undug it if they don't. The number of diggs in indicative of the suggestion's popularity. This system will favor groups of people who collaborate to digg each other suggestions.

We see that social algorithms have weaknesses, often exploited by certain people. Hence the need for improving social algorithms.
Netflix is a famous case, they have offered one million dollars to anyone who can improve the accuracy of their existing algorithm by 10%.

Non human players and avatars.
Back to the definition of social algorithm as a multi-agent based algorithm, where the agents are people, we feel that this definition must be enlarged to include cases where people are substituted by animals or software surrogates. I would consider a simulation of the Digg algorithm, or a simulation of market trading using intelligent agents as social algorithms. So is the ant colony algorithm, which substitutes animals for people. Likewise swarms, flocks, etc.

Cellular automata is a border case, it is agent based all right, but often used to simulate physical, and chemical processes. If use to mimic human activity, it would be a social algorithm.

The evolution algorithm as an abstraction of the Darwinian process is also a social algorithm.
Genetic algorithms and its variations are included here.

Evolutionary Game Theory.
The field of social algorithms intersects with evolutionary game theory. Game theory studies strategies use by the agents, for example in trading, auctions, marketing, voting etc. The prisoner's dilemma sets a game for 2 prisoners, but it can be iterated and played in a population, which then becomes a social algorithm.

If you have ever played Second Life, you know how complicated social algorithms can be. In the virtual world, the whole life, including economics, relations, and property, is defined by algorithms.

Summary.
Social algorithm is a multi-agent based algorithm, where the the agents can be people, animals or software surrogates (avatars). It can used for distributed problem solving, for enforcing rules in social encounters, and for simulation of learning and evolution, and for the study of emergent properties.
Social algorithms are sometimes used, but not always, in social software.

Links:
Wikipedia on social software
Wikipedia on multi-agent systems
Wikipedia list of social networking sites
SwarmWiki
Plasticbag definition
Tracing the evolution of social software
Are you ready for social software?
Clay Shirky on Social Software and Politics of Groups
World's first social algorithm?
Agent and Individual based Modeling Resources
Google PageRank algorithm
Netflix offers $ 1 million prize for better movie picks
What is Second Life?
List of Wikis

4 komentar:

ScapeGoat said...
This post has been removed by the author.
ScapeGoat said...

Excellent link list on very interesting topics...

Keep up the good posts :)

David said...

Stan, nice summary post and as usual, interesting links! I'm putting "play with Swarm" on my to do list.

Here's another discussion of an interesting aspect of the "Wisdom Of Crowds" effect on Kathy Sierra's site.
Juxtaposing the language from your post, I would summarize her post as saying: be careful, you can have social software algorithms that make you dumber as well as those that make you smarter. They key is keeping the strength of the individual (human--so far...) agent intact.

stan said...

David, the piece by Kathy Sierra is very good. Her distinction between "collective intelligence" and "dumbness of the crowd" is important. I can add that it is the algorithm used which makes the difference. An averaging of opinions is definitely bad, a fuzzy cognitive map of expert opinions is better. Designing a programming language by committee, as in the case of PL/1, produces a bloated monster. All good programming languages, e.g LISP, Ruby, Java, Python, etc came out originally from the head of single person.

You mentioned somewhere that having a choice is good, so when an algorithm sucks, you can always opt out of the game (such as Second Life), or take advantage of it (in an ethical and legal way) by finding its loop holes, in other words, "hacking" it. Someone recently try to hack the Amazon book popularity algo by persuading people to join him to flood Amazon for a brief period at a certain time of the day, thereby gaining a popularity rank. See "Help Us Hack the Publishing System!" (http://www.worldchanging.com/). More such examples abound in other algorithms. I think these hackers do a good service in pointing out the silliness of the system, and in so doing, puts pressure for an improvement.

It is the same with all other algorithms, people find hacks, and the owner in turn adjusts the algorithm, and so on.
This can be seen as a meta-game about social algorithms, assuming we take the whole thing light-heartedly, as in "life is just a game" and in the Tonglen advice "treat everything between meditations as a dream."

The interesting thing about social algorithms here is: both algorithm and people's behavior can evolve giving rise to emergent properties, which could be totally unpredictable, just as in http://unintendedconsequences.blogspot.com/.