Class WinsorizedMeanFullModelAggregationStrategy<T, TInput, TOutput>
- Namespace
- AiDotNet.FederatedLearning.Aggregators
- Assembly
- AiDotNet.dll
Coordinate-wise winsorized mean aggregation for IFullModel<T, TInput, TOutput>.
public sealed class WinsorizedMeanFullModelAggregationStrategy<T, TInput, TOutput> : RobustFullModelAggregationStrategyBase<T, TInput, TOutput>, IAggregationStrategy<IFullModel<T, TInput, TOutput>>
Type Parameters
TTInputTOutput
- Inheritance
-
AggregationStrategyBase<IFullModel<T, TInput, TOutput>, T>RobustFullModelAggregationStrategyBase<T, TInput, TOutput>WinsorizedMeanFullModelAggregationStrategy<T, TInput, TOutput>
- Implements
-
IAggregationStrategy<IFullModel<T, TInput, TOutput>>
- Inherited Members
Remarks
For Beginners: Winsorized mean is like trimmed mean, but instead of dropping extreme values, it clips them to the nearest remaining value before averaging. This reduces the impact of outliers while keeping the same number of values in the average.
Constructors
WinsorizedMeanFullModelAggregationStrategy(double)
public WinsorizedMeanFullModelAggregationStrategy(double winsorizeFraction = 0.2)
Parameters
winsorizeFractiondouble
Methods
Aggregate(Dictionary<int, IFullModel<T, TInput, TOutput>>, Dictionary<int, double>)
Aggregates model updates from multiple clients into a single global model update.
public override IFullModel<T, TInput, TOutput> Aggregate(Dictionary<int, IFullModel<T, TInput, TOutput>> clientModels, Dictionary<int, double> clientWeights)
Parameters
clientModelsDictionary<int, IFullModel<T, TInput, TOutput>>Dictionary mapping client IDs to their trained models.
clientWeightsDictionary<int, double>Dictionary mapping client IDs to their aggregation weights (typically based on data size).
Returns
- IFullModel<T, TInput, TOutput>
The aggregated global model.
Remarks
This method combines model updates from clients using the strategy's specific algorithm.
For Beginners: Aggregation is like combining multiple rough drafts of a document into one polished version that incorporates the best parts of each.
The aggregation process typically:
- Takes model updates (weight changes) from each client
- Considers the weight or importance of each client (based on data size, accuracy, etc.)
- Combines these updates using the strategy's algorithm
- Returns a single aggregated model that represents the collective improvement
For example with weighted averaging (FedAvg):
- Client 1 (1000 samples): model update A
- Client 2 (500 samples): model update B
- Client 3 (1500 samples): model update C
- Aggregated update = (1000A + 500B + 1500*C) / 3000
GetStrategyName()
Gets the name of the aggregation strategy.
public override string GetStrategyName()
Returns
- string
A string describing the aggregation strategy (e.g., "FedAvg", "FedProx", "Krum").
Remarks
For Beginners: This helps identify which aggregation method is being used, useful for logging, debugging, and comparing different strategies.