Recalibrate scoring weights from gradient descent on 5000 QSOs
Loss improved 72% (0.42 → 0.12). Key changes: - rain: 0.08 → 0.136 (+70%) — strongest discriminator - season: 0.08 → 0.111 (+39%) - wind: 0.05 → 0.08 (+60%) - refractivity: 0.08 → 0.105 (+31%) - time_of_day: 0.10 → 0.050 (-50%) — was overweighted by contest bias - pressure: 0.15 → 0.103 (-31%) - humidity: 0.18 → 0.124 (-31%) Validated by native profile backtest (11,431 profiles): theta_e_jump strongest native discriminator, duct_usable_* and bulk_richardson dropped as dead features.
This commit is contained in:
parent
664ffc9ef1
commit
7d68d13dcc
3 changed files with 30 additions and 27 deletions
19
algo.md
19
algo.md
|
|
@ -1153,18 +1153,19 @@ Revised April 2026 based on 57,248 QSO-HRRR correlation analysis. Key changes fr
|
|||
| Wind | 6% | 5% | Minimal impact confirmed |
|
||||
|
||||
```elixir
|
||||
# Recalibrated 2026-04-11 via gradient descent on 5000 QSOs (loss 0.42 → 0.12)
|
||||
def composite_score(factors) do
|
||||
round(
|
||||
factors.humidity * 0.18 +
|
||||
factors.pressure * 0.15 +
|
||||
factors.time_of_day * 0.10 +
|
||||
factors.td_depression * 0.10 +
|
||||
factors.pwat * 0.10 +
|
||||
factors.refractivity * 0.08 +
|
||||
factors.rain * 0.1362 +
|
||||
factors.humidity * 0.1243 +
|
||||
factors.pwat * 0.1128 +
|
||||
factors.season * 0.1112 +
|
||||
factors.refractivity * 0.1049 +
|
||||
factors.pressure * 0.1032 +
|
||||
factors.td_depression * 0.0978 +
|
||||
factors.sky * 0.08 +
|
||||
factors.season * 0.08 +
|
||||
factors.rain * 0.08 +
|
||||
factors.wind * 0.05
|
||||
factors.wind * 0.08 +
|
||||
factors.time_of_day * 0.0496
|
||||
)
|
||||
end
|
||||
```
|
||||
|
|
|
|||
|
|
@ -7,17 +7,19 @@ defmodule Microwaveprop.Propagation.BandConfig do
|
|||
algorithm is tuned or new bands are added, only this module changes.
|
||||
"""
|
||||
|
||||
# Recalibrated 2026-04-11 via gradient descent on 5000 QSOs (loss 0.42 → 0.12).
|
||||
# Key shifts: rain +70%, season +39%, wind +60%; time_of_day -50%, pressure -31%.
|
||||
@weights %{
|
||||
humidity: 0.18,
|
||||
time_of_day: 0.10,
|
||||
td_depression: 0.10,
|
||||
refractivity: 0.08,
|
||||
humidity: 0.1243,
|
||||
time_of_day: 0.0496,
|
||||
td_depression: 0.0978,
|
||||
refractivity: 0.1049,
|
||||
sky: 0.08,
|
||||
season: 0.08,
|
||||
wind: 0.05,
|
||||
rain: 0.08,
|
||||
pressure: 0.15,
|
||||
pwat: 0.10
|
||||
season: 0.1112,
|
||||
wind: 0.08,
|
||||
rain: 0.1362,
|
||||
pressure: 0.1032,
|
||||
pwat: 0.1128
|
||||
}
|
||||
|
||||
@sunrise_table [7.4, 7.3, 7.0, 6.7, 6.35, 6.25, 6.35, 6.65, 6.9, 7.1, 7.35, 7.45]
|
||||
|
|
|
|||
|
|
@ -143,16 +143,16 @@ defmodule Microwaveprop.Propagation.BandConfigTest do
|
|||
|
||||
test "individual weights have correct values" do
|
||||
weights = BandConfig.weights()
|
||||
assert weights.humidity == 0.18
|
||||
assert weights.time_of_day == 0.10
|
||||
assert weights.td_depression == 0.10
|
||||
assert weights.refractivity == 0.08
|
||||
assert weights.humidity == 0.1243
|
||||
assert weights.time_of_day == 0.0496
|
||||
assert weights.td_depression == 0.0978
|
||||
assert weights.refractivity == 0.1049
|
||||
assert weights.sky == 0.08
|
||||
assert weights.season == 0.08
|
||||
assert weights.wind == 0.05
|
||||
assert weights.rain == 0.08
|
||||
assert weights.pwat == 0.10
|
||||
assert weights.pressure == 0.15
|
||||
assert weights.season == 0.1112
|
||||
assert weights.wind == 0.08
|
||||
assert weights.rain == 0.1362
|
||||
assert weights.pwat == 0.1128
|
||||
assert weights.pressure == 0.1032
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue