機械学習モデルを使用して一部ユーザーの性別と年齢層を判断。Privacy & SafetyからRequest all of my Dataでエクスポートを申請するとactivity/analytics/events-[…].jsonから見れる。Google広告だったりも性別や年齢、職業だったりをアルゴリズムで判断していたりする。

エクスポートされたJSONは私の場合4GB近くあったのでIDEでは開けなかった。catとjqでやるとよさそう。day_pt時点で私は15歳だったので、だいぶ外しているw

prob_male(男性の確率)、prob_female(女性の確率)、およびprob_nb(ノンバイナリーの確率)がそれぞれ計算され、これらを合計して1.0になるように調整されます。しかし、浮動小数点の精度の問題で、合計が1.0ぴったりにはならないことがあります。

package/activity/analytics via 🐍 v3.12.5
💭 cat events-*.json | jq '. | select(.predicted_gender != null) | select(.user_id == "890908900520505354")'
{
  "user_id": "890908900520505354",
  "day_pt": "2024-07-01T00:00:00",
  "gender": "male",
  "predicted_gender": "male",
  "probability": 0.93301993608474731,
  "prob_male": 0.93301993608474731,
  "prob_female": 0.0562388114631176,
  "prob_non_binary_gender_expansive": 0.010741251520812511,
  "prediction_type": "fixed",
  "model_version": "v0"
}
 
package/activity/analytics via 🐍 v3.12.5
💭 cat events-*.json | jq '. | select(.predicted_age != null) | select(.user_id == "890908900520505354")'
{
  "user_id": "890908900520505354",
  "day_pt": "2024-07-01T00:00:00",
  "age": "25-34",
  "predicted_age": "25-34",
  "probability": 0.47339025139808655,
  "prob_13_17": 0.017502624541521072,
  "prob_18_24": 0.44293686747550964,
  "prob_25_34": 0.47339025139808655,
  "prob_35_over": 0.066170245409011841,
  "prediction_type": "fixed",
  "model_version": "v0"
}

「Discordを改善するためにデータを使用する」をオフに切り替えることで、使用する情報を制限できます。

らしいので、オフにしておいた。こんな警告出るのにオフにする人いなそう。

matplotlibでplotするスクリプト書いてる人もいた

Simple script to plot your Discord machine-learning predicted age and gender from the data dump. · GitHub


AIで名前、メールアドレス、ユーザー名を分析し、性別を特定するSaaSが炎上したこともあるのでこの辺りは慎重にやらないといけない。

Service that uses AI to identify gender based on names looks incredibly biased | The Verge

あとは単純にターゲティングではなくCOPPAの準拠だったり、年齢詐称ユーザーをAIで検知して子どもの保護をするための分類器を作る流れもある