From a6b89961f6aadfc179391388228bbb0e3ccddb0f Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Tue, 28 Apr 2026 14:14:22 -0500 Subject: [PATCH] feat(ml): retrain propagation model and add per-prediction explainability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Retrained on 60k month-balanced HRRR profiles through 2026-04-05 (test RMSE 1.7 score points, R² 0.97). Added explain_prediction/4 returning ranked feature contributions via batched finite-difference attribution, so the UI can show users which weather factors drove each prediction. --- lib_ml/model.ex | 106 ++++++++++++++++++ priv/models/propagation_v1.nx | Bin 53565 -> 53565 bytes test/microwaveprop/propagation/model_test.exs | 84 ++++++++++++++ 3 files changed, 190 insertions(+) diff --git a/lib_ml/model.ex b/lib_ml/model.ex index 0ab07e7d..b6d0de11 100644 --- a/lib_ml/model.ex +++ b/lib_ml/model.ex @@ -333,4 +333,110 @@ defmodule Microwaveprop.Propagation.Model do e_sat = 6.112 * :math.exp(17.67 * dewpoint_c / (dewpoint_c + 243.5)) 217.0 * e_sat / (temp_c + 273.15) end + + @doc """ + Explain a prediction by reporting per-feature sensitivity and + contribution. Returns a map shaped like: + + %{ + score: 73, + contributions: [ + %{feature: :min_refractivity_gradient, normalized: 0.30, + sensitivity: -22.4, contribution: -4.5}, + ... + ] + } + + `sensitivity` is the per-feature partial derivative ∂score/∂x̂ + (score points per unit change in the *normalized* feature), + approximated via a single-batch finite-difference forward pass. + `contribution` is `sensitivity × (normalized − baseline)`, an + attribution of the current value to the score relative to a neutral + reference. Most features baseline at 0.5 (mid-range of the [0,1] + normalization); the four cyclical sin/cos channels baseline at 0. + + Contributions are sorted by `|contribution|` descending so the top + drivers appear first. + + ## Options + + * `:delta` — perturbation magnitude in normalized units. Defaults + to 0.05 (5% of the [0,1] feature range), large enough to escape + float noise on a sigmoid output yet small enough that the + forward-difference estimate stays close to the local gradient. + """ + @spec explain_prediction(function(), Axon.ModelState.t(), map(), keyword()) :: %{ + score: non_neg_integer(), + contributions: [ + %{ + feature: atom(), + normalized: float(), + sensitivity: float(), + contribution: float() + } + ] + } + def explain_prediction(predict_fn, params, conditions, opts \\ []) do + delta = Keyword.get(opts, :delta, 0.05) + + base_features = encode_features(conditions) + feature_names = feature_names() + + # Build a {n+1, n} batch: row 0 is the unperturbed input; rows 1..n + # each bump exactly one feature by `delta`. One forward pass yields + # the base score plus every per-feature sensitivity. + perturbed_rows = + base_features + |> Enum.with_index() + |> Enum.map(fn {_, idx} -> List.update_at(base_features, idx, &(&1 + delta)) end) + + batch = Nx.tensor([base_features | perturbed_rows], type: :f32) + + outputs = + params + |> predict_fn.(%{"features" => batch}) + |> Nx.squeeze(axes: [1]) + |> Nx.to_flat_list() + + [base_pred | perturbed_preds] = outputs + + contributions = + feature_names + |> Enum.zip(base_features) + |> Enum.zip(perturbed_preds) + |> Enum.map(fn {{name, normalized}, perturbed_pred} -> + # Convert from sigmoid output [0,1] to score points [0,100] and + # reference each feature against its neutral baseline. + sensitivity = (perturbed_pred - base_pred) / delta * 100.0 + baseline = baseline_for(name) + contribution = sensitivity * (normalized - baseline) + + %{ + feature: name, + normalized: normalized, + sensitivity: sensitivity, + contribution: contribution + } + end) + |> Enum.sort_by(&(-abs(&1.contribution))) + + score = + base_pred + |> Kernel.*(100) + |> round() + |> trunc() + |> max(0) + |> min(100) + + %{score: score, contributions: contributions} + end + + # Cyclical sin/cos channels are centered at 0 (no rotation); every + # other normalized feature lives on [0, 1] and a midpoint baseline + # of 0.5 best represents "neutral" for attribution purposes. + defp baseline_for(:solar_hour_sin), do: 0.0 + defp baseline_for(:solar_hour_cos), do: 0.0 + defp baseline_for(:month_sin), do: 0.0 + defp baseline_for(:month_cos), do: 0.0 + defp baseline_for(_), do: 0.5 end diff --git a/priv/models/propagation_v1.nx b/priv/models/propagation_v1.nx index a33a68217b6a72131b14a92a6caf912b4b1cc0de..a4091b226d81a3d72135d99daa7886e7b64cf51f 100644 GIT binary patch literal 53565 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 IYN0y*A7l+$1^@s6 diff --git a/test/microwaveprop/propagation/model_test.exs b/test/microwaveprop/propagation/model_test.exs index 3bd53b6f..c204c2e1 100644 --- a/test/microwaveprop/propagation/model_test.exs +++ b/test/microwaveprop/propagation/model_test.exs @@ -219,4 +219,88 @@ defmodule Microwaveprop.Propagation.ModelTest do assert length(Model.feature_names()) == 20 end end + + describe "explain_prediction/3" do + test "returns score and one contribution entry per feature" do + params = Model.init() + predict_fn = Model.compile_predict() + + result = + Model.explain_prediction(predict_fn, params, %{ + surface_temp_c: 25.0, + surface_dewpoint_c: 18.0, + surface_pressure_mb: 1013.0, + min_refractivity_gradient: -250.0, + hpbl_m: 800.0, + pwat_mm: 30.0, + surface_refractivity: 340.0, + latitude: 32.5, + longitude: -97.0, + sfi: 130.0, + kp_max: 2.0, + ducting_detected: true, + k_index: 25.0, + lifted_index: -2.0, + utc_hour: 23, + month: 7, + freq_mhz: 10_000 + }) + + assert is_integer(result.score) + assert result.score >= 0 and result.score <= 100 + assert length(result.contributions) == 20 + + Enum.each(result.contributions, fn c -> + assert is_atom(c.feature) + assert is_float(c.normalized) or is_integer(c.normalized) + assert is_float(c.sensitivity) + assert is_float(c.contribution) + end) + end + + test "contributions are sorted by absolute contribution descending" do + params = Model.init() + predict_fn = Model.compile_predict() + + result = + Model.explain_prediction(predict_fn, params, %{ + surface_temp_c: 15.0, + surface_dewpoint_c: 5.0, + freq_mhz: 24_000 + }) + + magnitudes = Enum.map(result.contributions, &abs(&1.contribution)) + assert magnitudes == Enum.sort(magnitudes, :desc) + end + + test "every emitted feature name matches feature_names/0" do + params = Model.init() + predict_fn = Model.compile_predict() + + result = Model.explain_prediction(predict_fn, params, %{freq_mhz: 47_000}) + + emitted = result.contributions |> Enum.map(& &1.feature) |> Enum.sort() + expected = Enum.sort(Model.feature_names()) + assert emitted == expected + end + + test "perturbing a feature changes the predicted score" do + # Verify the sensitivity output is non-trivial: the model must + # actually move when at least one feature moves. With random init + # this is essentially guaranteed unless every weight collapses. + params = Model.init() + predict_fn = Model.compile_predict() + + result = + Model.explain_prediction(predict_fn, params, %{ + surface_temp_c: 20.0, + surface_dewpoint_c: 10.0, + surface_pressure_mb: 1013.0, + freq_mhz: 10_000 + }) + + max_sensitivity = result.contributions |> Enum.map(&abs(&1.sensitivity)) |> Enum.max() + assert max_sensitivity > 0.0 + end + end end