{
  "id": 705435,
  "title": "BTT_Blackline WIDS 2026 Datathon Solution",
  "content": "<h1>Overview</h1>\n<p>Using data from the first 5 hours of ignition, our survival model predicts the probability that a wildfire will threaten an evacuation zone within 12, 24, 48, and 72 hours. </p>\n<h1>Our Team</h1>\n<p>Charlotte Huang and Krrish Kohli of the BTT_blackline team; we met through the Break Through AI Tech program. </p>\n<h1>Training Method</h1>\n<p>Our training methodology framed the survival prediction problem as four binary classification tasks corresponding to the 12, 24, 48, and 72-hour competition horizons. For each horizon, a separate target was created to indicate whether a fire reached an evacuation zone by that time. Rows censored before a given horizon were excluded from that horizon-specific training set because their true outcome by that time was unknown.\nBefore modeling, we performed feature engineering to better represent wildfire risk patterns. This included log transformations for skewed distance and speed variables, interaction features such as distance-by-speed and alignment-by-speed, ratio-based risk indicators, estimated time-to-impact features, cyclical encodings for temporal variables, binned categorical risk groups, binary high-risk flags, and scaled versions of selected numeric variables.\nLocal validation used five-fold StratifiedKFold cross-validation, stratified on the primary event indicator, to preserve the hit-versus-censored class balance across folds. Model performance was evaluated using a custom hybrid validation score combining concordance-index behavior with weighted Brier score performance across the prediction horizons.</p>\n<h1>Submission Model</h1>\n<p>The final submission used a simple averaging ensemble of three model families: a regularized Logistic Regression pipeline with standardized numeric inputs, a HistGradientBoostingClassifier to capture nonlinear relationships, and a RandomForestClassifier with adaptive class weighting to address target imbalance. Each model produced probability estimates for the four horizons, and the predictions were averaged across models.\nTo maintain logical consistency over time, a monotonic post-processing step was applied to the final probability matrix. This ensured that predicted risk could only stay the same or increase from 12 hours to 24 hours, 48 hours, and 72 hours.</p>\n<h1>Results</h1>\n<p>We got a private leaderboard score of 0.96518, and a public leaderboard score of 0.95884. </p>\n<h1>Model Execution Time</h1>\n<p>The computational cost varied by model type. Logistic Regression and HistGradientBoosting trained relatively quickly, while Random Forest was the most computationally expensive component because it used 800 trees and was trained separately across multiple horizons and validation folds. The final ensemble balanced model diversity, predictive performance, and runtime efficiency.</p>\n<h1>What we learned</h1>\n<p>We tested each model individually, and found that the ensemble model had the best predictability score. In addition, we found that tuning the features were necessary to improve the model score even if it was by a marginal difference. Here is where we made various histograms and pie charts to see if there were features that could be standardized or normalized to ensure data integrity.  </p>\n<h1>Reproduce Submission</h1>\n<p>To run our notebook straight from Kaggle: fork the notebook, add the dataset, click Save Version, and then, click save and run all. </p>\n<h1>Requirements.txt</h1>\n<p>‘’\nnumpy&gt;=1.24.0\npandas&gt;=2.0.0\nplotly&gt;=5.13.0\nmatplotlib&gt;=3.7.0\nseaborn&gt;=0.12.0\nscikit-learn&gt;=1.2.0\n‘M</p>",
  "comments": [],
  "comment_count": 0,
  "messages": [
    {
      "id": 3468906,
      "postDate": "2026-06-10T07:12:26.173Z",
      "content": "<h1>Overview</h1>\n<p>Using data from the first 5 hours of ignition, our survival model predicts the probability that a wildfire will threaten an evacuation zone within 12, 24, 48, and 72 hours. </p>\n<h1>Our Team</h1>\n<p>Charlotte Huang and Krrish Kohli of the BTT_blackline team; we met through the Break Through AI Tech program. </p>\n<h1>Training Method</h1>\n<p>Our training methodology framed the survival prediction problem as four binary classification tasks corresponding to the 12, 24, 48, and 72-hour competition horizons. For each horizon, a separate target was created to indicate whether a fire reached an evacuation zone by that time. Rows censored before a given horizon were excluded from that horizon-specific training set because their true outcome by that time was unknown.\nBefore modeling, we performed feature engineering to better represent wildfire risk patterns. This included log transformations for skewed distance and speed variables, interaction features such as distance-by-speed and alignment-by-speed, ratio-based risk indicators, estimated time-to-impact features, cyclical encodings for temporal variables, binned categorical risk groups, binary high-risk flags, and scaled versions of selected numeric variables.\nLocal validation used five-fold StratifiedKFold cross-validation, stratified on the primary event indicator, to preserve the hit-versus-censored class balance across folds. Model performance was evaluated using a custom hybrid validation score combining concordance-index behavior with weighted Brier score performance across the prediction horizons.</p>\n<h1>Submission Model</h1>\n<p>The final submission used a simple averaging ensemble of three model families: a regularized Logistic Regression pipeline with standardized numeric inputs, a HistGradientBoostingClassifier to capture nonlinear relationships, and a RandomForestClassifier with adaptive class weighting to address target imbalance. Each model produced probability estimates for the four horizons, and the predictions were averaged across models.\nTo maintain logical consistency over time, a monotonic post-processing step was applied to the final probability matrix. This ensured that predicted risk could only stay the same or increase from 12 hours to 24 hours, 48 hours, and 72 hours.</p>\n<h1>Results</h1>\n<p>We got a private leaderboard score of 0.96518, and a public leaderboard score of 0.95884. </p>\n<h1>Model Execution Time</h1>\n<p>The computational cost varied by model type. Logistic Regression and HistGradientBoosting trained relatively quickly, while Random Forest was the most computationally expensive component because it used 800 trees and was trained separately across multiple horizons and validation folds. The final ensemble balanced model diversity, predictive performance, and runtime efficiency.</p>\n<h1>What we learned</h1>\n<p>We tested each model individually, and found that the ensemble model had the best predictability score. In addition, we found that tuning the features were necessary to improve the model score even if it was by a marginal difference. Here is where we made various histograms and pie charts to see if there were features that could be standardized or normalized to ensure data integrity.  </p>\n<h1>Reproduce Submission</h1>\n<p>To run our notebook straight from Kaggle: fork the notebook, add the dataset, click Save Version, and then, click save and run all. </p>\n<h1>Requirements.txt</h1>\n<p>‘’\nnumpy&gt;=1.24.0\npandas&gt;=2.0.0\nplotly&gt;=5.13.0\nmatplotlib&gt;=3.7.0\nseaborn&gt;=0.12.0\nscikit-learn&gt;=1.2.0\n‘M</p>",
      "rawMarkdown": "# Overview\nUsing data from the first 5 hours of ignition, our survival model predicts the probability that a wildfire will threaten an evacuation zone within 12, 24, 48, and 72 hours. \n\n# Our Team\nCharlotte Huang and Krrish Kohli of the BTT_blackline team; we met through the Break Through AI Tech program. \n\n# Training Method\nOur training methodology framed the survival prediction problem as four binary classification tasks corresponding to the 12, 24, 48, and 72-hour competition horizons. For each horizon, a separate target was created to indicate whether a fire reached an evacuation zone by that time. Rows censored before a given horizon were excluded from that horizon-specific training set because their true outcome by that time was unknown.\nBefore modeling, we performed feature engineering to better represent wildfire risk patterns. This included log transformations for skewed distance and speed variables, interaction features such as distance-by-speed and alignment-by-speed, ratio-based risk indicators, estimated time-to-impact features, cyclical encodings for temporal variables, binned categorical risk groups, binary high-risk flags, and scaled versions of selected numeric variables.\nLocal validation used five-fold StratifiedKFold cross-validation, stratified on the primary event indicator, to preserve the hit-versus-censored class balance across folds. Model performance was evaluated using a custom hybrid validation score combining concordance-index behavior with weighted Brier score performance across the prediction horizons.\n\n# Submission Model\nThe final submission used a simple averaging ensemble of three model families: a regularized Logistic Regression pipeline with standardized numeric inputs, a HistGradientBoostingClassifier to capture nonlinear relationships, and a RandomForestClassifier with adaptive class weighting to address target imbalance. Each model produced probability estimates for the four horizons, and the predictions were averaged across models.\nTo maintain logical consistency over time, a monotonic post-processing step was applied to the final probability matrix. This ensured that predicted risk could only stay the same or increase from 12 hours to 24 hours, 48 hours, and 72 hours.\n\n# Results\nWe got a private leaderboard score of 0.96518, and a public leaderboard score of 0.95884. \n\n# Model Execution Time\nThe computational cost varied by model type. Logistic Regression and HistGradientBoosting trained relatively quickly, while Random Forest was the most computationally expensive component because it used 800 trees and was trained separately across multiple horizons and validation folds. The final ensemble balanced model diversity, predictive performance, and runtime efficiency.\n\n# What we learned\nWe tested each model individually, and found that the ensemble model had the best predictability score. In addition, we found that tuning the features were necessary to improve the model score even if it was by a marginal difference. Here is where we made various histograms and pie charts to see if there were features that could be standardized or normalized to ensure data integrity.  \n\n# Reproduce Submission\nTo run our notebook straight from Kaggle: fork the notebook, add the dataset, click Save Version, and then, click save and run all. \n\n# Requirements.txt\n‘’\nnumpy>=1.24.0\npandas>=2.0.0\nplotly>=5.13.0\nmatplotlib>=3.7.0\nseaborn>=0.12.0\nscikit-learn>=1.2.0\n‘M\n",
      "votes": 1
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T08:49:50Z",
  "competition_id": 125681,
  "competition_slug": "WiDSWorldWide_GlobalDathon26",
  "team_id": 15179376,
  "solution_url": "/competitions/WiDSWorldWide_GlobalDathon26/writeups/btt-blackline-wids-2026-datathon-solution"
}