Skip to content

About

Method-level reproduction of OTC cross-city site recommendation with selective fusion, negative-transfer safeguards, and HKG analysis.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

OpenSiteRec: OTC Reproduction and Selective Multi-Source Fusion

This repository is a reproducible implementation accompanying the study "Selective Multi-Source Information Fusion for Cross-City Site Recommendation" by Jia Zhuoying (贾卓颖). It extends the public OpenSiteRec repository with:

  • method-level reproduction of MF, LightGCN, and OTC;
  • split and random-seed sensitivity analysis;
  • source-entity structural reweighting;
  • brand-level dynamic source fusion and a zero-transfer fallback;
  • a ranking-aware ground-cost prototype with LambdaLoss and log-space Sinkhorn;
  • HKG-LightGCN experiments for strong-representation analysis.

The implementation preserves the original dataset and baseline directories. Generated checkpoints and experiment outputs are intentionally excluded from Git so that the repository contains only source code, tests, and compact figures needed to understand the reported workflow.

Repository layout

OpenSiteRec/
|-- Chicago/, NYC/, Singapore/, Tokyo/  # Public OpenSiteRec data
|-- baseline/                           # Original public baseline code
|-- reproduction/                       # Reproduction and improvement code
|   |-- data.py                         # 5-core filtering and 7:1:2 splits
|   |-- models.py, training.py          # MF/LightGCN and BPR training
|   |-- otc.py                          # GW projection and static OTC
|   |-- improvements.py                 # Reweighting and dynamic fusion
|   |-- learnable_ground_cost.py        # LambdaLoss and log-Sinkhorn
|   |-- hkg.py                          # Heterogeneous graph backbone
|   |-- run*.py                         # Experiment entry points
|   `-- RESULTS.md                      # Recorded results and diagnostics
|-- tests/test_reproduction.py          # Deterministic and numerical tests
`-- requirements-reproduction.txt

Environment

Python 3.10 or newer is recommended. The reported experiments used Python 3.13.5, PyTorch 2.8.0 with CUDA 12.9, POT 0.9.7, and an RTX 4060 Laptop GPU. Install a PyTorch build appropriate for your CUDA runtime, then install the remaining dependencies:

python -m pip install -r requirements-reproduction.txt

Reproduction workflow

Run commands from the repository root. The default protocol uses seed 42 and the per-brand fixed split described in the paper.

  1. Search and train MF/LightGCN, then run static OTC:

    python -m reproduction.run --trials 16
  2. Evaluate backbone sensitivity with fixed splits and hyperparameters:

    python -m reproduction.multiseed --seeds 42 43 44
  3. Run structural reweighting and dynamic fusion:

    python -m reproduction.run_improvements
    python -m reproduction.run_improvement_multiseed --seeds 42 43 44
  4. Run the ranking-aware ground-cost prototype:

    python -m reproduction.run_learnable_cost
  5. Build the HKG strong-representation scenario and compare OTC variants:

    python -m reproduction.run_hkg_otc
    python -m reproduction.run_hkg_enhanced_otc
  6. Regenerate compact figures:

    python -m reproduction.plot_results
    python -m reproduction.plot_improvements

The scripts write checkpoints and JSON summaries to ignored reproduction_outputs* and reproduction_enhancements directories. Use --help on each entry point to inspect device, seed, split, and output-path options.

Protocol notes

  • The 5-core filter is applied to brands using raw POI-record counts.
  • Each retained brand is split into 70% train, 10% validation, and 20% test.
  • Hyperparameters and OTC source weights are selected using validation data.
  • Test ranking masks regions observed in the training split.
  • gamma = 0 is included so that fusion can return to the local backbone.
  • HKG uses train+validation retraining, while the basic LightGCN table uses a training-set checkpoint. Cross-protocol differences must not be interpreted as strict architecture attribution.

The public OTC implementation, exact original split files, and final per-city configuration were unavailable. Results are therefore presented as method-level reproduction rather than exact numerical reproduction. See reproduction/RESULTS.md for the recorded metrics, negative results, and limitations.

Tests

python -m pytest tests/test_reproduction.py -q

The tests cover deterministic splitting, masked ranking metrics, GW projection, source-mass normalization, nonnegative dynamic weights, log-Sinkhorn marginal constraints and gradients, LambdaLoss ordering, and HKG graph construction.

Upstream data and license

OpenSiteRec data and the original baseline implementation come from HestiaSky/OpenSiteRec. Their original license is retained in LICENSE. This fork adds independent reproduction and improvement code without claiming exact reproduction of the published OTC numbers.

About

Method-level reproduction of OTC cross-city site recommendation with selective fusion, negative-transfer safeguards, and HKG analysis.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages