Robizzle01
Limp Gawd
- Joined
- Sep 30, 2005
- Messages
- 159
I'm looking to get started with the netflix competition (http://www.netflixprize.com) but the size of the data set is scaring me a little. I have several questions that came up while brainstorming about the problem.
First let me state that I am not planning on winning or even "doing well" in the netflix competition. I see it as a fun problem for me to play with over winter break and a good learning experience, so no flames please.
The set:
The data set is around 17,000 files totaling nearly 2gb. Each user and movie has been assigned a unique interger id. Ratings are provided such that we know the user's id, the movie's id, an integer value from 1-5 inclusive (the rating) and a timestamp for when that rating was given. I also plan to gather information from imdb about which categories each movie belongs to (action, adventure, drama, etc)
I have not parsed the data yet but from what I have read, the average user has provided less than 200 ratings which makes this a very sparse data set.
And now for my questions...
1) The algorithms that I am planning to implement will require me to be able to quickly pull information such as average user rating (across all movies), average rating for a movie
(across all users), and average movie rating for a movie type (ie action.)
I also have all sorts of statistics that I would like to run on the data such as "how many users have supplied 0 ratings, less than 5, less than 100?", "what is the average of all ratings supplied in a given month, year, or whatever time span I want?". These are just a few of the questions I would like to look into before even thinking about writting a movie recommender system. As such, I will need a quick way to play with the data -- I'm guessing you will all recommend using a database but I wanted to check before I spend time on it.
Since I only have experience with databases used by simple php and coldfusion websites (not by computation heavy applications) I would prefer to not use a database but I fear this is not going to be an option if I want the program to finish running any time this year. Is this the case? If so, i'd like to ask how some of you might lay out the database's tables.
I have never been formally taught about databases but it was my understanding that you should never have redundant data nor store values that can be easily calculated (such as an average or the number of times a user has given the rating "1" to a movie. However, for the sake of creating a program that runs quickly, wouldn't it be better if I calculated these values once (when I populate the database) and then my program would only have to run simple queries. The idea being that it is easier for me to do the calculations once and store them than it is to do the calculations at run time every time.
I had some more questions but this is more than a hefty post already and I wont bother with more questions unless I get some interest in the thread. Thanks in advance for any help you may give.
First let me state that I am not planning on winning or even "doing well" in the netflix competition. I see it as a fun problem for me to play with over winter break and a good learning experience, so no flames please.
The set:
The data set is around 17,000 files totaling nearly 2gb. Each user and movie has been assigned a unique interger id. Ratings are provided such that we know the user's id, the movie's id, an integer value from 1-5 inclusive (the rating) and a timestamp for when that rating was given. I also plan to gather information from imdb about which categories each movie belongs to (action, adventure, drama, etc)
I have not parsed the data yet but from what I have read, the average user has provided less than 200 ratings which makes this a very sparse data set.
And now for my questions...
1) The algorithms that I am planning to implement will require me to be able to quickly pull information such as average user rating (across all movies), average rating for a movie
(across all users), and average movie rating for a movie type (ie action.)
I also have all sorts of statistics that I would like to run on the data such as "how many users have supplied 0 ratings, less than 5, less than 100?", "what is the average of all ratings supplied in a given month, year, or whatever time span I want?". These are just a few of the questions I would like to look into before even thinking about writting a movie recommender system. As such, I will need a quick way to play with the data -- I'm guessing you will all recommend using a database but I wanted to check before I spend time on it.
Since I only have experience with databases used by simple php and coldfusion websites (not by computation heavy applications) I would prefer to not use a database but I fear this is not going to be an option if I want the program to finish running any time this year. Is this the case? If so, i'd like to ask how some of you might lay out the database's tables.
I have never been formally taught about databases but it was my understanding that you should never have redundant data nor store values that can be easily calculated (such as an average or the number of times a user has given the rating "1" to a movie. However, for the sake of creating a program that runs quickly, wouldn't it be better if I calculated these values once (when I populate the database) and then my program would only have to run simple queries. The idea being that it is easier for me to do the calculations once and store them than it is to do the calculations at run time every time.
I had some more questions but this is more than a hefty post already and I wont bother with more questions unless I get some interest in the thread. Thanks in advance for any help you may give.