Editing Machine Learning/Kaggle Social Network Contest

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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 6: Line 15:
!| target date
!| target date
!|subpage
!|subpage
|-
!|Lit review
| started
| -
| [[/lit review| Lit Review]]
|-
|-
|-
!|Load data
!|Load data
Line 17: Line 20:
| 11/24
| 11/24
| [[/load data| Load data]]
| [[/load data| Load data]]
|-
!|Describe network
| started
| 11/24
| [[/Network Description| Network Description]]
|-
|-
!|Choose problem representation
!|Choose problem representation
Line 43: Line 41:
| [[/what to do with all the money | Prize Plan]]
| [[/what to do with all the money | Prize Plan]]
|}
|}
== 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


== 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.


== Our Working Data Dumps ==
== 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.
        This is useful to load as a hashtable keyed on inbound vertex returning the list.
* Degree Features for all Nodes:
  http://dl.dropbox.com/u/14895843/social-network-kaggle/node_degree_features.csv
  First column: Node Id
  Second column: Outbound Degree (count of the number of outbound edges from node)
  Third column: Inbound Degree (count of the number of inbound edges to node)
  Note: You can think of these as number of followees and followers (respectively).
        Additionally, note that only the first 32.7k rows have 'followees'


== Useful Links ==
== Possible Features ==
* [[http://arxiv.org/abs/1011.4071 | Supervised Random Walks: Predicting and Recommending Links in Social Networks]]
*nodeid
* Matrix Digraph Algs: http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/graphIntro.htm
*nodetofollowid
* "Strongly Connected Components": http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/strongComponent.htm
*median path length
* http://en.wikipedia.org/wiki/Graph_theory#Graph-theoretic_data_structures
*shortest distance from nodeid to nodetofollowid
* http://en.wikipedia.org/wiki/Glossary_of_graph_theory
*inbound edges
* [[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]]
*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
Please note that all contributions to Noisebridge are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see Noisebridge:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)