デモデータについて(case04)¶
このデモで使う固定データの作り方をまとめた開発者向けメモです。学習の本筋は ① 事例概要 から読んでください。
デモは実在データを使わず、論文が公表した架空ブロック(7人)の数値をそのまま用います。乱数を使わない決定的な固定データなので、再生成は常にバイト一致します。
データモデル¶
データを見る のとおり、2つの固定データを持ちます。
| ファイル | 役割 |
|---|---|
residents.csv |
真の個票(7人の年齢・性別・人種・配偶関係)=論文の唯一解。非公開扱い。 |
published_statistics.csv |
公表された統計表(14行・うち7行は秘匿)。攻撃者の入力。 |
属性(性別・人種・配偶関係)は原典(米国センサスの例)の区分をそのまま用いています。教材用の固定データであり、実在の個人とは無関係です。
検証オラクル(この事例の強み)¶
論文に正解(唯一解)が公表されているため、実装の正しさを外部から独立に検証できます。テストでは二重に確認します。
- 公表統計 → 個票: 公表統計だけから再構築した解が一意で、
residents(論文解)と全一致すること。 - 個票 → 公表統計: 真の個票から人数・中央値・平均を再計算すると、公表統計表の非秘匿セルと一致すること(別経路の検算。両者が同じ間違いをしていないことを確認)。
再構築ソルバ¶
- 公表統計を制約に翻訳し、CP-SAT(OR-Tools) で全解を数え尽くします。
- ソルバは生成器と同じモジュールに置き、テストが import します(notebook は Colab 用に同等のコードを自己完結で持ちます)。
- 生成器・ソルバ:
src/dummy_data/case04_reconstruction.py - 依存:
ortools>=9.10(CP-SAT)。Colab ではpip install ortoolsで導入。
出力ファイル¶
data/case04_reconstruction/raw/residents.csvdata/case04_reconstruction/raw/published_statistics.csv