Skip to content

Add transductive mode support and narrow ml_selector bounds#75

Merged
johanos1 merged 5 commits intomainfrom
nominator_update
Jan 28, 2026
Merged

Add transductive mode support and narrow ml_selector bounds#75
johanos1 merged 5 commits intomainfrom
nominator_update

Conversation

@johanos1
Copy link
Collaborator

  • TorchClient/TorchGeometricClient: Handle transductive mode with train/val/test masks
  • SklearnClient: Fix label column extraction to use 'is_sar' explicitly
  • utils.py: Fix tensordatasets/graphdataset to extract labels by column name
  • config.py: Fix build_data_paths for TorchClient (trainset vs trainset_nodes)
  • models.yaml: Tune GNN hyperparameters (dropout 0.9→0.3, lr, hidden_dim)
  • data.yaml: Narrow structure_weights bounds to [-0.1, 0.1] to reduce centrality bias
  • Training modules: Support transductive mode path handling
  • Tests: Update for new transductive mode behavior

johanos1 and others added 5 commits January 27, 2026 23:33
- TorchClient/TorchGeometricClient: Handle transductive mode with train/val/test masks
- SklearnClient: Fix label column extraction to use 'is_sar' explicitly
- utils.py: Fix tensordatasets/graphdataset to extract labels by column name
- config.py: Fix build_data_paths for TorchClient (trainset vs trainset_nodes)
- models.yaml: Tune GNN hyperparameters (dropout 0.9→0.3, lr, hidden_dim)
- data.yaml: Narrow structure_weights bounds to [-0.1, 0.1] to reduce centrality bias
- Training modules: Support transductive mode path handling
- Tests: Update for new transductive mode behavior
Problem: SAR accounts had perfect separators (min_gap=0, burstiness=-inf)
regardless of burstiness_bias_alert parameter settings.

Root causes:
1. scatter_gather, gather_scatter, and stack patterns used randint()
   directly, bypassing PatternScheduler and ignoring burstiness params
2. PatternScheduler.get_transaction_steps() used .astype(int) which
   caused multiple transactions to land on same integer step

Solution:
- Refactored scatter_gather, gather_scatter, stack to use
  PatternScheduler.get_transaction_steps() with phase ordering
- Added unique step distribution in get_transaction_steps(): when
  num_transactions <= period, spread to unique integer steps using
  beta-weighted sampling without replacement

Also fixes preprocessor plotting:
- Use linear scale centered at 1.0x instead of log2
- Handle near-zero denominators and sign differences in ratio calc
Tests verify that client_type is read from config file (default.client_type)
rather than passed as a parameter, matching the current implementation.
@johanos1 johanos1 merged commit ca21907 into main Jan 28, 2026
@johanos1 johanos1 deleted the nominator_update branch January 28, 2026 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant