{"action":"created","comment":{"url":"https://api.github.com/repos/mlpack/mlpack/pulls/comments/199499779","pull_request_review_id":133629118,"id":199499779,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5OTQ5OTc3OQ==","diff_hunk":"@@ -0,0 +1,171 @@\n+/**\n+ * @file regression_interpolation.hpp\n+ * @author Wenhao Huang\n+ *\n+ * Definition of RegressionInterpolation class.\n+ *\n+ * mlpack is free software; you may redistribute it and/or modify it under the\n+ * terms of the 3-clause BSD license.  You should have received a copy of the\n+ * 3-clause BSD license along with mlpack.  If not, see\n+ * http://www.opensource.org/licenses/BSD-3-Clause for more information.\n+ */\n+#ifndef MLPACK_METHODS_CF_REGRESSION_INTERPOLATION_HPP\n+#define MLPACK_METHODS_CF_REGRESSION_INTERPOLATION_HPP\n+\n+#include <mlpack/prereqs.hpp>\n+\n+namespace mlpack {\n+namespace cf {\n+\n+/**\n+ * Implementation of regression-based interpolation method. Predicting a user's\n+ * rating \\f$ r_{iu} \\f$ by it's neighbors' ratings can be regarded as solving \n+ * linear regression of \\f$ r_{iu} \\f$ on \\f$ r_{iv} \\f$, where v are u's\n+ * neighbors.\n+ *\n+ * For more information, see the following paper.\n+ *\n+ * @code\n+ * @inproceedings{bell2007improved,\n+ *  title={Improved neighborhood-based collaborative filtering},\n+ *  author={Bell, Robert M and Koren, Yehuda},\n+ *  booktitle={KDD cup and workshop at the 13th ACM SIGKDD international\n+ *      conference on knowledge discovery and data mining},\n+ *  pages={7--14},\n+ *  year={2007},\n+ *  organization={Citeseer}\n+ * }\n+ * @endcode\n+ */\n+class RegressionInterpolation\n+{\n+ public:\n+  /**\n+   * Empty Constructor.\n+   */\n+  RegressionInterpolation() { }\n+\n+  /**\n+   * Use cleanedData to perform necessary preprocessing.\n+   *\n+   * @param cleanedData Sparse rating matrix.\n+   */\n+  RegressionInterpolation(const arma::sp_mat& cleanedData)\n+  {\n+    const size_t userNum = cleanedData.n_cols;\n+    a.set_size(userNum, userNum);\n+    b.set_size(userNum, userNum);\n+  }\n+\n+  /**\n+   * The regression-based interpolation problem can be solved by a linear\n+   * system of equations. This method first calculates the coefficients and\n+   * constant terms for the equations and then solve the equations. The\n+   * solution of the linear system of equations is the resulting interpolation\n+   * weights (the first parameter). After getting the weights, CF algorithm\n+   * multiplies each neighbor's rating by its corresponding weight and sums\n+   * them to get predicted rating.\n+   *\n+   * @param weights Resulting interpolation weights. The size of weights should\n+   *     be set to the number of neighbors before calling GetWeights().\n+   * @param w Matrix W from decomposition.\n+   * @param h Matrix H from decomposition.\n+   * @param queryUser Queried user.\n+   * @param neighbors Neighbors of queried user.\n+   * @param similarities Similarites between query user and neighbors.\n+   * @param cleanedData Sparse rating matrix.\n+   */\n+  template <typename VectorType>\n+  void GetWeights(VectorType&& weights,\n+                  const arma::mat& w,\n+                  const arma::mat& h,\n+                  const size_t queryUser,\n+                  const arma::Col<size_t>& neighbors,\n+                  const arma::vec& /* similarities*/,\n+                  const arma::sp_mat& cleanedData)\n+  {\n+    if (weights.n_elem != neighbors.n_elem)\n+    {\n+      Log::Fatal << \"The size of the first parameter (weights) should \"\n+          << \"be set to the number of neighbors before calling GetWeights().\"\n+          << std::endl;\n+    }\n+\n+    const size_t itemNum = cleanedData.n_rows;\n+    const size_t neighborNum = neighbors.size();\n+\n+    // Coeffcients of the linear equations used to compute weights.\n+    arma::mat coeff(neighborNum, neighborNum);\n+    // Constant terms of the linear equations used to compute weights.\n+    arma::vec constant(neighborNum);\n+\n+    arma::vec userRating(cleanedData.col(queryUser));\n+    const size_t support = arma::accu(userRating != 0);\n+\n+    // If user has no rating at all, average interpolation is used.\n+    if (support == 0)\n+    {\n+      weights.fill(1.0 / neighbors.n_elem);\n+      return;\n+    }\n+\n+    for (size_t i = 0; i < neighborNum; i++)\n+    {\n+      // Calculate coefficient.\n+      arma::vec iPrediction;\n+      for (size_t j = i; j < neighborNum; j++)\n+      {\n+        if (a(neighbors(i), neighbors(j)) != 0)\n+        {\n+          // The coefficient has already been cached.\n+          coeff(i, j) = a(neighbors(i), neighbors(j));\n+          coeff(j, i) = coeff(i, j);\n+        }\n+        else\n+        {\n+          // Calculate the coefficient.\n+          if (iPrediction.size() == 0)\n+            // Avoid recalculation of iPrediction.\n+            iPrediction = w * h.col(neighbors(i));\n+          arma::vec jPrediction = w * h.col(neighbors(j));\n+          coeff(i, j) = arma::dot(iPrediction, jPrediction) / itemNum;\n+          if (coeff(i, j) == 0)\n+            coeff(i, j) = std::numeric_limits<double>::min();\n+          coeff(j, i) = coeff(i, j);\n+          // Cache calcualted coefficient.\n+          a(neighbors(i), neighbors(j)) = coeff(i, j);","path":"src/mlpack/methods/cf/interpolation_policies/regression_interpolation.hpp","position":136,"original_position":136,"commit_id":"9c19ddc7734d3aa5c2d12bcbeba58d87375f16aa","original_commit_id":"9c19ddc7734d3aa5c2d12bcbeba58d87375f16aa","user":{"login":"rcurtin","id":1845039,"node_id":"MDQ6VXNlcjE4NDUwMzk=","avatar_url":"https://avatars0.githubusercontent.com/u/1845039?v=4","gravatar_id":"","url":"https://api.github.com/users/rcurtin","html_url":"https://github.com/rcurtin","followers_url":"https://api.github.com/users/rcurtin/followers","following_url":"https://api.github.com/users/rcurtin/following{/other_user}","gists_url":"https://api.github.com/users/rcurtin/gists{/gist_id}","starred_url":"https://api.github.com/users/rcurtin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rcurtin/subscriptions","organizations_url":"https://api.github.com/users/rcurtin/orgs","repos_url":"https://api.github.com/users/rcurtin/repos","events_url":"https://api.github.com/users/rcurtin/events{/privacy}","received_events_url":"https://api.github.com/users/rcurtin/received_events","type":"User","site_admin":false},"body":"Actually, this has changed recently (for Armadillo 7+ I believe).  We implemented a 'cache' for Armadillo so that setting sparse matrix elements by, e.g., `x(a, b) = c` is faster.  Basically in the backend this fills out a `std::map<>`, which is synced with the actual CSC representation when necessary.  I don't have any particular opinions on how you do this here, but I thought I'd let you know since I saw the comment.\r\n\r\nIf you're interested in more details, here is a paper on how it works: http://www.ratml.org/pub/pdf/2018open.pdf","created_at":"2018-07-02T13:38:22Z","updated_at":"2018-07-02T13:38:22Z","html_url":"https://github.com/mlpack/mlpack/pull/1410#discussion_r199499779","pull_request_url":"https://api.github.com/repos/mlpack/mlpack/pulls/1410","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/comments/199499779"},"html":{"href":"https://github.com/mlpack/mlpack/pull/1410#discussion_r199499779"},"pull_request":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1410"}},"in_reply_to_id":199391840},"pull_request":{"url":"https://api.github.com/repos/mlpack/mlpack/pulls/1410","id":190628688,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkwNjI4Njg4","html_url":"https://github.com/mlpack/mlpack/pull/1410","diff_url":"https://github.com/mlpack/mlpack/pull/1410.diff","patch_url":"https://github.com/mlpack/mlpack/pull/1410.patch","issue_url":"https://api.github.com/repos/mlpack/mlpack/issues/1410","number":1410,"state":"open","locked":false,"title":"CF Interpolation Weights","user":{"login":"Wenhao-H","id":35588122,"node_id":"MDQ6VXNlcjM1NTg4MTIy","avatar_url":"https://avatars0.githubusercontent.com/u/35588122?v=4","gravatar_id":"","url":"https://api.github.com/users/Wenhao-H","html_url":"https://github.com/Wenhao-H","followers_url":"https://api.github.com/users/Wenhao-H/followers","following_url":"https://api.github.com/users/Wenhao-H/following{/other_user}","gists_url":"https://api.github.com/users/Wenhao-H/gists{/gist_id}","starred_url":"https://api.github.com/users/Wenhao-H/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wenhao-H/subscriptions","organizations_url":"https://api.github.com/users/Wenhao-H/orgs","repos_url":"https://api.github.com/users/Wenhao-H/repos","events_url":"https://api.github.com/users/Wenhao-H/events{/privacy}","received_events_url":"https://api.github.com/users/Wenhao-H/received_events","type":"User","site_admin":false},"body":"To do:\r\n\r\n- [x] Add `AverageInterpolation`, `SimilarityInterpolation`,  `RegressionInterpolation`.\r\n- [x] Add `LMetricSearch`, `CosineSearch`, `PearsonSearch`.\r\n- [x] Modify methods in `class CF` to use interpolation policies.\r\n- [x] Update tests.","created_at":"2018-05-25T15:48:32Z","updated_at":"2018-07-02T13:38:22Z","closed_at":null,"merged_at":null,"merge_commit_sha":"40a8cef89dce465c6ea4543eee691437ab528627","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/mlpack/mlpack/pulls/1410/commits","review_comments_url":"https://api.github.com/repos/mlpack/mlpack/pulls/1410/comments","review_comment_url":"https://api.github.com/repos/mlpack/mlpack/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mlpack/mlpack/issues/1410/comments","statuses_url":"https://api.github.com/repos/mlpack/mlpack/statuses/9c19ddc7734d3aa5c2d12bcbeba58d87375f16aa","head":{"label":"Wenhao-H:cf-interpolation","ref":"cf-interpolation","sha":"9c19ddc7734d3aa5c2d12bcbeba58d87375f16aa","user":{"login":"Wenhao-H","id":35588122,"node_id":"MDQ6VXNlcjM1NTg4MTIy","avatar_url":"https://avatars0.githubusercontent.com/u/35588122?v=4","gravatar_id":"","url":"https://api.github.com/users/Wenhao-H","html_url":"https://github.com/Wenhao-H","followers_url":"https://api.github.com/users/Wenhao-H/followers","following_url":"https://api.github.com/users/Wenhao-H/following{/other_user}","gists_url":"https://api.github.com/users/Wenhao-H/gists{/gist_id}","starred_url":"https://api.github.com/users/Wenhao-H/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wenhao-H/subscriptions","organizations_url":"https://api.github.com/users/Wenhao-H/orgs","repos_url":"https://api.github.com/users/Wenhao-H/repos","events_url":"https://api.github.com/users/Wenhao-H/events{/privacy}","received_events_url":"https://api.github.com/users/Wenhao-H/received_events","type":"User","site_admin":false},"repo":{"id":121396303,"node_id":"MDEwOlJlcG9zaXRvcnkxMjEzOTYzMDM=","name":"mlpack","full_name":"Wenhao-H/mlpack","owner":{"login":"Wenhao-H","id":35588122,"node_id":"MDQ6VXNlcjM1NTg4MTIy","avatar_url":"https://avatars0.githubusercontent.com/u/35588122?v=4","gravatar_id":"","url":"https://api.github.com/users/Wenhao-H","html_url":"https://github.com/Wenhao-H","followers_url":"https://api.github.com/users/Wenhao-H/followers","following_url":"https://api.github.com/users/Wenhao-H/following{/other_user}","gists_url":"https://api.github.com/users/Wenhao-H/gists{/gist_id}","starred_url":"https://api.github.com/users/Wenhao-H/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wenhao-H/subscriptions","organizations_url":"https://api.github.com/users/Wenhao-H/orgs","repos_url":"https://api.github.com/users/Wenhao-H/repos","events_url":"https://api.github.com/users/Wenhao-H/events{/privacy}","received_events_url":"https://api.github.com/users/Wenhao-H/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Wenhao-H/mlpack","description":"mlpack: a scalable C++ machine learning library -- ","fork":true,"url":"https://api.github.com/repos/Wenhao-H/mlpack","forks_url":"https://api.github.com/repos/Wenhao-H/mlpack/forks","keys_url":"https://api.github.com/repos/Wenhao-H/mlpack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Wenhao-H/mlpack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Wenhao-H/mlpack/teams","hooks_url":"https://api.github.com/repos/Wenhao-H/mlpack/hooks","issue_events_url":"https://api.github.com/repos/Wenhao-H/mlpack/issues/events{/number}","events_url":"https://api.github.com/repos/Wenhao-H/mlpack/events","assignees_url":"https://api.github.com/repos/Wenhao-H/mlpack/assignees{/user}","branches_url":"https://api.github.com/repos/Wenhao-H/mlpack/branches{/branch}","tags_url":"https://api.github.com/repos/Wenhao-H/mlpack/tags","blobs_url":"https://api.github.com/repos/Wenhao-H/mlpack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Wenhao-H/mlpack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Wenhao-H/mlpack/git/refs{/sha}","trees_url":"https://api.github.com/repos/Wenhao-H/mlpack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Wenhao-H/mlpack/statuses/{sha}","languages_url":"https://api.github.com/repos/Wenhao-H/mlpack/languages","stargazers_url":"https://api.github.com/repos/Wenhao-H/mlpack/stargazers","contributors_url":"https://api.github.com/repos/Wenhao-H/mlpack/contributors","subscribers_url":"https://api.github.com/repos/Wenhao-H/mlpack/subscribers","subscription_url":"https://api.github.com/repos/Wenhao-H/mlpack/subscription","commits_url":"https://api.github.com/repos/Wenhao-H/mlpack/commits{/sha}","git_commits_url":"https://api.github.com/repos/Wenhao-H/mlpack/git/commits{/sha}","comments_url":"https://api.github.com/repos/Wenhao-H/mlpack/comments{/number}","issue_comment_url":"https://api.github.com/repos/Wenhao-H/mlpack/issues/comments{/number}","contents_url":"https://api.github.com/repos/Wenhao-H/mlpack/contents/{+path}","compare_url":"https://api.github.com/repos/Wenhao-H/mlpack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Wenhao-H/mlpack/merges","archive_url":"https://api.github.com/repos/Wenhao-H/mlpack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Wenhao-H/mlpack/downloads","issues_url":"https://api.github.com/repos/Wenhao-H/mlpack/issues{/number}","pulls_url":"https://api.github.com/repos/Wenhao-H/mlpack/pulls{/number}","milestones_url":"https://api.github.com/repos/Wenhao-H/mlpack/milestones{/number}","notifications_url":"https://api.github.com/repos/Wenhao-H/mlpack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Wenhao-H/mlpack/labels{/name}","releases_url":"https://api.github.com/repos/Wenhao-H/mlpack/releases{/id}","deployments_url":"https://api.github.com/repos/Wenhao-H/mlpack/deployments","created_at":"2018-02-13T15:03:20Z","updated_at":"2018-06-27T14:46:30Z","pushed_at":"2018-07-02T07:34:34Z","git_url":"git://github.com/Wenhao-H/mlpack.git","ssh_url":"git@github.com:Wenhao-H/mlpack.git","clone_url":"https://github.com/Wenhao-H/mlpack.git","svn_url":"https://github.com/Wenhao-H/mlpack","homepage":"http://www.mlpack.org/","size":244252,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mlpack:master","ref":"master","sha":"a2c79090c68fe74ff7025a8ea5c4a1ec1ece821d","user":{"login":"mlpack","id":10216045,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwMjE2MDQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10216045?v=4","gravatar_id":"","url":"https://api.github.com/users/mlpack","html_url":"https://github.com/mlpack","followers_url":"https://api.github.com/users/mlpack/followers","following_url":"https://api.github.com/users/mlpack/following{/other_user}","gists_url":"https://api.github.com/users/mlpack/gists{/gist_id}","starred_url":"https://api.github.com/users/mlpack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlpack/subscriptions","organizations_url":"https://api.github.com/users/mlpack/orgs","repos_url":"https://api.github.com/users/mlpack/repos","events_url":"https://api.github.com/users/mlpack/events{/privacy}","received_events_url":"https://api.github.com/users/mlpack/received_events","type":"Organization","site_admin":false},"repo":{"id":28149409,"node_id":"MDEwOlJlcG9zaXRvcnkyODE0OTQwOQ==","name":"mlpack","full_name":"mlpack/mlpack","owner":{"login":"mlpack","id":10216045,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEwMjE2MDQ1","avatar_url":"https://avatars0.githubusercontent.com/u/10216045?v=4","gravatar_id":"","url":"https://api.github.com/users/mlpack","html_url":"https://github.com/mlpack","followers_url":"https://api.github.com/users/mlpack/followers","following_url":"https://api.github.com/users/mlpack/following{/other_user}","gists_url":"https://api.github.com/users/mlpack/gists{/gist_id}","starred_url":"https://api.github.com/users/mlpack/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mlpack/subscriptions","organizations_url":"https://api.github.com/users/mlpack/orgs","repos_url":"https://api.github.com/users/mlpack/repos","events_url":"https://api.github.com/users/mlpack/events{/privacy}","received_events_url":"https://api.github.com/users/mlpack/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mlpack/mlpack","description":"mlpack: a scalable C++ machine learning library -- ","fork":false,"url":"https://api.github.com/repos/mlpack/mlpack","forks_url":"https://api.github.com/repos/mlpack/mlpack/forks","keys_url":"https://api.github.com/repos/mlpack/mlpack/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mlpack/mlpack/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mlpack/mlpack/teams","hooks_url":"https://api.github.com/repos/mlpack/mlpack/hooks","issue_events_url":"https://api.github.com/repos/mlpack/mlpack/issues/events{/number}","events_url":"https://api.github.com/repos/mlpack/mlpack/events","assignees_url":"https://api.github.com/repos/mlpack/mlpack/assignees{/user}","branches_url":"https://api.github.com/repos/mlpack/mlpack/branches{/branch}","tags_url":"https://api.github.com/repos/mlpack/mlpack/tags","blobs_url":"https://api.github.com/repos/mlpack/mlpack/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mlpack/mlpack/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mlpack/mlpack/git/refs{/sha}","trees_url":"https://api.github.com/repos/mlpack/mlpack/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mlpack/mlpack/statuses/{sha}","languages_url":"https://api.github.com/repos/mlpack/mlpack/languages","stargazers_url":"https://api.github.com/repos/mlpack/mlpack/stargazers","contributors_url":"https://api.github.com/repos/mlpack/mlpack/contributors","subscribers_url":"https://api.github.com/repos/mlpack/mlpack/subscribers","subscription_url":"https://api.github.com/repos/mlpack/mlpack/subscription","commits_url":"https://api.github.com/repos/mlpack/mlpack/commits{/sha}","git_commits_url":"https://api.github.com/repos/mlpack/mlpack/git/commits{/sha}","comments_url":"https://api.github.com/repos/mlpack/mlpack/comments{/number}","issue_comment_url":"https://api.github.com/repos/mlpack/mlpack/issues/comments{/number}","contents_url":"https://api.github.com/repos/mlpack/mlpack/contents/{+path}","compare_url":"https://api.github.com/repos/mlpack/mlpack/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mlpack/mlpack/merges","archive_url":"https://api.github.com/repos/mlpack/mlpack/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mlpack/mlpack/downloads","issues_url":"https://api.github.com/repos/mlpack/mlpack/issues{/number}","pulls_url":"https://api.github.com/repos/mlpack/mlpack/pulls{/number}","milestones_url":"https://api.github.com/repos/mlpack/mlpack/milestones{/number}","notifications_url":"https://api.github.com/repos/mlpack/mlpack/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mlpack/mlpack/labels{/name}","releases_url":"https://api.github.com/repos/mlpack/mlpack/releases{/id}","deployments_url":"https://api.github.com/repos/mlpack/mlpack/deployments","created_at":"2014-12-17T18:16:59Z","updated_at":"2018-07-02T08:30:28Z","pushed_at":"2018-07-02T05:50:42Z","git_url":"git://github.com/mlpack/mlpack.git","ssh_url":"git@github.com:mlpack/mlpack.git","clone_url":"https://github.com/mlpack/mlpack.git","svn_url":"https://github.com/mlpack/mlpack","homepage":"http://www.mlpack.org/","size":243841,"stargazers_count":2249,"watchers_count":2249,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":819,"mirror_url":null,"archived":false,"open_issues_count":112,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":819,"open_issues":112,"watchers":2249,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1410"},"html":{"href":"https://github.com/mlpack/mlpack/pull/1410"},"issue":{"href":"https://api.github.com/repos/mlpack/mlpack/issues/1410"},"comments":{"href":"https://api.github.com/repos/mlpack/mlpack/issues/1410/comments"},"review_comments":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1410/comments"},"review_comment":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mlpack/mlpack/pulls/1410/commits"},"statuses":{"href":"https://api.github.com/repos/mlpack/mlpack/statuses/9c19ddc7734d3aa5c2d12bcbeba58d87375f16aa"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"rcurtin"}}