Skip to content

Next-employer prediction

This analysis asks whether the destination-rank scorer places the worker's observed next employer near the top of a sampled candidate set and whether MQ rises at the move.

flowchart LR
    ranks[(Training and full-training<br/>destination ranks)]
    summarize[[Compute ranking metrics<br/>and clustered MQ gain]]
    metrics[(destination_prediction_metrics.csv)]
    latex[/destination_prediction.tex/]

    ranks --> summarize --> metrics --> latex

    classDef input fill:#eee5f5,stroke:#76528c,stroke-width:2px
    classDef code fill:#f3f3f3,stroke:#666,stroke-width:2px
    classDef support fill:#fff0cc,stroke:#a66b00,stroke-width:2px
    classDef tableOutput fill:#e2f2e7,stroke:#3b7a4b,stroke-width:2px
    class ranks input
    class summarize code
    class metrics support
    class latex tableOutput

The table compares training out-of-sample, training in-sample, and full-training in-sample destination events. Its main ranking comparison uses the 5,000-candidate prefix at cutoff 10 and reports analytical random baselines alongside model Recall, MRR, and NDCG. The CSV retains all stored candidate prefixes and cutoffs.

The MQ-change row is destination MQ minus incumbent MQ. Its standard error comes from an intercept-only regression clustered by worker.

Input: Destination ranks Module: analyses/modules/destination_prediction.R

Build both destination-rank modes in the model pipeline before running the R summary:

slurm/submit.sh --task score-destination-ranks \
  --mode training --config config_full.yaml
slurm/submit.sh --task score-destination-ranks \
  --mode full_training --config config_full.yaml
slurm/submit.sh --task destination-prediction \
  --config config_full.yaml

For local analysis after scoring:

Rscript pipelines/destination_prediction.R \
  --config config/config_one_percent.yaml
/artifacts/<coverage>/analyses/destination_prediction/
  destination_prediction_metrics.csv
  destination_prediction.tex
  destination_prediction_metadata.yaml