Interest Still High In the Netflix Algorithm Competition
circletimessquare brings us an update to the status of the million-dollar Netflix competition to develop a better algorithm for movie recommendations. We've discussed aspects of the competition since it started two years ago, but the New York Times has a lengthy overview of where it stands now.
"The Netflix competition is still going strong, with a vibrant, competitive roster of some 30,000 programmers around the globe hard at work trying to win the prize. The Times provides a look at some of the more obsessive searchers, such as Len Bertoni, a semi-retired computer scientist near Pittsburgh who logs 20 hours a week on the problem, oftentimes with the help of his children. There's also Martin Chabbert in Montreal: 'After the kids are asleep and I've packed the lunches for school, I come down at 9 in the evening and work until 11 or 12.' The article gets into the history of the search algorithm Netflix currently uses, and explores the hot commodity called 'singular value decomposition' that serves as the basis for most of the algorithms in competition."
It's actually not that hard to build an algorithm which works well. Following a demonstration at TechEd I built my own implementation using Python in about 2 hours (using a vector space algorithm) or so with reasonable results. The problem is that it is very difficult to win the prize.
The best thing about it is that you get a lot of data to play with. If you are interested in parallel algorithms and large data sets give it a go. Its surprisingly interesting and sucks you in. In fact I might go play with it now.
Each new algorithm takes on average three or four hours to churn through the data on the family's "quad core" Gateway computer.
Anyone who puts "quad core" in quotes like that is either clueless, or---when talking about Gateways---astoundingly ironic. It's kudos either way!
When Bertoni runs his algorithms on regular hits like Lethal Weapon or Miss Congeniality and tries to predict how any given Netflix user will rate them, he's usually within eight-tenths of a star
Makes me wonder how accurate my own ratings would be. The difference between clicking 3 or 4 stars is often very minor and arbitrary. At the end of a movie I might rate it something totally different than 20min later. Sounds like they're doing pretty good so far.
There's a sort of unsettling, alien quality to their computers' results ... But many categorizations are now so obscure that they cannot see the reasoning behind them. Possibly the algorithms are finding connections so deep and subconscious that customers themselves wouldn't even recognize them.
Realizing the program you wrote out-performs you and you can't explain why is a rather odd feeling.
got from this, even when it has to pay out the prize it will be very cheap against any going rate.
exactly this is spec work, plain and simple, anyone entering this kind of competition is selling themselves short
Is it really slavery if you can leave whenever you want?
How about they stop with the silly DRM and/or geoip limitations, and let everyone use the service who wants the service. That way they might get more balanced recommendations from more than just a small part of the world's population.
Since they don't have any personal information about the customer, this makes it very difficult. They could try to estimate both categories by looking at their previous rentals but what if they have very few pieces of data?
A teenaged girl is going to like NAPOLEON DYNAMITE much better than a 55 year old man.
So Netflix is purposely making this very difficult.
I opened up the RSS in tabs, saw "Incest Still High In t..." and couldn't resist immediately clicking.
And a short things that bugs me. Why does the "In" start with a capital letter, but "the" doesn't?
i usually do all my code comments like that. it's the same system that book titles use where important words and the first word start with a capital letter and all other important words are as well. in german they use every noun is capitalized and that's an interesting system too.
That's what I was thinking. This shows how a company with good management can really save money. Instead of the standard outsourcing-to-cheap-country thing, you get 30,000 people, many of them very bright and motivated, working on your problem for free, and you only have to pay when they are successful per your definition. What a bargain!
Why is it considered selling yourself short if you do work for free for a commercial entity... but not when you contribute to, say, FireFox, ThunderBird, Apache, the Linux kernel, and so forth and so on?
In both cases you are typically doing work for absolutely zilch as far as cash or prizes go. You may get a fuzzy warm feeling on the inside, you may simply enjoy doing the work (similar to the fuzzy warm feeling), maybe you enjoy the popularity it gives you. On rare occasions, maybe the work you do there lands you a job further down the line but that's not really something you can bank on. In both cases, you are also doing work somebody else -could- have been doing, for actual pay. I won't get into an argument of whether doing work for free means you're 'stealing jobs' - fact simply is that Netflix -is- getting a lot of work done practically for free that they would otherwise have had to hire somebody for; you would have to agree as otherwise "selling themselves short" would not apply.
So yes, you're doing work that should be landing you some cold hard cash when you...
- devise a matching algorithm for Netflix
- create a video for Radiohead
- submit photos to a Canon photo competition that they are then free to use in any and all marketing material aka ads regardless of whether your photo actually won that competition.
But isn't that pretty much the status quo that many here -want- to go to? Those making their money with proprietary programming, creating arts, etc. are dinosaurs in dying business models, no?
(only semi-flamebait)
It's not selling yourself short to work on FOSS for a very simple reason. Work on FF, or Thunderbird, or open-sourcing a script that I wrote to convert music is free at the point of delivery. That is, anyone can use it without paying. Freely given, and freely distributed.
However, in this case the user of the algorithm is paying Netflix. Netflix takes the work that I have done, and closes it off from other people. My work goes not to benefit the community, but merely to benefit one company - a company that has paid me (cheaply) for my work. Since companies by definition only care about the bottom line, their intent is not to benefit the community, but to benefit themselves. You are effectively working for them for cheap, selling yourself short.
If netflix were to give away the algo for use by anyone else too, then it would be very generous and then you may be able to make a comparison with FOSS. I( have no idea if they will do that or not. However, if I were a shareholder, I would not want them to give away a potentially killer feature for which they paid $1m.
Saying that, if you enjoy playing with this, go ahead! Just be honest with yourself about. If you still want to do it, wallow in it. But it's an extremely pernicious thing to do to link this with working on something that is done to benefit everyone. It simply is not the same thing.
I understand this principle, but I'm asking why is a preposition more important than a determiner?
My wife and I don't share much in common in movies. She likes academy award winners, I like "ridiculous stupid movies that I'm to old to be watching". Since we share a netflix account, our incompatable likes and dislikes mess up the predictions.
The problem with the Netflix prize, and I myself am working on it :-) is that it is pretty darn near impossible to do better than what they have.
It is based on user ratings and how close you can come to actual user ratings. For instance, their record set has a frozen point in time, you job is to create a system that will accurately predict what another person will rate a movie in the future.
It doesn't take much psychology to understand that these are very subjective values. If you watch a movie on a "good" date, you'll rate it higher than if you watch the same movie with a "bad" date. Then there's the level of drunkenness under which you watch the movie. The day you had at work. How much money you lost in the stock market, etc.
In aggregate, you can come close, but the percentage of variability in the data suggests that Netflix chose their numbers well enough to never have to pay the prize.
Also, the "data" is nothing more than movie titles and obfuscated user ratings. Any sort of contextual or meta data about the movies you have to go find yourself.
It is a fun project on which to work, but I'm dubious of the end prize. I'll keep working on it because its fun, but I have my doubts as to the winability of the contest based on the criteria for success.
Actually Netflix closes nothing off. In fact, in order to receive the prize, the winner must publish their algorithm to the public. The winner could easily open-source the entire thing, or OTOH they're also free to patent it out the wazoo and start pimping it out. The only condition Netflix imposes is that Netflix gets a non-exclusive license to use the algorithm in exchange for the prize money, which is eminently reasonable.
main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
Saying that, if you enjoy playing with this, go ahead! Just be honest with yourself about. If you still want to do it, wallow in it. But it's an extremely pernicious thing to do to link this with working on something that is done to benefit everyone. It simply is not the same thing.
Exactly. Working on FOSS is a magnanimous thing to do. You are giving freely to the entire world -- anyone who needs done what your particular code does. It's volunteerism.
When you participate in the Netflix competition, you might not be getting paid, but the work you're doing benefits only Netflix and you -- if you win the $1 million prize, that is. There are side benefits even if you don't win the million dollar prize -- you increase your own abilities in the areas of programming, mathematics, critical thinking, etc.
But that's the only place where there are similarities in working on FOSS, and it's where the similarities end. At the end of the day, doing the Netflix competition is spec work at best. If you exclude the $1m -- which is very cheap, BTW, The sole beneficiary is Netflix.
But if you write something that benefits others in the world who share your problem and distribute that freely to the world, the beneficiary is the entire world, or at least some portion of it.
My blog
I don't know which company you work for, but despite how much I might save or earn for my company I never receive a million dollars compensation.
Any openings in your uncle penny bags org?
"You should always go to other people's funerals; otherwise, they won't come to yours." -- Yogi Berra
function get_rating( int movie_flags )
{
int rating;
rating = 0;
if ((movie_flags & MADE_BY_RIAA_MEMBERS) == 0) /* todo */
{
}
return rating;
}
That's remarkably reasonable. If I was LOVEFiLM or Amazon I'd be cackling with glee. I'm not though, so I'll just be depressed that one could hope to patent an algorithm. Not hardware that carries out an algorithm, but just an algorithm.
Although if I were a netflix shareholder I'd be pissed off that the company were giving away my funded research for free, when they could probably get it closed off and reap the rewards. Mind you, the amount of publicity that they have received - I know about Netflix now and I don't watch DVDs or live in the USA! - is probably more than worth it...
I've used netflix on video over the internet for a year or two now. The way to solve the problem is to break the star ratings up into a few different categories. You can always leave an "overall" rating for the lazy people, but if someone really wants netflix to "get to know them" they need to be more specific about what they like in the movie.
.... OMG! The special FX were done with PBRUSH, and they used the microphone that was built into the directors handy cam the whole time. Yes, it was that crappy, I actually had to show this movie to other people so they would believe me. I'm not a producer or anything, but I could shit on a paper plate and kick it against a clean white wall, and that would make a better movie. Merc force.... I will never forget you.
Right now neflix tries to infer what it was in the movie you liked by looking at other movies. Why not just ask what they liked about the movie.
For instance, I'm very concerned about the production quality in a movie. The movie may have the best plot ever and great actors but it was shot on a home VHS camera. I would give the movie a 1 star because the production quality was so bad, on the other hand someone who likes plots may have rated it a 5 star. Now netflix will never know if I rated it 1 star because I don't like the genre or don't like the acting or the cinematography. It just sees I rated the whole movie as a 1 and any movies that have similar elements then lose their importance on my personal ratings. If I could tell netflix: don't show me movies shot on a VHS camera (e.g.: production 1 star) then I could tell netflix I love the genre, love the plot hate the production.
A good example is Blood Ryane - this movie absolutely sucks (insert government sponsored movies jab here), but I like the genre - now if I give this one star, as it deserves, netflix will think I really don't like the... whatever, it's most likely going to be wrong about it because it's pure conjecture.
I'm not a big movie nerd so I wouldn't be the best person to come up with the rating categories, but I'll give it a shot since this will never occur:
1. Production Quality
2. Plot
3. Directing
4. Acting
5. Genre
Of course this will never happen because netflix will not change their system to conform to my random idea on slashdot. And by this sentence I've just about exhausted all my interest in the subject.
One last comment: Why are all the online netflix movies so craptastic? Really, if it wasn't made 15 years ago, and it's in the "watch instantly" section, then it must really suck. They had a movie on there called "merc force"
In the same vein, a 55 year old man is going to like a teenaged girl much better than NAPOLEON DYNAMITE.
In Soviet Russia, NAPOLEON DYNAMITE likes YOU? :)
Not only that, but they're getting free advertising off the back of it too. Slashdot have run the story at least twice, and I'll bet the other tech magazines covered it a few times too.
Right now Netflix execs are laughing all the way to the bank, and their competitors are kicking themselves that they never thought of this.
Somebody thoroughly deserves their bonus for thinking of this one.
I'm sure they'd be interested in this - after all, a similar problem exists for YouTube/GVideo rankings, (which are not great, based on my experience). Of course, if they have/ever do crack it, they'd hardly hand it over to Netflix.
Maybe it's the 'Napoleon Dynamite' factor mentioned in the article - perhaps humans are too strange to be completely understood after all. Good news if you've been wearing a tinfoil hat ever since seeing 2001 or Terminator...
I agree that there's a big factor in ratings beyond genre, plot, and actors. Some of the quirky movies they mentioned like Napoleon Dynamite, Life Aquatic, and Lost in Translation have a certain something that makes them good movies (to me) beyond those factors.
Maybe you could link some movies by who mixed the audio or designed the costumes. Maybe you should give more weight to where a director is in their career than to who the director is. Or maybe it's something else that defines the spirit of a movie.
There are probably some customers who are strongly in tune with that factor and other customers who will love a movie with an interesting plot regardless of how crappy the flow and mood is. I reckon that discerning between those customers will help with the Napoleon Dynamite problem. But it would be hard to address it with multidimensional stars if we don't even know what to call it.
As one individual, I spent a lot of work on the contest at the beginning, but I'm now thankful I didn't waste more time, given that there are corporate entries such as ATT to compete against (with all their resources and database staff to assist in the contest). It must be nice to be employed and working on something interesting like this during "work" hours while the rest of us have to do normal (i.e., boring) IT work for our employers.
Congratulations on winning the Netflix prize.
Or are you talking about a hypothetical million dollars? At least your company pays you for the work you do incrementally, rather than for the best answer.
Nerd rage is the funniest rage.
You capitalize most of the words in your comments??? I hate you. I really really really hate you, and all the people like you that do the same thing. Comments are there for humans to read. If it is worth explaining, it is worth writing a real actual sentence about it. Most people don't write normal sentences with most of the words capitalized for one reason: It's freakin' hard to read, especially when all the other sentences are that way! So for the sake of the sanity of those who have to maintain your code (and read your comments) after you're gone, stop it!!!
Comment removed based on user account deletion
Comment removed based on user account deletion
I understand this principle, but I'm asking why is a preposition more important than a determiner?
"The" is an article not a determiner nor a decider, Mr. Bush. ;-)
I can't code but I like to play with mah balls doot doot doot!
Oops. One small problem that invalidates most of what you said.
First, a company is not a "self." Second, a company is run to profit the people that put capital at risk (i.e. the owners of the company.) Those are the "selves" that are being rewarded. Why shouldn't people that put capital at risk be rewarded for their effort? Third, the company is providing a benefit to everyone. They are providing a good product at a fair price. If they weren't, then it wouldn't be a successful company.
I still contend that the basics are no longer taught in school.
Articles are a subgroup of determiners.
Comment removed based on user account deletion
Actually Netflix closes nothing off. In fact, in order to receive the prize, the winner must publish their algorithm to the public. The winner could easily open-source the entire thing, or OTOH they're also free to patent it out the wazoo and start pimping it out. The only condition Netflix imposes is that Netflix gets a non-exclusive license to use the algorithm in exchange for the prize money, which is eminently reasonable.
In order for an invention to be patentable it must be new as defined in the patent law, which provides that an invention cannot be patented if: âoe(a) the invention was known or used by others in this country, or patented or described in a printed publication in this or a foreign country, before the invention thereof by the applicant for patent,â or âoe(b) the invention was patented or described in a printed publication in this or a foreign country or in public use or on sale in this country more than one year prior to the application for patent in the United States .http://www.uspto.gov/web/offices/pac/doc/general/index.html#whatpat
The outliers are a major problem, but you can't just ignore them and move on. Collectively they add up to most of the error.
The training data set includes 116,362 user ratings of Napoleon dynamite; the distribution is:
The weighted average of these ratings is 3.4, and the math works out that when you only guess one value, the RMSE minimizes at the average. So in this case, a guess of 3.4 on all of those ratings gives you a 1.3025 RMSE for the data shown above. Most movies have an RMSE below 1.1.
Now suppose we try to refine our guess by using a coinflip method. In this model, we can look at the split 12/345 and assign ratings of 25%@1.54 and 75%@4.02. But what happens when we apply these without having any knowledge of which category each person falls? We end up doing worse! The problem is that even though you're only giving a 1.54 a quarter of the time, 3/4 of that 1/4 you're guessing a 1.54 for someone that actually ranked it a 3, 4, or 5. The error for 5 is especially bad, since 5 - 1.54 = 3.46, and then you have to square that! Overall, across the distribution, a guess of 1.54 ends up having an RMSE of 2.27, and the guess of 4.02 has an RMSE of 1.44. Applied together at 25% and 75% respectively you'll get sqrt(25% * 2.27^2 + 75% * 1.44^2) = 1.69 RMSE. Alternately we could use the 123/45 split: 48.5%@2.25 and 51.5%@4.48, but that turns out worse still since you'll end up with sqrt(48.5% * 1.74^2 + 51.5% * 1.69^2) = 1.71 RMSE.
The qualifying set asks for 10,551 guessed ratings of Napoleon dynamite out of 2,817,131 guessed ratings total. So if you can't figure out anything else about the ratings and have to go with the median vote, your error will include 10,551 * (1.3025)^2 = ~17,900 SSE (sum of squared error) from Napoleon Dynamite alone. The coin flip methods mentioned above would give over 30,000 SSE.
To put this in greater perspective: To win $1e6, you need to get below (0.8563)^2 * 2,817,131 = 2,065,660 SSE. The current leader has (0.8616)^2 = 2,091,310 SSE, and the 10th place team has (0.8677)^2 * 2,817,131 = 2,121,027 SSE. Thus the leader is only 25,650 SSE away from the prize, and the 10th place team is only 29,717 behind that at 55,367 SSE away.
So if the leaders were all using 3.4 as their guess for Napoleon Dynamite, and then they suddenly figured out a way to reduce the RMSE of their guesses for that one movie to 0.86, they'd be able to knock off 10,000 points of SSE -- just for the one movie. That's why they're so interested in "solving" the problem with outliers. However, odds are that they're already guessing in the 0.95 to 1.05 RMSE range for Napoleon, based on connections they've deduced about how each individual rated other movies.
Duh, because they also open source their (paid for) improvements? Its quid pro quo.
Yeah, there's also this line in the article:
If somebody were really smart, they'd develop the algorithm, skip the contest, and sell it to Netflix for quite a bit more than $1 million.
Maybe not
I'm sorry, what is your point? Nothing prevents you from patenting an algorithm *before* using it to win the prize. In fact, according to the section you quoted, you could even wait and file for the patent a year *after* winning the prize and publishing the algorithm.
main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}