Pytorch Implementation of Learning Economic Indicators by Aggregating Multi-Level Geospatial Information
- Our model is a novel learning model that utilizes multiple levels of geographic information to predict economic indicators.
- Step 1. our model measures the hyperlocal economy by inferring the relative degree of individual grid image’s economic development via ordinal regression.
- Step 2. the interconnected relationship among small grid areas within the same district is summarized as district features.
- Step 3. our model finally estimates economic indicators of districts by jointly utilizing the hyperlocal predictions and district features.
Training model with softlabel proxy (Ordinal Regression) or nightlight proxy (Pearson Maximization).
usage: 1-proxy_pretrain.py [-h] [--mode MODE] [--root-dir ROOT_DIR]
[--train-meta TRAIN_META] [--test-meta TEST_META]
[--thr1 THR1] [--thr2 THR2] [--lr LR]
[--batch-size BATCH_SIZE] [--epochs EPOCHS]
[--workers WORKERS]
python3 1-proxy_pretrain.py --mode ordinal --root-dir ./data/proxy/
--train-meta ./metadata/proxy_metadata_train.csv
--test-meta ./metadata/proxy_metadata_test.csv
--batch-size 50 --epochs 100
python3 1-proxy_pretrain.py --mode nightlight --root-dir ./data/unified/
--train-meta ./metadata/korea_nightlight_proxy.csv
--batch-size 256 --epochs 20
Pruning uninhabited images using Step 1 ordinal regression model
usage: 2-data_pruning.py [-h] [--model MODEL] [--thr1 THR1] [--thr2 THR2]
[--path PATH]
python3 2-data_pruning.py --model ./model/proxy_ordinal.ckpt --path ./data/pruned
Fine-tuning Step 1 models using deepcluster algorithm
usage: 3-fine_tuing.py [-h] [--mode MODE] [--m-path M_PATH]
[--proxy-meta PROXY_META] [--cluster-meta CLUSTER_META]
[--proxy-root PROXY_ROOT] [--cluster-root CLUSTER_ROOT]
[--proxy-batch PROXY_BATCH]
[--cluster-batch CLUSTER_BATCH] [--thr1 THR1]
[--thr2 THR2] [--lr LR] [--epochs EPOCHS]
[--c-num C_NUM]
python3 3-fine_tuing.py --mode ordinal --m-path ./model/proxy_ordinal.ckpt
--proxy-meta ./metadata/proxy_metadata_train.csv
--cluster-meta ./metadata/total_metadata.csv
--proxy-root ./data/proxy/ --cluster-root ./data/pruned/
--proxy-batch 40 --cluster-batch 256 --c-num 30
python3 3-fine_tuing.py --mode nightlight --m-path ./model/proxy_nl.ckpt
--proxy-meta ./metadata/korea_nightlight_proxy.csv
--cluster-meta ./metadata/total_metadata.csv
--proxy-root ./data/unified/ --cluster-root ./data/pruned/
--proxy-batch 256 --cluster-batch 256 --c-num 30
Extractiong local level score or district embedding feature
usage: 4-extract_feature.py [-h] [--mode MODE] [--m-path M_PATH]
[--metadata METADATA] [--root ROOT] [--thr1 THR1]
[--thr2 THR2]
python3 4-extract_feature.py --mode score -m-path ./model/proxy_ordinal.ckpt
--metadata ./metadata/kr_entire_demographics.csv
--root ./data/pruned/
python3 4-extract_feature.py --mode embedding -m-path ./model/FEATURE_EXTRACTION_MODEL.ckpt
--metadata ./metadata/kr_entire_demographics.csv
--root ./data/pruned/
Combining local-level score and district-level factor to predict economic indicator
usage: 5-eval.py [-h] [--metadata METADATA] [--item ITEM]
[--ensemble-list ENSEMBLE_LIST] [--score-path SCORE_PATH]
[--train-ratio TRAIN_RATIO] [--train-count TRAIN_COUNT]
python3 5-eval.py --metadata ./metadata/kr_entire_demographics.csv
--item ECON_ITEM (TOTPOP_CY, PP_CY, ...)
--ensemble-list ./district_summary/ensemble_list.txt
--score-path ./local_score/local_score.csv
--train-ratio 0.8 --train-count 100