討論: コミュニティ境界定義と正規化
2026-02-15
コミュニティ境界定義と正規化
GPS廃止後のコミュニティ定義と、スコアリング・正規化の分離設計
議題
Phase 2-04で「取引グラフのネットワーク距離でコミュニティを定義」と合意したが、Phase 2-06では「クラスタリングはスコアリングから除外」と決めた。矛盾に見える「スコアリングには使わないが正規化には使う」という仕様を、論理的かつ安全に実装する方法を検討する。
Round 1 — 問題の確認
mathematician
外部レビューの指摘は正しい。私たちの設計には矛盾がある:
Phase 2-04: 「取引グラフでコミュニティを定義」
コミュニティ相対評価のため、Q_equity(循環品質)を正規化する必要がある。
Phase 2-06: 「クラスタリングはスコアリングから除外」
ネットワーク分析をスコアリングに使うと、攻撃者が取引グラフを操作してスコアを上げる可能性がある。
結果:「スコアリングには使わないが正規化には使う」?これは論理的に矛盾している。クラスタリング結果を正規化に使うなら、その精度に依存している。精度が低いなら正規化も無意味になる。
game-economist
ゲーム論の観点からも危険だ。
もしクラスタリング結果が Q_equity に影響するなら(どんな形でも)、攻撃者は「クラスタリング結果に自分たちが都合よく入る」ように取引パターンを操作する動機を得てしまう。
つまり:
- ローカルでクラスタリング分析 → 都合よいコミュニティ図が出る
- 攻撃者たちが協力して、その結果に合わせた取引をシミュレート
- 結果的に高い Q_equity を得る
「スコアリングには使わない」と言っても、正規化経由で影響するなら、実質的には使っているのと同じ。
philosopher
二人の指摘はもっともだ。ただ、一つの見方を提示したい。
「情報の流れ」を分離する
という考え方:
- スコアリング層:ローカル・個人的な取引行動のみを分析。ネットワーク構造は見ない
- 正規化層:システム全体の取引グラフを「参考情報」として、一度だけ分析。攻撃者が個々の行動で操作できない、システムレベルの統計
つまり、
正規化係数は「定期的に(例:月1回)更新される定数」
であって、個人の行動に即座に反応しない。だから個人の攻撃行動の効果がない。
Round 2 — オフライン分析の提案
mathematician
philosopher の「情報分離」という考え方に基づいて、具体的な設計を提案する。
2つの層の分離:
① スコアリング層(リアルタイム)
S(v) = softmin(d, t, e) × F(v)
-
個人の循環品質(時間・エントロピー・滞留時間)のみ
-
ネットワーク情報は使わない
-
毎日更新
② 正規化層(定期的オフライン)
Q’_equity(v) = S(v) × α(cluster(v))
-
月1回、全取引グラフをオフラインで分析
-
クラスタリングアルゴリズムでコミュニティ検出
-
各コミュニティの「規模」「密度」から正規化係数 α を計算
-
正規化係数は定数として適用(毎日の変動なし)
結果:個人の行動で正規化係数は変わらない → 攻撃インセンティブが生じない。
game-economist
いい。ゲーム論的に分析する:
攻撃者が「月1回のオフライン分析に影響させよう」と思っても:
- 月間の全取引グラフは数百万〜数億の取引ノード
- 攻撃者の取引パターンは小さなノイズに過ぎない
- クラスタリング結果を有意に変えるには、全体の5%以上の取引量が必要だと仮定するなら、個人の操作では不可能
つまり、正規化係数を操作できない → 攻撃の効果がない → ROI ≤ 0。
同時に、正規化係数が「固定」なので、個人がいくら行動を変えても即座には効果がない。支配戦略は変わらない:「自然に生きる」が最適。
Round 3 — 正規化係数の仕様確定
mathematician
正規化係数 α(cluster) の具体的な計算方法を定義する。
月1回のオフライン分析処理:
Step 1: 過去30日の取引グラフから Community Detection
graph = past_30_days_transactions()
clusters = community_detection(graph) // e.g., Louvain
# Step 2: 各クラスタの統計を計算
FOR EACH cluster IN clusters:
size = |cluster|
density = edge_count / possible_edges
avg_q = mean(S(v) for v in cluster)
# Step 3: 正規化係数を計算
α(cluster) = global_avg_q / avg_q // 全体平均 / クラスタ平均
# Step 4: 翌月のスコアリングに適用
Q'_equity(v) = S(v) × α(cluster(v))
このことで、大規模コミュニティでスコアが低めなら、α で上昇補正され、小規模コミュニティとの間で「公平さ」が実現される。
philosopher
理想的だ。この設計なら:
小規模コミュニティの人たち:
「少ないメンバー内での流動」でも、α による正規化で評価されて、大規模コミュニティとの不公平感がなくなる。
大規模コミュニティの人たち:
「多くの選択肢がある環境」での流動パターンは、その環境の中での相対的な質が見られる。
攻撃者:
月1回の確定係数に対して行動を最適化するのは実質的に不可能(システム全体を変える必要がある)。
Meguri の「自然に存在するものを保護する」という原則が、地理的・規模的な偏りなく実装される。
Round 4 — 合意
mathematician
R2-4 の設計に合意する。矛盾を解いた。
game-economist
ゲーム論的に安全性が確保された。合意する。
philosopher
倫理的に公平性が確保された。合意する。
用語集
コミュニティ(Community)
取引グラフ上で密に相互作用する巣のグループ。GPS距離軸廃止後は、ネットワーク距離(何ステップ離れているか)でコミュニティを定義。月1回のオフライン分析で検出。
正規化係数(α)
コミュニティ間のスコア格差を補正する係数。α(cluster) = global_avg_q / avg_q で計算。大規模コミュニティは α が小さく、小規模コミュニティは α が大きくなる傾向があり、公平性を実現。
オフライン分析
月1回、システム全体の取引グラフをまとめて分析する処理。リアルタイムではなく定期的に実行されるため、個人の行動で結果を操作できない安全性がある。
2層分離設計
スコアリング層(リアルタイム、個人的)と正規化層(定期的、システムレベル)に情報処理を分離する設計。スコアリングではネットワーク情報を使わず攻撃耐性を確保し、正規化のみで地理的・規模的な公平性を実現。