deepcausalmmm.core.scaling
Simple, proven scaling implementation that works reliably. Based on the successful approach from dashboard_rmse_optimized.py.
Classes
|
Linear scaling approach (y/y_mean) for additive attribution. |
|
Store simple global scaling parameters. |
- class deepcausalmmm.core.scaling.SimpleScalingParams(control_mean: Tensor, control_std: Tensor, total_impressions: Tensor | None = None)[source]
Store simple global scaling parameters.
- class deepcausalmmm.core.scaling.SimpleGlobalScaler(config: Dict[str, Any] | None = None)[source]
Linear scaling approach (y/y_mean) for additive attribution.
Scaling features: - Media: Share-of-voice scaling with outlier smoothing - Control: Robust standardization with adaptive clipping - Target: Linear scaling by region mean (y/y_mean) for additive decomposition - Adaptive normalization with distribution-aware clipping - Advanced outlier handling for extreme value stability
- __init__(config: Dict[str, Any] | None = None)[source]
Initialize the scaler with optional config parameters.
- fit(X_media: ndarray, X_control: ndarray, y: ndarray) None[source]
Fit the scaler using simple global statistics.
- Parameters:
X_media – Media variables [n_regions, n_timesteps, n_channels]
X_control – Control variables [n_regions, n_timesteps, n_controls]
y – Target variable [n_regions, n_timesteps]
- transform(X_media: ndarray, X_control: ndarray, y: ndarray) Tuple[Tensor, Tensor, Tensor][source]
Transform data using fitted parameters.
- Parameters:
X_media – Media variables [n_regions, n_timesteps, n_channels]
X_control – Control variables [n_regions, n_timesteps, n_controls]
y – Target variable [n_regions, n_timesteps]
- Returns:
Tuple of (X_media_scaled, X_control_scaled, y_scaled)
- inverse_transform_target(y_scaled: Tensor) Tensor[source]
Inverse transform target variable.
- Parameters:
y_scaled – Scaled target [n_regions, n_timesteps]
- Returns:
Original scale target
- inverse_transform_contributions(media_contributions: Tensor, baseline: Tensor = None, control_contributions: Tensor = None, seasonal_contributions: Tensor = None, trend_contributions: Tensor = None, prediction_scale: Tensor = None) dict[source]
Inverse transform ALL contributions to original scale using simple multiplication.
With linear scaling (y/y_mean), the inverse transform is straightforward: component_orig = component_scaled * prediction_scale * y_mean_per_region
This preserves additivity: sum(components_orig) = prediction_orig
- Parameters:
media_contributions – Media contributions in scaled space [regions, timesteps, channels]
baseline – Baseline in scaled space [regions, timesteps]
control_contributions – Control contributions in scaled space [regions, timesteps, controls]
seasonal_contributions – Seasonal contributions in scaled space [regions, timesteps]
trend_contributions – Trend contributions in scaled space [regions, timesteps]
prediction_scale – Model’s prediction_scale factor (from F.softplus(self.prediction_scale))
- Returns:
Dictionary with all contributions in original scale
- fit_transform(X_media: ndarray, X_control: ndarray, y: ndarray) Tuple[Tensor, Tensor, Tensor][source]
Fit the scaler and transform data in one step.
- Parameters:
X_media – Media variables [n_regions, n_timesteps, n_channels]
X_control – Control variables [n_regions, n_timesteps, n_controls]
y – Target variable [n_regions, n_timesteps]
- Returns:
Tuple of (X_media_scaled, X_control_scaled, y_scaled)
- deepcausalmmm.core.scaling.GlobalScaler
alias of
SimpleGlobalScaler