From 3efdf05ffa9549423da5d7326e7f1878cde2e967 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 26 Feb 2025 00:34:23 +0100 Subject: [PATCH] fix(qav3): ensure real soft min/max are normalized MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../freqaimodels/LightGBMRegressorQuickAdapterV35.py | 10 ++++++---- .../freqaimodels/XGBoostRegressorQuickAdapterV35.py | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index a2aa347..ced1b7f 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -638,9 +638,11 @@ def hp_objective( return error -def real_soft_max(series: pd.Series) -> float: - return spy.special.logsumexp(series) +def real_soft_max(series: pd.Series, beta=1.0) -> float: + maximum = series.max() + return maximum + spy.special.logsumexp(beta * (series - maximum)) / beta -def real_soft_min(series: pd.Series) -> float: - return -spy.special.logsumexp(-series) +def real_soft_min(series: pd.Series, beta=1.0) -> float: + minimum = series.min() + return minimum - spy.special.logsumexp(-beta * (series - minimum)) / beta diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index 9a4df00..575ef13 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -644,9 +644,11 @@ def hp_objective( return error -def real_soft_max(series: pd.Series) -> float: - return spy.special.logsumexp(series) +def real_soft_max(series: pd.Series, beta=1.0) -> float: + maximum = series.max() + return maximum + spy.special.logsumexp(beta * (series - maximum)) / beta -def real_soft_min(series: pd.Series) -> float: - return -spy.special.logsumexp(-series) +def real_soft_min(series: pd.Series, beta=1.0) -> float: + minimum = series.min() + return minimum - spy.special.logsumexp(-beta * (series - minimum)) / beta -- 2.43.0