{
  "fetched_at": "2026-10-24T08:13:17Z",
  "source_url": "https://www.kaggle.com/competitions/R/data",
  "pages": [
    {
      "name": "Custom",
      "content": "There are many obvious ways you can try to improve on our example model. For example, you might try:<div><ul><li>Using nearest neighbor methods over both packages and users.</li><li>Building a metric of maintainer quality and adding this predictor to the example logistic model.</li><li>Incorporating out-degree information from the graphs we're providing. The example model only uses in-degree information.</li><li>Using regularization to deal with the considerable correlation in the default predictors.</li></ul></div>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "data-description",
      "content": "",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "Beyond learning the basic syntax and idioms of a programming language, fluent programming requires the mastery of a large number of libraries that extend the functionality of the core language. For newcomers to a programming language, this poses a major challenge, as they must decide which libraries to invest their time into learning to use well. Given the sheer number of different libraries that are available for most popular programming languages and the considerable difficulty of determining their quality by simply inspecting their basic descriptions, this task can be a daunting one.<br /><br />We'd like you to build a library recommendation engine for R programmers, who usually refer to libraries as packages. We think that you can help neophyte R programmers by letting them know which packages are most likely to be installed by the average R user and what measurable properties of the packages themselves are able to predict this information. To train your algorithm, we're providing a data set that contains approximately 99,640 rows of data describing installation information for 1865 packages for 52 users of R. For each package, we've provided a variety of predictors derived from the rich metadata that is available for every R package. Your task is to model the behavior of the sample users for this training set of 1865 packages well enough that your predictions will generalize to a test data set, containing 33,125 rows. <br /><br />Using nothing more than simple data hacking, we think that you can radically improve upon the baseline model we're providing, which is a standard logistic regression that predicts the probability of a given package P being installed by a user U based on predictors derived from the package's metadata. But we are also providing you with a secondary data set that contains the unprocessed metadata, because we'd like to encourage you to dig deeper into the problem and use statistical analysis to find out what it is about a package that predicts whether it will be installed by the average user of a programming language. And, of course, particularly intrepid hackers can incorporate still more external information as the metadata we're using can be reproduced by spidering CRAN, the R package repository, directly and analyzing the raw source code for every existing R package.<br /><br />With that said, you are free to use whatever tools you wish, whether you prefer sophisticated modeling techniques or hacking metadata with regular expressions. We'll judge all contestants by their ability to predict whether a user U has package P installed. Whichever team achieves the highest AUC after four months on our test data set will win three UseR! books of their choosing.<br /><br />In order to be declared the winner of this contest, you must publicly release your final analysis code on <a mce_href=\"http://github.com/johnmyleswhite/r_recommendation_system\" href=\"http://github.com/johnmyleswhite/r_recommendation_system\">GitHub</a> as a fork of our example code. In addition, you will be required to document every step you've taken along the way. We're running this task to improve the lives of R programmers everywhere, so we'd like to make sure that any insights you discover are revealed to the entire world.<br /><br />This contest is being organized by the writers for <a title=\"Dataists\" mce_href=\"http://www.dataists.com/\" href=\"http://www.dataists.com/\">Dataists</a>, a new blog for data hackers.<br /><br /><b>Update, 18 October: </b>Towards the end of the competition, teams will have the opportunity to nominate five entries. It is the best of these five entries that counts toward a team's final position. A team's last five entries will be chosen by default if they don't nominate any entries.<br mce_bogus=\"1\" />",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "<span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\">Entries\r\n will be evaluated using the area under the receiver operator curve \r\n(AUC). AUC was first used by the American army after the attack on Pearl\r\n Harbour, to detect Japanese aircraft from radar signals.<br /><br />Today, \r\nit is a commonly used evaluation method for binary choose problems, \r\nwhich involve classifying an instance as either positive or negative (installed or not installed in this competitions). \r\nIts main advantages over other evaluation methods, such as the simpler \r\nmisclassification error, are:  </span><ul><li><span style=\"font-family: Helvetica,Arial,Geneva; font-size: small;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: small;\" class=\"Apple-style-span\"><span class=\"Apple-style-span\" style=\"font-size: 13px; line-height: 15px;\" mce_style=\"font-size: 13px; line-height: 15px;\"><span class=\"Apple-style-span\" style=\"font-family: sans-serif; line-height: 18px;\" mce_style=\"font-family: sans-serif; line-height: 18px;\">It's insensitive to unbalanced datasets (datasets that have more installeds than not-installeds or vice versa).</span></span></span></li><li><span style=\"font-family: Helvetica,Arial,Geneva; font-size: small;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: small;\" class=\"Apple-style-span\"><span class=\"Apple-style-span\" style=\"font-size: 13px; line-height: 15px;\" mce_style=\"font-size: 13px; line-height: 15px;\"><span class=\"Apple-style-span\" style=\"font-family: sans-serif; line-height: 18px;\" mce_style=\"font-family: sans-serif; line-height: 18px;\">For\r\n other evaluation methods, a user has to choose a cut-off point above \r\nwhich the target variable is part of the positive class (e.g. a logistic\r\n regression model returns any real number between 0 and 1 - the modeler \r\nmight decide that predictions greater than 0.5 mean a positive class \r\nprediction while a prediction of less than 0.5 mean a negative class \r\nprediction). AUC  evaluates entries at all cut-off points, giving better\r\n insight into how well the classifier is able to separate the two \r\nclasses.</span></span></span></li></ul><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\"><div><b>Understanding AUC<br /><br /></b>To\r\n understand the calculation of AUC, a few basic concepts must be \r\nintroduced. For a binary choice prediction, there are four possible \r\noutcomes:<br /><ul><li>true positive - a positive instance that is correctly classified as positive;</li><li><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\">false positive - a negative instance that is incorrectly\r\n classified as positive;</span></li><li><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\">true negative - a negative instance that is correctly\r\n classified as negative;</span></li><li><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\">false negative - a positive instance that is incorrectly\r\n classified as negative);</span></li></ul>These possibilities can be neatly displayed in a confusion matrix<span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\">:<br /></span>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<table class=\"mceItemTable\" style=\"border-collapse: collapse;\" mce_style=\"border-collapse: collapse;\" width=\"300\" border=\"1\" cellpadding=\"�\" cellspacing=\"�\">\r\n\r\n <col style=\"text-align: left;\" mce_style=\"text-align: left;\" span=\"4\" width=\"75\" />\r\n <tbody style=\"text-align: left;\" mce_style=\"text-align: left;\"><tr style=\"text-align: left;\" mce_style=\"text-align: left;\" height=\"14\">\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" width=\"75\" height=\"14\"><br /></td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" width=\"75\"><br /></td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" colspan=\"2\" class=\"xl25\" width=\"150\">actual class</td>\r\n </tr>\r\n <tr style=\"text-align: left;\" mce_style=\"text-align: left;\" height=\"13\">\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" height=\"13\"><br /></td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl27\"> </td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl28\"><b>P</b></td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl29\"><b>N</b></td>\r\n </tr>\r\n <tr style=\"text-align: left;\" mce_style=\"text-align: left;\" height=\"13\">\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" rowspan=\"2\" class=\"xl24\" width=\"75\" height=\"27\">predicted class</td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl30\"><b>p</b></td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl26\">true positive</td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl31\">false positive</td>\r\n </tr>\r\n <tr style=\"text-align: left;\" mce_style=\"text-align: left;\" height=\"14\">\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl32\" height=\"14\"><b>n</b></td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl33\">false negative</td>\r\n  <td style=\"text-align: center;\" mce_style=\"text-align: center;\" class=\"xl34\">true negative</td>\r\n </tr>\r\n\r\n</tbody></table>\r\n\r\n<br />The true positive rate, or recall,  is çalculated as the number of <b>true positives</b> divided by the <b>total number of positives</b>. When identifying aircraft from radar signals, it is proportion  that are correctly identified.<br /><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\"><br />The false positive rate is çalculated as the number of <b>false positives</b> divided by the <b>total \r\nnumber of negatives</b>. </span><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\">When identifying aircraft from radar signals, it is the rate of false alarms.<br /><br />If\r\n somebody makes random guesses, the ROC curve will be a diagonal line \r\nstretching from (0,0) to (1,1) - see the blue line in the figure below. \r\nTo understand this consider:<br /></span><ul><li><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\"> Somebody\r\n who randomly guesses that 10 per cent of all radar signals point to \r\nplanes. The false positive rate and the false alarm rate will be 10 per \r\ncent.</span></li><li><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\"><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\"> Somebody who randomly guesses that 90 per cent of \r\nall radar signals point to planes. The false positive rate and the false\r\n alarm rate will be 90 per cent.</span></span></li></ul><span class=\"Apple-style-span\" style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\" mce_style=\"font-family: Helvetica,Arial,Geneva; font-size: 13px; line-height: 15px;\">Meanwhile a perfect model will achieve a true positive rate of 1 and a false positive rate of 0. <br /><br /><img alt=\"area under the receiver operator characteristic curve\" src=\"@Url.GeneralImage('AUC.png')\" width=\"561\" height=\"550\" /><br /><br />While\r\n ROC is a two-dimensional representation of a model's performance, the \r\nAUC distils this information into a single scalar. As the name implies, \r\nit is calculated as the area under the ROC curve. A perfect model will \r\nscore an AUC of 1, while random guessing will score an AUC of around  of\r\n 0.5. In practice, almost all models will fit somewhere in between. <br /></span></div></span>",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Rules",
      "content": "\r\n\t<!-- Begin Base Rules -->\r\n    <h3>One account per participant</h3>\r\n    <p>You cannot sign up to Kaggle from multiple accounts and therefore you cannot submit from multiple accounts.</p>\r\n    <h3>No private sharing outside teams</h3>\r\n    <p>\r\n        Privately sharing code or data outside of teams is not permitted.\r\n        It's okay to share code if made available to all participants on the forums.\r\n    </p>\r\n    <h3>Team Mergers</h3>\r\n    <p>\r\n        Team mergers are allowed and can be performed by the team leader. In order to merge, the combined team must have a total submission count less than or equal to the maximum allowed as of the merge date. The maximum allowed is the number of submissions per day multiplied by the number of days the competition has been running.<br/>\r\n    </p>\r\n\r\n    <h3>Team Limits</h3>\r\n    <p>There is no maximum team size.</p>\r\n    <h3>Submission Limits</h3>\r\n    <p>You may submit a maximum of 2 entries per day.</p>\r\n    <p>You may select up to 5 final submissions for judging.</p>\r\n    <h3>Competition Timeline</h3>\r\n    <p>Start Date: <strong>10/10/2010 4:00 AM UTC</strong></p>\r\n    <p>Merger Deadline: <strong>None</strong></p>\r\n    <p>Entry Deadline: <strong>None</strong></p>\r\n    <p>End Date: <strong>2/8/2011 9:00 AM UTC</strong></p>\r\n\t<!-- End Base Rules -->\r\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}