We're still working this out, but check out Hunch
for a nice-looking decision system.
We are currently researching open-source collaborative filtering engines as a first step for WhosYourBallot.org. Here examples of the types of functionality we'd like:
- Given a subset of a voter's preferences on a ballot, find their likely preferences on all other measures.
- Given a subset of a voter's preferences on a ballot, find the top X organizations that match that voter's politics.
Given a subset of a voter's preferences on a ballot, find other voters (who have opted to make their profiles public) that match the voter's politics.
- Bonus: allow for matching on a per-issue basis (e.g. "housing") or even per-arbitrary-tag (e.g. "unfunded measures")
There are two main types of collaborative filtering: user
-based and item
-based. Wikipedia breaks down
how each of these are used. User-based collaborative filtering seems like it would be useful for feature #2, above, while item-based filtering seems ideal for #1. Here's more on item-based filtering from the article on the Slope One
When ratings of items are available, such as is the case when people
are given the option of ratings resources (between 1 and 5, for
example), [item-based] collaborative filtering aims to predict the ratings of one
individual based on his past ratings and on a (large) database of
ratings contributed by other users.
Note that even simpler algorithms are most suitable for binary rating data. It's still up in the air if we will be recording voting preferences as binary "Yes/No" data or as more-nuanced "ratings" ranging from "strongly agree" to "strongly disagree."
One question we are facing is whether there are complications of our model where nodes are not always peers. Some nodes are privileged (institutions.) We might sidestep this problem by not having any privileged nodes. Perhaps there will simply be a weighting system on top of the collaborative filter.
One advantage is that the number of things we are recommending is relatively small. The number of measures on a ballot is much lower than the number of books in a catalog, for example.
Some resources for research into Collaborative Filtering: