{
  "id": 664350,
  "title": "[2nd Place Solution] SVR with Polynomial Kernel & Signal Analysis",
  "content": "<h1>Polynomial SVR &amp; Non-Linear Signal Analysis</h1>\n<p>First, thanks to the competition organizers and congratulations to all participants.<br>\nThis solution focuses on understanding the <strong>distributional structure of the target</strong> and uncovering <strong>non-linear signals</strong> that are not captured well by standard correlation analysis or tree-based models.</p>\n<p>Rather than relying on Gradient Boosting Trees, this approach uses a <strong>Support Vector Regressor (SVR) with a Polynomial kernel</strong>, which proved especially effective for this dataset.</p>\n<hr>\n<h2>TL;DR</h2>\n<p>The key ideas behind this solution were:</p>\n<ul>\n<li>Careful analysis of the skewed target distribution  </li>\n<li>Explicit detection of non-linear feature signals  </li>\n<li>Choosing a model that <strong>implicitly captures feature interactions</strong>  </li>\n<li>Keeping the pipeline simple and stable  </li>\n</ul>\n<hr>\n<h2>1. Exploratory Data Analysis (EDA) &amp; Key Insights</h2>\n<h3>Target Distribution</h3>\n<p>The first step was analyzing the distribution of the target variable, <code>HOMELESS_RATE</code>.<br>\nComparing the <strong>mean and median</strong> revealed a noticeable skew, indicating that extreme values were influencing the distribution.</p>\n<p>This suggested that standard linear regression models would struggle, particularly in the tails.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F27467869%2Fd76a3f9f7fc641b83e285022f4b6418f%2FScreenshot%202025-12-24%20141741.png?generation=1766566077451197&amp;alt=media\" alt=\"\"></p>\n<p><strong>Decision:</strong><br>\nA logarithmic transformation was applied to the target to stabilize variance and reduce skew, improving model behavior during training.</p>\n<hr>\n<h3>Non-Linear Signal Detection</h3>\n<p>Instead of relying solely on Pearson correlation, which captures only linear relationships, the analysis included <strong>Mutual Information (MI)</strong> scores.</p>\n<p>This revealed several features with:</p>\n<ul>\n<li>Low linear correlation</li>\n<li>Strong non-linear dependency with the target</li>\n</ul>\n<p>Examples included demographic percentages related to veterans, race, and age groups.</p>\n<p><strong>Insight:</strong><br>\nImportant predictive signals existed in <strong>non-linear interactions</strong> that linear models would miss.\nThis directly motivated the choice of a non-linear kernel-based method.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F27467869%2Fab87ac0af88481ab7c466411bcfd1edc%2FScreenshot%202025-12-24%20140515.png?generation=1766565332411912&amp;alt=media\" alt=\"\"></p>\n<hr>\n<h2>2. Preprocessing Strategy</h2>\n<p>Because Support Vector Machines are distance-based models, preprocessing played a crucial role.</p>\n<p>The pipeline was designed to be:</p>\n<ul>\n<li><strong>Robust</strong> to missing values  </li>\n<li><strong>Numerically stable</strong>  </li>\n<li><strong>Compatible</strong> with kernel methods  </li>\n</ul>\n<p>Missing values were handled conservatively to avoid introducing bias, and all features were scaled into a consistent range to ensure balanced distance computations across dimensions.</p>\n<hr>\n<h2>3. Modeling Strategy</h2>\n<h3>Why Support Vector Regression?</h3>\n<p>A Support Vector Regressor with a <strong>Polynomial kernel</strong> was selected for several reasons:</p>\n<ul>\n<li>The dataset size was well-suited for kernel methods  </li>\n<li>Polynomial kernels naturally model feature interactions  </li>\n<li>No manual interaction engineering was required  </li>\n</ul>\n<p>Unlike tree-based models, which partition feature space hierarchically, the polynomial kernel projects features into a higher-dimensional space where complex demographic interactions become linearly separable.</p>\n<hr>\n<h3>Key Assumption</h3>\n<p>Homelessness rates are driven not by individual features in isolation, but by <strong>intersections of demographic groups</strong>.</p>\n<p>For example:</p>\n<ul>\n<li>Age × Race  </li>\n<li>Veteran status × Income proxy  </li>\n<li>Compound demographic percentages  </li>\n</ul>\n<p>The polynomial kernel captures these interactions implicitly, allowing the model to learn them directly from data.</p>\n<hr>\n<h2>4. Post-Processing &amp; Submission Integrity</h2>\n<p>Since the model was trained on a transformed target, predictions were converted back to the original scale before submission.</p>\n<p>Several safeguards were applied to ensure a valid submission:</p>\n<ul>\n<li>Non-negativity enforcement  </li>\n<li>Handling of numerical edge cases  </li>\n<li>Matching the competition’s expected target scale  </li>\n</ul>\n<p>These steps ensured that all predictions were physically meaningful and submission-safe.</p>\n<hr>\n<h2>5. Why This Approach Worked</h2>\n<p>The primary driver of performance was the model’s ability to <strong>capture smooth, high-order non-linear relationships</strong> in demographic data.</p>\n<p>Rather than relying on complex ensembles, this solution succeeded by:</p>\n<ul>\n<li>Choosing a model aligned with the data’s signal structure  </li>\n<li>Letting the kernel handle interactions automatically  </li>\n<li>Avoiding unnecessary model complexity  </li>\n</ul>\n<p>This resulted in a stable and competitive solution that generalized well.</p>\n<hr>\n<h2>Conclusion</h2>\n<p>This solution demonstrates that strong performance does not always require heavy ensembling or deep architectures.</p>\n<p>By:</p>\n<ul>\n<li>Understanding the target distribution  </li>\n<li>Detecting non-linear signals early  </li>\n<li>Selecting a model that matches the data  </li>\n</ul>\n<p>a relatively simple pipeline achieved top leaderboard performance.</p>\n<p>Thank you for reading, and I’m happy to discuss any part of the approach further.</p>",
  "comments": [
    {
      "id": 3381582,
      "author_name": "Deep Pulusani",
      "author_url": "",
      "post_date": "2025-12-25T00:18:42.653000",
      "content": "<p>Thanks for sharing!  Simply plotting the distribution of the target variable in this competition makes a big difference in coming up with a solution!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 3381610,
          "author_name": "Abhishek Godara",
          "author_url": "",
          "post_date": "2025-12-25T03:11:06.960000",
          "content": "<p><strong>Absolutely agree</strong> — and congratulations on the 🏆 top result!<br>\nPlotting the target early really helped guide the solution.<br>\nWould love to read a write-up of your approach if you decide to share it.</p>",
          "votes": 1,
          "replies": [
            {
              "id": 3381621,
              "author_name": "Deep Pulusani",
              "author_url": "",
              "post_date": "2025-12-25T03:45:02.233000",
              "content": "<p>yes i will plan on it after the holiday! thanks!</p>",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 3381538,
      "author_name": "David E.",
      "author_url": "",
      "post_date": "2025-12-24T21:25:22.020000",
      "content": "<p>Nicely done. Was you decision to use a log transform based on its' performance versus other transforms ?</p>",
      "votes": 2,
      "replies": [
        {
          "id": 3381609,
          "author_name": "Abhishek Godara",
          "author_url": "",
          "post_date": "2025-12-25T03:05:59.470000",
          "content": "<p>Thanks for the question. I compared several target transforms after scaling <code>HOMELESS_RATE × 100</code>.</p>\n<p>The raw target was heavily right-skewed. A log transform substantially reduced the tail while still preserving separation among high-rate regions.</p>\n<p>More aggressive power transforms (e.g. Yeo–Johnson) produced a more symmetric distribution, but they also over-compressed extreme values. Since high-homelessness regions carry real signal, I preferred the log transform as it offered a better trade-off between variance stabilization, interpretability, and robustness for SVR.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F27467869%2Fa8a3328d0c7f5468b4fb034d5167369c%2FScreenshot%202025-12-25%20082914.png?generation=1766631569164907&amp;alt=media\" alt=\"\"></p>",
          "votes": 1,
          "replies": []
        }
      ]
    }
  ],
  "comment_count": 5,
  "messages": [
    {
      "id": 3381321,
      "postDate": "2025-12-24T08:41:11.630Z",
      "content": "<h1>Polynomial SVR &amp; Non-Linear Signal Analysis</h1>\n<p>First, thanks to the competition organizers and congratulations to all participants.<br>\nThis solution focuses on understanding the <strong>distributional structure of the target</strong> and uncovering <strong>non-linear signals</strong> that are not captured well by standard correlation analysis or tree-based models.</p>\n<p>Rather than relying on Gradient Boosting Trees, this approach uses a <strong>Support Vector Regressor (SVR) with a Polynomial kernel</strong>, which proved especially effective for this dataset.</p>\n<hr>\n<h2>TL;DR</h2>\n<p>The key ideas behind this solution were:</p>\n<ul>\n<li>Careful analysis of the skewed target distribution  </li>\n<li>Explicit detection of non-linear feature signals  </li>\n<li>Choosing a model that <strong>implicitly captures feature interactions</strong>  </li>\n<li>Keeping the pipeline simple and stable  </li>\n</ul>\n<hr>\n<h2>1. Exploratory Data Analysis (EDA) &amp; Key Insights</h2>\n<h3>Target Distribution</h3>\n<p>The first step was analyzing the distribution of the target variable, <code>HOMELESS_RATE</code>.<br>\nComparing the <strong>mean and median</strong> revealed a noticeable skew, indicating that extreme values were influencing the distribution.</p>\n<p>This suggested that standard linear regression models would struggle, particularly in the tails.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F27467869%2Fd76a3f9f7fc641b83e285022f4b6418f%2FScreenshot%202025-12-24%20141741.png?generation=1766566077451197&amp;alt=media\" alt=\"\"></p>\n<p><strong>Decision:</strong><br>\nA logarithmic transformation was applied to the target to stabilize variance and reduce skew, improving model behavior during training.</p>\n<hr>\n<h3>Non-Linear Signal Detection</h3>\n<p>Instead of relying solely on Pearson correlation, which captures only linear relationships, the analysis included <strong>Mutual Information (MI)</strong> scores.</p>\n<p>This revealed several features with:</p>\n<ul>\n<li>Low linear correlation</li>\n<li>Strong non-linear dependency with the target</li>\n</ul>\n<p>Examples included demographic percentages related to veterans, race, and age groups.</p>\n<p><strong>Insight:</strong><br>\nImportant predictive signals existed in <strong>non-linear interactions</strong> that linear models would miss.\nThis directly motivated the choice of a non-linear kernel-based method.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F27467869%2Fab87ac0af88481ab7c466411bcfd1edc%2FScreenshot%202025-12-24%20140515.png?generation=1766565332411912&amp;alt=media\" alt=\"\"></p>\n<hr>\n<h2>2. Preprocessing Strategy</h2>\n<p>Because Support Vector Machines are distance-based models, preprocessing played a crucial role.</p>\n<p>The pipeline was designed to be:</p>\n<ul>\n<li><strong>Robust</strong> to missing values  </li>\n<li><strong>Numerically stable</strong>  </li>\n<li><strong>Compatible</strong> with kernel methods  </li>\n</ul>\n<p>Missing values were handled conservatively to avoid introducing bias, and all features were scaled into a consistent range to ensure balanced distance computations across dimensions.</p>\n<hr>\n<h2>3. Modeling Strategy</h2>\n<h3>Why Support Vector Regression?</h3>\n<p>A Support Vector Regressor with a <strong>Polynomial kernel</strong> was selected for several reasons:</p>\n<ul>\n<li>The dataset size was well-suited for kernel methods  </li>\n<li>Polynomial kernels naturally model feature interactions  </li>\n<li>No manual interaction engineering was required  </li>\n</ul>\n<p>Unlike tree-based models, which partition feature space hierarchically, the polynomial kernel projects features into a higher-dimensional space where complex demographic interactions become linearly separable.</p>\n<hr>\n<h3>Key Assumption</h3>\n<p>Homelessness rates are driven not by individual features in isolation, but by <strong>intersections of demographic groups</strong>.</p>\n<p>For example:</p>\n<ul>\n<li>Age × Race  </li>\n<li>Veteran status × Income proxy  </li>\n<li>Compound demographic percentages  </li>\n</ul>\n<p>The polynomial kernel captures these interactions implicitly, allowing the model to learn them directly from data.</p>\n<hr>\n<h2>4. Post-Processing &amp; Submission Integrity</h2>\n<p>Since the model was trained on a transformed target, predictions were converted back to the original scale before submission.</p>\n<p>Several safeguards were applied to ensure a valid submission:</p>\n<ul>\n<li>Non-negativity enforcement  </li>\n<li>Handling of numerical edge cases  </li>\n<li>Matching the competition’s expected target scale  </li>\n</ul>\n<p>These steps ensured that all predictions were physically meaningful and submission-safe.</p>\n<hr>\n<h2>5. Why This Approach Worked</h2>\n<p>The primary driver of performance was the model’s ability to <strong>capture smooth, high-order non-linear relationships</strong> in demographic data.</p>\n<p>Rather than relying on complex ensembles, this solution succeeded by:</p>\n<ul>\n<li>Choosing a model aligned with the data’s signal structure  </li>\n<li>Letting the kernel handle interactions automatically  </li>\n<li>Avoiding unnecessary model complexity  </li>\n</ul>\n<p>This resulted in a stable and competitive solution that generalized well.</p>\n<hr>\n<h2>Conclusion</h2>\n<p>This solution demonstrates that strong performance does not always require heavy ensembling or deep architectures.</p>\n<p>By:</p>\n<ul>\n<li>Understanding the target distribution  </li>\n<li>Detecting non-linear signals early  </li>\n<li>Selecting a model that matches the data  </li>\n</ul>\n<p>a relatively simple pipeline achieved top leaderboard performance.</p>\n<p>Thank you for reading, and I’m happy to discuss any part of the approach further.</p>",
      "rawMarkdown": "# Polynomial SVR & Non-Linear Signal Analysis\n\nFirst, thanks to the competition organizers and congratulations to all participants.  \nThis solution focuses on understanding the **distributional structure of the target** and uncovering **non-linear signals** that are not captured well by standard correlation analysis or tree-based models.\n\nRather than relying on Gradient Boosting Trees, this approach uses a **Support Vector Regressor (SVR) with a Polynomial kernel**, which proved especially effective for this dataset.\n\n---\n\n## TL;DR\n\nThe key ideas behind this solution were:\n\n- Careful analysis of the skewed target distribution  \n- Explicit detection of non-linear feature signals  \n- Choosing a model that **implicitly captures feature interactions**  \n- Keeping the pipeline simple and stable  \n\n---\n\n## 1. Exploratory Data Analysis (EDA) & Key Insights\n\n### Target Distribution\n\nThe first step was analyzing the distribution of the target variable, `HOMELESS_RATE`.  \nComparing the **mean and median** revealed a noticeable skew, indicating that extreme values were influencing the distribution.\n\nThis suggested that standard linear regression models would struggle, particularly in the tails.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F27467869%2Fd76a3f9f7fc641b83e285022f4b6418f%2FScreenshot%202025-12-24%20141741.png?generation=1766566077451197&alt=media)\n\n\n**Decision:**  \nA logarithmic transformation was applied to the target to stabilize variance and reduce skew, improving model behavior during training.\n\n---\n\n### Non-Linear Signal Detection\n\nInstead of relying solely on Pearson correlation, which captures only linear relationships, the analysis included **Mutual Information (MI)** scores.\n\nThis revealed several features with:\n- Low linear correlation\n- Strong non-linear dependency with the target\n\nExamples included demographic percentages related to veterans, race, and age groups.\n\n**Insight:**  \nImportant predictive signals existed in **non-linear interactions** that linear models would miss.\nThis directly motivated the choice of a non-linear kernel-based method.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F27467869%2Fab87ac0af88481ab7c466411bcfd1edc%2FScreenshot%202025-12-24%20140515.png?generation=1766565332411912&alt=media)\n\n---\n\n## 2. Preprocessing Strategy\n\nBecause Support Vector Machines are distance-based models, preprocessing played a crucial role.\n\nThe pipeline was designed to be:\n\n- **Robust** to missing values  \n- **Numerically stable**  \n- **Compatible** with kernel methods  \n\nMissing values were handled conservatively to avoid introducing bias, and all features were scaled into a consistent range to ensure balanced distance computations across dimensions.\n\n---\n\n## 3. Modeling Strategy\n\n### Why Support Vector Regression?\n\nA Support Vector Regressor with a **Polynomial kernel** was selected for several reasons:\n\n- The dataset size was well-suited for kernel methods  \n- Polynomial kernels naturally model feature interactions  \n- No manual interaction engineering was required  \n\nUnlike tree-based models, which partition feature space hierarchically, the polynomial kernel projects features into a higher-dimensional space where complex demographic interactions become linearly separable.\n\n---\n\n### Key Assumption\n\nHomelessness rates are driven not by individual features in isolation, but by **intersections of demographic groups**.\n\nFor example:\n- Age × Race  \n- Veteran status × Income proxy  \n- Compound demographic percentages  \n\nThe polynomial kernel captures these interactions implicitly, allowing the model to learn them directly from data.\n\n---\n\n## 4. Post-Processing & Submission Integrity\n\nSince the model was trained on a transformed target, predictions were converted back to the original scale before submission.\n\nSeveral safeguards were applied to ensure a valid submission:\n- Non-negativity enforcement  \n- Handling of numerical edge cases  \n- Matching the competition’s expected target scale  \n\nThese steps ensured that all predictions were physically meaningful and submission-safe.\n\n---\n\n## 5. Why This Approach Worked\n\nThe primary driver of performance was the model’s ability to **capture smooth, high-order non-linear relationships** in demographic data.\n\nRather than relying on complex ensembles, this solution succeeded by:\n- Choosing a model aligned with the data’s signal structure  \n- Letting the kernel handle interactions automatically  \n- Avoiding unnecessary model complexity  \n\nThis resulted in a stable and competitive solution that generalized well.\n\n---\n\n## Conclusion\n\nThis solution demonstrates that strong performance does not always require heavy ensembling or deep architectures.\n\nBy:\n- Understanding the target distribution  \n- Detecting non-linear signals early  \n- Selecting a model that matches the data  \n\na relatively simple pipeline achieved top leaderboard performance.\n\nThank you for reading, and I’m happy to discuss any part of the approach further.\n",
      "votes": 6
    },
    {
      "id": 3381582,
      "postDate": "2025-12-25T00:18:42.653Z",
      "content": "<p>Thanks for sharing!  Simply plotting the distribution of the target variable in this competition makes a big difference in coming up with a solution!</p>",
      "rawMarkdown": "Thanks for sharing!  Simply plotting the distribution of the target variable in this competition makes a big difference in coming up with a solution!",
      "votes": 1,
      "replies": [
        {
          "id": 3381610,
          "postDate": "2025-12-25T03:11:06.960Z",
          "content": "<p><strong>Absolutely agree</strong> — and congratulations on the 🏆 top result!<br>\nPlotting the target early really helped guide the solution.<br>\nWould love to read a write-up of your approach if you decide to share it.</p>",
          "rawMarkdown": "**Absolutely agree** — and congratulations on the 🏆 top result!  \nPlotting the target early really helped guide the solution.  \nWould love to read a write-up of your approach if you decide to share it.\n",
          "votes": 1,
          "replies": [
            {
              "id": 3381621,
              "postDate": "2025-12-25T03:45:02.233Z",
              "content": "<p>yes i will plan on it after the holiday! thanks!</p>",
              "rawMarkdown": "yes i will plan on it after the holiday! thanks!",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 3381538,
      "postDate": "2025-12-24T21:25:22.020Z",
      "content": "<p>Nicely done. Was you decision to use a log transform based on its' performance versus other transforms ?</p>",
      "rawMarkdown": "Nicely done. Was you decision to use a log transform based on its' performance versus other transforms ?",
      "votes": 2,
      "replies": [
        {
          "id": 3381609,
          "postDate": "2025-12-25T03:05:59.470Z",
          "content": "<p>Thanks for the question. I compared several target transforms after scaling <code>HOMELESS_RATE × 100</code>.</p>\n<p>The raw target was heavily right-skewed. A log transform substantially reduced the tail while still preserving separation among high-rate regions.</p>\n<p>More aggressive power transforms (e.g. Yeo–Johnson) produced a more symmetric distribution, but they also over-compressed extreme values. Since high-homelessness regions carry real signal, I preferred the log transform as it offered a better trade-off between variance stabilization, interpretability, and robustness for SVR.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F27467869%2Fa8a3328d0c7f5468b4fb034d5167369c%2FScreenshot%202025-12-25%20082914.png?generation=1766631569164907&amp;alt=media\" alt=\"\"></p>",
          "rawMarkdown": "Thanks for the question. I compared several target transforms after scaling `HOMELESS_RATE × 100`.\n\nThe raw target was heavily right-skewed. A log transform substantially reduced the tail while still preserving separation among high-rate regions.\n\nMore aggressive power transforms (e.g. Yeo–Johnson) produced a more symmetric distribution, but they also over-compressed extreme values. Since high-homelessness regions carry real signal, I preferred the log transform as it offered a better trade-off between variance stabilization, interpretability, and robustness for SVR.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F27467869%2Fa8a3328d0c7f5468b4fb034d5167369c%2FScreenshot%202025-12-25%20082914.png?generation=1766631569164907&alt=media)",
          "votes": 1
        }
      ]
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T08:11:25Z",
  "competition_id": 111424,
  "competition_slug": "california-homelessness-prediction-challenge",
  "team_id": 14600431,
  "solution_url": "/competitions/california-homelessness-prediction-challenge/writeups/2nd-place-solution-svr-with-polynomial-kernel-and"
}