Friday, August 26, 2005

Collaborative Filtering in OSCommerce

One of the things that seems to be sorely lacking from just about every osC, or osC derivative is support for Collaborative Filtering. Collaborative filtering is the dynamic suggestion of products based on the customers browsing preferences compared against other customers that have similar interests.

For example, osCommerce offers the ability for registered users to provide a rating and a review of products, and displays these ratings and reviews to help you, as a new customer, get an idea of how other people enjoyed the product. Taken this concept a bit further, I’ve seen some osCommerce stores offer an average rating from all of the customers that have rated the product, so that you can quickly get an idea of what the average customers thinks. However, your interests might not be the same as the average customer’s interests. Therefore their rating might not be as relevant.

A very good example of this is at www.netflix.com. NetFlix is an online DVD renter. Netflix takes the ratigns that you provide, and gives you recommendations based on the kinds of movies that you like, and based on movies that other people liked that also like the kind movies that you like.

Sound complicated? Get used to it. In 5 years, I suspect that every major online retailer out there is going to utilize this type of powerful targeted marketing. If you only like to watch ‘Sci-Fi’ movies, doesn’t it makes sense that when you visit my site, I display suggestions for movies that are in that genre?

With this kind of enhanced suggestion marketing available, merchants can instantly boost their conversion ratios. And with pay per click, and other web advertising methods becoming more and more expensive, I’d want to try to be as specific as possible with the products I display, rather than randomly throwing up any product that strikes my fancy.

Obviously, using a customers ratings, and comparing those against categories, manufacturers, and other peoples ratings with similar interests are one way to by able to provide collaborative filtering. I’m sure there are others. I’d like to come up with a few of my own algorithms, and try to package them into one of the osC projects I’m working on. I’ll let you know how it goes. If you have any ideas, or experience working with collaborative filtering, let me know.

2 comments:

dreamscape said...

Using customer ratings, I'm not sure how well this would work for a small site... You'd have to literally be huge. Even looking at "huge" sites like Amazon or Netflix, the number of customer ratings compared to the number of customers/visitors is very very very very very small.

Even things like recommending other products customers bought who also bought said X product doesn't work very well on smaller sites.

Another possible way would be to track how often someone views a category, manufacturer, product, etc... you'd have to track this in a cookie, and at first the data would be difficult to interpret at best, but as they browsed the site more, their preferences would become clear.

The BBC's website does exactly this, or at least it used to. There is a PDF floating around the net called something like "The Glass Wall" that talks about their redesign of the site (I have a copy). One of the cool things they do is track how often you view a particular section. If you use the site alot, then you'll notice as time goes one, the sections you most view will become the most highlighted sections on the main page (their colors gets darker/bolder I think). And the sections you least view will become less visible over time.

Another cool thing that they do (or did), is the color scheme of the main page changes to match the main image.

Anyways I'm not sure if they still do this, but for most sites, tracking what a user does is probably the best way to know their preferences. One might also store this info in a database in order to make suggestions to people who have similar "viewing preferences" as others... but in this type of filtering you are essentially tracking a user's click path, number of times they view X page, etc, which could become very taxing on a database to do reporting

WizardsandWars said...

Great post, Josh. You're right, the number of reviews received is insufficient compared to the number of visitors to the website.

I like your thought aobut tracking category clicks in a cookie. The easiest, and probalby the first step would be to display only 'featured' products that are in the category that the customers frequents most often.

A progressive step from there might be to 'highlight' products that the customer has visited before, but has not yet purchased. I can see this as being a particularly useful 'reminder', nad I'm sure it would boost conversion.