Editing Machine Learning/Kaggle Social Network Contest
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
== Official Contest Links == | |||
* Overview: http://kaggle.com/socialNetwork | |||
* Data Details: http://kaggle.com/socialNetwork?viewtype=data (login required) | |||
== Official Data Downloads == | |||
* Official Training Data File: http://dl.dropbox.com/u/14895843/social-network-kaggle/social_train.csv | |||
* Official Test Data File: http://dl.dropbox.com/u/14895843/social-network-kaggle/social_test.txt | |||
* Official Sample Submission File: http://dl.dropbox.com/u/14895843/social-network-kaggle/sample_submission.csv | |||
== Status == | == Status == | ||
{| border="1" cellspacing="0" cellpadding="2" | {| border="1" cellspacing="0" cellpadding="2" | ||
Line 7: | Line 16: | ||
!|subpage | !|subpage | ||
|- | |- | ||
!| | !|Load data | ||
| started | | started | ||
| - | | - | ||
| [[/load data| Load data]] | | [[/load data| Load data]] | ||
|- | |- | ||
!|Choose problem representation | !|Choose problem representation | ||
| started | | started | ||
| | | - | ||
| [[/Problem Representation| Problem Representation]] | | [[/Problem Representation| Problem Representation]] | ||
|- | |- | ||
Line 35: | Line 33: | ||
!|fit to model | !|fit to model | ||
| 0% | | 0% | ||
| | | 11/24 | ||
| [[/model | Model]] | | [[/model | Model]] | ||
|- | |- | ||
!|Win competition | !|Win competition | ||
| 0% | | 0% | ||
| | | 11/24 | ||
| [[/what to do with all the money | Prize Plan]] | | [[/what to do with all the money | Prize Plan]] | ||
|} | |} | ||
== Key Contest Info == | == Key Contest Info == | ||
Line 68: | Line 57: | ||
Don’t despair if your first couple of solutions score low, this is an explorative process. | Don’t despair if your first couple of solutions score low, this is an explorative process. | ||
== | == Brainstorming on Process == | ||
* We shouldn't have a single approach to solving the problem. If people have ideas they should run with them and report back their success/failure to the group. The collaboration between our diverse ideas/approaches/experiences will be our strength in working together. | |||
* Since this is throw away code for this competition only, we need not get hung up on efficiency or elegant implementations. That said, if we hit a point where our code is not able to perform fast enough then we can address it at that point, instead of overengineering from the get-go. | |||
* Theo suggested that we start by using things like python/ruby scripts to massage the starting data set into something more useful (with more features), then analyse and visualize that using things like R. | |||
* Jared was wondering if people think it's legit to use the mailing list for discussion or if we should create a discussion list for the competition to prevent from spamming the main list with competition collboration? (Update: Maybe we can use wiki instead?) | |||
* Also, as we transform the dataset into different views, we are going to end up with some large files that we will be passing around to each other. Any suggestions on how to best do that? Jared has been using Dropbox (see dumps below). | |||
== Brainstorming on Strategy == | |||
* The dataset forms a graph of directed edges between vertices. At the core of this problem will performing analysis on that graph. The first intuitive approach we had come to mind was that the shorter the distance between two vertices using existing edges, the more likely it would be that an edge could/should exist between those vertices. | |||
* After the talk, Erin, Theo, and jared stumbled on the idea that some vertices might be uber-followers (meaning more outbound edges than the average vertex) and that some vertices might be uber-followees (meaning more inbound edges than average). This reminded us of PageRank for link graphs, so perhaps we can draw from techniques in that vein. The application of this in our problem, might be in weighting. For example, people who follow lots of people might be more likely to follow someone further out in their "network", where someone who doesn't follow many people might less likely to follow someone outside their "network". | |||
* Since the edges are directional, we know that it's possible for people to "follow" someone with out that person "following back". At first glance it might make sense that the reverse edges would be likely in cases like this. However consider a "hub" user with lots of followers who doesn't reciprocate with edges back to his followers, then the information of who follows him is less important in determining who he would follow. Conversely, for a user who commonly reciprocates with followbacks, then the information on who follows her might be useful in suggesting who she follow. | |||
== Useful Links == | |||
* http://en.wikipedia.org/wiki/Graph_theory#Graph-theoretic_data_structures | |||
* http://en.wikipedia.org/wiki/Glossary_of_graph_theory | |||
* On calculating in & outdegrees: [[http://books.google.com/books?id=CAm2DpIqRUIC&lpg=PA163&ots=HtNuxg3DOf&dq=calculate%20degree%20in%20%22directed%20graph%22%20OR%20digraph&pg=PA163#v=onepage&q=calculate%20degree%20in%20%22directed%20graph%22%20OR%20digraph&f=false|Google Book on Social Network Analysis]] | |||
* [[http://books.google.com/books?id=Ww3_bKcz6kgC&lpg=PA67&ots=aFSGYEjA_g&dq=calculate%20degree%20in%20%22directed%20graph%22%20OR%20digraph&pg=PP7#v=onepage&q&f=false | Another Google Book on Social Network Analysis]] | |||
* Matrix Digraph Algs: http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/graphIntro.htm | |||
* "Strongly Connected Components": http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/strongComponent.htm | |||
== Working Data Dumps == | |||
* Adjacency list based from the training data: | * Adjacency list based from the training data: | ||
http://dl.dropbox.com/u/14895843/social-network-kaggle/adj_list.out.csv | http://dl.dropbox.com/u/14895843/social-network-kaggle/adj_list.out.csv | ||
Line 78: | Line 87: | ||
First column: inbound vertex | First column: inbound vertex | ||
Remaining columns: list of vertices which point to it | Remaining columns: list of vertices which point to it | ||
Note: This is useful if interested in following the edges backwards quickly. | Note: This is useful if interested in following the edges backwards quickly. This is useful to load as a hashtable keyed on inbound vertex returning the list. | ||
== | == Possible Features == | ||
* | *nodeid | ||
* | *nodetofollowid | ||
* | *median path length | ||
* | *shortest distance from nodeid to nodetofollowid | ||
* | *inbound edges | ||
* | *outbound edges | ||
*clustering coefficient | |||
*reciprocation probability (num of edges returned / num of outbound edges) | |||
The response variable is the probability that the nodeid to nodetofollowid edge will be created in the future |