{
  "id": 2900,
  "title": "What do you use to preprocess the data?",
  "url": "/competitions/MerckActivity/discussion/2900",
  "author_name": "Patrick Chan",
  "post_date": "2012-10-16T04:29:36.517000",
  "votes": 0,
  "comment_count": 18,
  "views": 18454,
  "content": "<p>Given that we are so close to the ending point, like to learn from all the experts here. &nbsp;Given the high dimensionality of the data assay inputs, what do you use for data dimension reduction ? &nbsp;Anyone use wavelets, pca, svd, isomap, tsne, sommap ? &nbsp;Love\r\n to hear your experiences. Personally, I use only near zero variance reduction. &nbsp;Time is really too short especially these have 15 sets of data...</p>\r\n<p>Thanks.</p>\r\n<p>Dr Patrick</p>\r\n<p>&nbsp;</p>",
  "messages": [
    {
      "id": 15731,
      "postDate": "2012-10-16T18:22:03.367Z",
      "content": "<p>nearZeroVar is a function in caret package in R which can be use to find those columns from the data for which variance is near to zero(or zero).</p>\r\n<p>So we can reduce the dimension of the data by removing those columns for which varaince is zero, becoz zero variance columns have unique values. So those column doesn't impact the output at all.</p>",
      "votes": 3
    },
    {
      "id": 174884,
      "postDate": "2017-04-13T04:26:56.347Z",
      "content": "<p>Correction: Centering by center of mass has been performed on all data, so Centering is certainly not needed. Here are a few pre-proccessing methods used for this problem <a href=\"http://yann.lecun.com/exdb/mnist/index.html\">in the literature</a>:\n1. De-skewing\n2. 16 x 16 pixel sampling\n3. Noise removal\n4. Blurring\n5. Shiftable edges</p>",
      "rawMarkdown": "Correction: Centering by center of mass has been performed on all data, so Centering is certainly not needed. Here are a few pre-proccessing methods used for this problem [in the literature][1]:\n1. De-skewing\n2. 16 x 16 pixel sampling\n3. Noise removal\n4. Blurring\n5. Shiftable edges\n\n\n  [1]: http://yann.lecun.com/exdb/mnist/index.html",
      "votes": -1,
      "replies": [
        {
          "id": 351183,
          "postDate": "2018-07-01T14:19:06.723Z",
          "content": "<p>Wrong competition dude. </p>",
          "rawMarkdown": "Wrong competition dude. ",
          "votes": 3
        }
      ]
    },
    {
      "id": 15743,
      "postDate": "2012-10-16T20:14:08.087Z",
      "content": "<p>My approach was simple. First I used a threshold to filter the columns by. For example, when the frequency of the second most frequent value in the column was below 100, I would remove that column. This is very similar to what nearZeroVar does, which I also\r\n tried later. The resulting &quot;good&quot; column lists from nearZeroVar and thresholding were largely overlapping.<br>\r\nIt would be nice to hear from someone who successfully used clever feature engineering though.</p>",
      "votes": 1
    },
    {
      "id": 26554,
      "postDate": "2013-07-01T23:59:43.193Z",
      "content": "<p>[quote=Shea Parkes;15899]</p>\r\n<p>We definitely loaded the data promptly into sparse matrices (&quot;Matrix&quot; package from R). The standard R tree ensembles (gbm &amp; randomForest) don't accept sparse matrices alas, so you still hit against either dimensionality reduction or RAM limits. I've tried\r\n to skim the python sci-learn docs, but couldn't get an adequately detailed level to understand if their tree algorithms accept sparse data. For dimensionality reduction, we just did a standard old SVD. We did a lot of work trying to adapt to the difference\r\n between testing and training data; I'm pretty sure this was done too simplistically and killed our chances. Just means I've got more reading to do on the subject.</p>\r\n<p>[/quote]</p>\r\n<p></p>\r\n<p>Scikit learn tree models don't take sparse matrices as input. &nbsp;That is a planned improvement but not in the current version or probably the next.</p>"
    },
    {
      "id": 15948,
      "postDate": "2012-10-19T12:18:56.053Z",
      "content": "<p>[quote=Shea Parkes;15899]</p>\r\n<p>We definitely loaded the data promptly into sparse matrices (&quot;Matrix&quot; package from R). The standard R tree ensembles (gbm &amp; randomForest) don't accept sparse matrices alas, so you still hit against either dimensionality reduction or RAM limits. I've tried\r\n to skim the python sci-learn docs, but couldn't get an adequately detailed level to understand if their tree algorithms accept sparse data. For dimensionality reduction, we just did a standard old SVD. We did a lot of work trying to adapt to the difference\r\n between testing and training data; I'm pretty sure this was done too simplistically and killed our chances. Just means I've got more reading to do on the subject.</p>\r\n<p>[/quote]</p>\r\n<p>&nbsp;</p>\r\n<p>I drowned in the same boat. Finally my best score was from an unweighted model. I spent almost all the time with different weighting models but unsuccessful.</p>"
    },
    {
      "id": 15899,
      "postDate": "2012-10-18T17:09:21.410Z",
      "content": "<p>We definitely loaded the data promptly into sparse matrices (&quot;Matrix&quot; package from R). The standard R tree ensembles (gbm &amp; randomForest) don't accept sparse matrices alas, so you still hit against either dimensionality reduction or RAM limits. I've tried\r\n to skim the python sci-learn docs, but couldn't get an adequately detailed level to understand if their tree algorithms accept sparse data. For dimensionality reduction, we just did a standard old SVD. We did a lot of work trying to adapt to the difference\r\n between testing and training data; I'm pretty sure this was done too simplistically and killed our chances. Just means I've got more reading to do on the subject.</p>"
    },
    {
      "id": 15893,
      "postDate": "2012-10-18T15:43:27.600Z",
      "content": "<p>I tried a home cooked algorithm to remove features that had no effect on the activity.<br>\r\nFor sets that had a &quot;baseline&quot;, any row that was close to the baseline and had features above a threshold value was used to marks those features as ineffective.</p>\r\n<p>Also, parsing the source data and saving as sparse matrices saved a lot of RAM and load time.</p>"
    },
    {
      "id": 15787,
      "postDate": "2012-10-17T05:46:18.287Z",
      "content": "<p>I didn't know about Caret or zero variance, so ended up cooking up my own scheme which I think accomplishes roughly the same thing.</p>\r\n<p>For each column count number of non-zero elements for train (trainNz) and test (testNz).<br>\r\nFor each column compute product trainNz * testNz<br>\r\nSort columns in increasing size of trainNz*testNz<br>\r\nStart removing the columns and keep going until you've removed 1.5% of the total trainNz * testNz sum</p>\r\n<p>This would remove roughly 80-90% of columns from each data set.</p>\r\n<p>I also did a row strip as I noticed that some of the rows had way different number of non-zero entries. Here I would strip any row in the train set which had less than the minimum number of non-zero entries in the testSet and above the maximum number of\r\n non-zero entries in the testSet. This didn't take out that many rows (roughly 5-30 per subset), but I think it did make an improvement. Though I never really cracked cross validation so can't say by how much.</p>"
    },
    {
      "id": 15775,
      "postDate": "2012-10-17T04:02:55.133Z",
      "content": "<p>Yes, removing zero variance variables was the only pre-processing that I did for this competition<br>\r\nSVD was of limited help only</p>"
    },
    {
      "id": 15760,
      "postDate": "2012-10-17T01:28:07.270Z",
      "content": "<p>@Sashi</p>\r\n<p>&nbsp;</p>\r\n<p>I am not using SVD in my final models but I tried using SVD, You are saying abslutely correct but SVD or Near Zero Variance didn't help me so much but I am pretty much happy about my score as I am just a starter. This competition taught me what we should\r\n do at first place, If I would have done all &nbsp;the things which I tried in last 4-5 days I would have have got my current score in the starting and would have tried to improve from their. Anyhow It was a great learning.</p>\r\n<p>&nbsp;</p>\r\n<p>Thanks</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>"
    },
    {
      "id": 15745,
      "postDate": "2012-10-16T21:16:07.693Z",
      "content": "<p>[quote=dmitrim;15743]</p>\r\n<p>My approach was simple. First I used a threshold to filter the columns by. For example, when the frequency of the second most frequent value in the column was below 100, I would remove that column. This is very similar to what nearZeroVar does, which I also\r\n tried later. The resulting &quot;good&quot; column lists from nearZeroVar and thresholding were largely overlapping.<br>\r\nIt would be nice to hear from someone who successfully used clever feature engineering though.</p>\r\n<p>[/quote]</p>\r\n<p>Interesting. I always learning something from these forums.</p>"
    },
    {
      "id": 15741,
      "postDate": "2012-10-16T19:27:55.097Z",
      "content": "<p>I've tried using no preprocessing and with SVD, but (on a tiny laptop with 4 gigs of ram and a lowly dual core processor) both took at least a week to compute.</p>"
    },
    {
      "id": 15740,
      "postDate": "2012-10-16T19:27:52.710Z",
      "content": "<p>[quote=Anand Thakur;15731]</p>\r\n<p>nearZeroVar is a function in caret package in R which can be use to find those columns from the data for which variance is near to zero(or zero).</p>\r\n<p>So we can reduce the dimension of the data by removing those columns for which varaince is zero, becoz zero variance columns have unique values. So those column doesn't impact the output at all.</p>\r\n<p>[/quote]</p>\r\n<p>Hi,</p>\r\n<p>If you are using svd &amp; if a column has near zero variance then doesn't that variable automatically get a nearzero weighting in the new dimensions extracted? I used to think this way and left the near zero variance variables in. Since filtering out the near\r\n zero varianace variables prior to svd seemed a little redundant.</p>"
    },
    {
      "id": 15716,
      "postDate": "2012-10-16T17:07:51.963Z",
      "content": "<p>[quote=Shinmagi;15710]</p>\r\n<p>I am completely new to data science. I am not using any data processing because I don't know how. It seems to work fine enough for me to be in top 10 on the public score board.</p>\r\n<p>What is the &quot;near zero variance&quot; technique mentioned above? Are we talking about centering and dividing the feature data for equalizing importance across features?</p>\r\n<p>[/quote]</p>\r\n<p>Thanks for this interesting Challenge and forum discussions. @<a class=\"x_x_x_x_x_profilelink\" title=\"View Shinmagi's profile\" href=\"http://www.kaggle.com/users/55048/shinmagi\">Shinmagi</a> impressive results, congratulation. You must be using supercomputer\r\n or something. I couldn't get basic benchmark to run on my 32-bit Windows PC. So I ended up picking columns that have the best correlation with Activity. It does better than Merck Internal Benchmark, but not good enough to be in top 80.<br>\r\n<br>\r\nI do want to know what is the &quot;near zero variance&quot; technique mentioned above too. Thanks.</p>"
    },
    {
      "id": 15710,
      "postDate": "2012-10-16T15:40:45.240Z",
      "content": "<p>I am completely new to data science. I am not using any data processing because I don't know how. It seems to work fine enough for me to be in top 10 on the public score board.\r\n</p>\r\n<p>What is the &quot;near zero variance&quot; technique mentioned above? Are we talking about centering and dividing the feature data for equalizing importance across features?</p>"
    },
    {
      "id": 15696,
      "postDate": "2012-10-16T06:50:19.860Z",
      "content": "<p>Hi</p>\r\n<p>&nbsp;</p>\r\n<p>I tried using SVD and near zero variance both. If you use near zero variance correctly and make prediction using it, you can easily achieve 0.45.</p>\r\n<p>SVD is not doing so well but it is helping to beat benchmark easily with any simple model like randomForest with 20 trees.</p>\r\n<p>There is one draw back of using near zero variance, some time one of the molecule is causing some shift even it's variance is near to zero(note it's not exactly zero, it's near to zero). I think it's better just to delete unique value columns from the data\r\n and then try SVD or other things. I think achieving 0.45 is easy only.</p>\r\n<p>&nbsp;</p>\r\n<p>Regards</p>\r\n<p>Thakur</p>"
    },
    {
      "id": 15690,
      "postDate": "2012-10-16T04:29:36.517Z",
      "content": "<p>Given that we are so close to the ending point, like to learn from all the experts here. &nbsp;Given the high dimensionality of the data assay inputs, what do you use for data dimension reduction ? &nbsp;Anyone use wavelets, pca, svd, isomap, tsne, sommap ? &nbsp;Love\r\n to hear your experiences. Personally, I use only near zero variance reduction. &nbsp;Time is really too short especially these have 15 sets of data...</p>\r\n<p>Thanks.</p>\r\n<p>Dr Patrick</p>\r\n<p>&nbsp;</p>"
    },
    {
      "id": 15754,
      "postDate": "2012-10-16T23:39:47.710Z",
      "rawMarkdown": "",
      "votes": 6,
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 15731,
      "author_name": "DataGeek",
      "author_url": "",
      "post_date": "2012-10-16T18:22:03.367000",
      "content": "<p>nearZeroVar is a function in caret package in R which can be use to find those columns from the data for which variance is near to zero(or zero).</p>\r\n<p>So we can reduce the dimension of the data by removing those columns for which varaince is zero, becoz zero variance columns have unique values. So those column doesn't impact the output at all.</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 174884,
      "author_name": "J.Jones",
      "author_url": "",
      "post_date": "2017-04-13T04:26:56.347000",
      "content": "<p>Correction: Centering by center of mass has been performed on all data, so Centering is certainly not needed. Here are a few pre-proccessing methods used for this problem <a href=\"http://yann.lecun.com/exdb/mnist/index.html\">in the literature</a>:\n1. De-skewing\n2. 16 x 16 pixel sampling\n3. Noise removal\n4. Blurring\n5. Shiftable edges</p>",
      "votes": -1,
      "replies": [
        {
          "id": 351183,
          "author_name": "ChadRBernier",
          "author_url": "",
          "post_date": "2018-07-01T14:19:06.723000",
          "content": "<p>Wrong competition dude. </p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 15743,
      "author_name": "dmitrim",
      "author_url": "",
      "post_date": "2012-10-16T20:14:08.087000",
      "content": "<p>My approach was simple. First I used a threshold to filter the columns by. For example, when the frequency of the second most frequent value in the column was below 100, I would remove that column. This is very similar to what nearZeroVar does, which I also\r\n tried later. The resulting &quot;good&quot; column lists from nearZeroVar and thresholding were largely overlapping.<br>\r\nIt would be nice to hear from someone who successfully used clever feature engineering though.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 26554,
      "author_name": "densonsmith",
      "author_url": "",
      "post_date": "2013-07-01T23:59:43.193000",
      "content": "<p>[quote=Shea Parkes;15899]</p>\r\n<p>We definitely loaded the data promptly into sparse matrices (&quot;Matrix&quot; package from R). The standard R tree ensembles (gbm &amp; randomForest) don't accept sparse matrices alas, so you still hit against either dimensionality reduction or RAM limits. I've tried\r\n to skim the python sci-learn docs, but couldn't get an adequately detailed level to understand if their tree algorithms accept sparse data. For dimensionality reduction, we just did a standard old SVD. We did a lot of work trying to adapt to the difference\r\n between testing and training data; I'm pretty sure this was done too simplistically and killed our chances. Just means I've got more reading to do on the subject.</p>\r\n<p>[/quote]</p>\r\n<p></p>\r\n<p>Scikit learn tree models don't take sparse matrices as input. &nbsp;That is a planned improvement but not in the current version or probably the next.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15948,
      "author_name": "José A. Guerrero",
      "author_url": "",
      "post_date": "2012-10-19T12:18:56.053000",
      "content": "<p>[quote=Shea Parkes;15899]</p>\r\n<p>We definitely loaded the data promptly into sparse matrices (&quot;Matrix&quot; package from R). The standard R tree ensembles (gbm &amp; randomForest) don't accept sparse matrices alas, so you still hit against either dimensionality reduction or RAM limits. I've tried\r\n to skim the python sci-learn docs, but couldn't get an adequately detailed level to understand if their tree algorithms accept sparse data. For dimensionality reduction, we just did a standard old SVD. We did a lot of work trying to adapt to the difference\r\n between testing and training data; I'm pretty sure this was done too simplistically and killed our chances. Just means I've got more reading to do on the subject.</p>\r\n<p>[/quote]</p>\r\n<p>&nbsp;</p>\r\n<p>I drowned in the same boat. Finally my best score was from an unweighted model. I spent almost all the time with different weighting models but unsuccessful.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15899,
      "author_name": "Shea Parkes",
      "author_url": "",
      "post_date": "2012-10-18T17:09:21.410000",
      "content": "<p>We definitely loaded the data promptly into sparse matrices (&quot;Matrix&quot; package from R). The standard R tree ensembles (gbm &amp; randomForest) don't accept sparse matrices alas, so you still hit against either dimensionality reduction or RAM limits. I've tried\r\n to skim the python sci-learn docs, but couldn't get an adequately detailed level to understand if their tree algorithms accept sparse data. For dimensionality reduction, we just did a standard old SVD. We did a lot of work trying to adapt to the difference\r\n between testing and training data; I'm pretty sure this was done too simplistically and killed our chances. Just means I've got more reading to do on the subject.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15893,
      "author_name": "Jonathan Anderson",
      "author_url": "",
      "post_date": "2012-10-18T15:43:27.600000",
      "content": "<p>I tried a home cooked algorithm to remove features that had no effect on the activity.<br>\r\nFor sets that had a &quot;baseline&quot;, any row that was close to the baseline and had features above a threshold value was used to marks those features as ineffective.</p>\r\n<p>Also, parsing the source data and saving as sparse matrices saved a lot of RAM and load time.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15787,
      "author_name": "s445203",
      "author_url": "",
      "post_date": "2012-10-17T05:46:18.287000",
      "content": "<p>I didn't know about Caret or zero variance, so ended up cooking up my own scheme which I think accomplishes roughly the same thing.</p>\r\n<p>For each column count number of non-zero elements for train (trainNz) and test (testNz).<br>\r\nFor each column compute product trainNz * testNz<br>\r\nSort columns in increasing size of trainNz*testNz<br>\r\nStart removing the columns and keep going until you've removed 1.5% of the total trainNz * testNz sum</p>\r\n<p>This would remove roughly 80-90% of columns from each data set.</p>\r\n<p>I also did a row strip as I noticed that some of the rows had way different number of non-zero entries. Here I would strip any row in the train set which had less than the minimum number of non-zero entries in the testSet and above the maximum number of\r\n non-zero entries in the testSet. This didn't take out that many rows (roughly 5-30 per subset), but I think it did make an improvement. Though I never really cracked cross validation so can't say by how much.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15775,
      "author_name": "Dr Kiran R",
      "author_url": "",
      "post_date": "2012-10-17T04:02:55.133000",
      "content": "<p>Yes, removing zero variance variables was the only pre-processing that I did for this competition<br>\r\nSVD was of limited help only</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15760,
      "author_name": "DataGeek",
      "author_url": "",
      "post_date": "2012-10-17T01:28:07.270000",
      "content": "<p>@Sashi</p>\r\n<p>&nbsp;</p>\r\n<p>I am not using SVD in my final models but I tried using SVD, You are saying abslutely correct but SVD or Near Zero Variance didn't help me so much but I am pretty much happy about my score as I am just a starter. This competition taught me what we should\r\n do at first place, If I would have done all &nbsp;the things which I tried in last 4-5 days I would have have got my current score in the starting and would have tried to improve from their. Anyhow It was a great learning.</p>\r\n<p>&nbsp;</p>\r\n<p>Thanks</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15745,
      "author_name": "Sashikanth Dareddy",
      "author_url": "",
      "post_date": "2012-10-16T21:16:07.693000",
      "content": "<p>[quote=dmitrim;15743]</p>\r\n<p>My approach was simple. First I used a threshold to filter the columns by. For example, when the frequency of the second most frequent value in the column was below 100, I would remove that column. This is very similar to what nearZeroVar does, which I also\r\n tried later. The resulting &quot;good&quot; column lists from nearZeroVar and thresholding were largely overlapping.<br>\r\nIt would be nice to hear from someone who successfully used clever feature engineering though.</p>\r\n<p>[/quote]</p>\r\n<p>Interesting. I always learning something from these forums.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15741,
      "author_name": "miguel",
      "author_url": "",
      "post_date": "2012-10-16T19:27:55.097000",
      "content": "<p>I've tried using no preprocessing and with SVD, but (on a tiny laptop with 4 gigs of ram and a lowly dual core processor) both took at least a week to compute.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15740,
      "author_name": "Sashikanth Dareddy",
      "author_url": "",
      "post_date": "2012-10-16T19:27:52.710000",
      "content": "<p>[quote=Anand Thakur;15731]</p>\r\n<p>nearZeroVar is a function in caret package in R which can be use to find those columns from the data for which variance is near to zero(or zero).</p>\r\n<p>So we can reduce the dimension of the data by removing those columns for which varaince is zero, becoz zero variance columns have unique values. So those column doesn't impact the output at all.</p>\r\n<p>[/quote]</p>\r\n<p>Hi,</p>\r\n<p>If you are using svd &amp; if a column has near zero variance then doesn't that variable automatically get a nearzero weighting in the new dimensions extracted? I used to think this way and left the near zero variance variables in. Since filtering out the near\r\n zero varianace variables prior to svd seemed a little redundant.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15716,
      "author_name": "Sarkis",
      "author_url": "",
      "post_date": "2012-10-16T17:07:51.963000",
      "content": "<p>[quote=Shinmagi;15710]</p>\r\n<p>I am completely new to data science. I am not using any data processing because I don't know how. It seems to work fine enough for me to be in top 10 on the public score board.</p>\r\n<p>What is the &quot;near zero variance&quot; technique mentioned above? Are we talking about centering and dividing the feature data for equalizing importance across features?</p>\r\n<p>[/quote]</p>\r\n<p>Thanks for this interesting Challenge and forum discussions. @<a class=\"x_x_x_x_x_profilelink\" title=\"View Shinmagi's profile\" href=\"http://www.kaggle.com/users/55048/shinmagi\">Shinmagi</a> impressive results, congratulation. You must be using supercomputer\r\n or something. I couldn't get basic benchmark to run on my 32-bit Windows PC. So I ended up picking columns that have the best correlation with Activity. It does better than Merck Internal Benchmark, but not good enough to be in top 80.<br>\r\n<br>\r\nI do want to know what is the &quot;near zero variance&quot; technique mentioned above too. Thanks.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15710,
      "author_name": "shinmagi",
      "author_url": "",
      "post_date": "2012-10-16T15:40:45.240000",
      "content": "<p>I am completely new to data science. I am not using any data processing because I don't know how. It seems to work fine enough for me to be in top 10 on the public score board.\r\n</p>\r\n<p>What is the &quot;near zero variance&quot; technique mentioned above? Are we talking about centering and dividing the feature data for equalizing importance across features?</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15696,
      "author_name": "DataGeek",
      "author_url": "",
      "post_date": "2012-10-16T06:50:19.860000",
      "content": "<p>Hi</p>\r\n<p>&nbsp;</p>\r\n<p>I tried using SVD and near zero variance both. If you use near zero variance correctly and make prediction using it, you can easily achieve 0.45.</p>\r\n<p>SVD is not doing so well but it is helping to beat benchmark easily with any simple model like randomForest with 20 trees.</p>\r\n<p>There is one draw back of using near zero variance, some time one of the molecule is causing some shift even it's variance is near to zero(note it's not exactly zero, it's near to zero). I think it's better just to delete unique value columns from the data\r\n and then try SVD or other things. I think achieving 0.45 is easy only.</p>\r\n<p>&nbsp;</p>\r\n<p>Regards</p>\r\n<p>Thakur</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 15754,
      "author_name": "",
      "author_url": "",
      "post_date": "2012-10-16T23:39:47.710000",
      "content": "",
      "votes": 6,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "15731": "",
    "174884": "Correction: Centering by center of mass has been performed on all data, so Centering is certainly not needed. Here are a few pre-proccessing methods used for this problem [in the literature][1]:\n1. De-skewing\n2. 16 x 16 pixel sampling\n3. Noise removal\n4. Blurring\n5. Shiftable edges\n\n\n  [1]: http://yann.lecun.com/exdb/mnist/index.html",
    "15743": "",
    "26554": "",
    "15948": "",
    "15899": "",
    "15893": "",
    "15787": "",
    "15775": "",
    "15760": "",
    "15745": "",
    "15741": "",
    "15740": "",
    "15716": "",
    "15710": "",
    "15696": "",
    "15690": "",
    "15754": ""
  }
}