如何基于手机号+设备号构建图神经网络?
解读
面试官把“手机号+设备号”抛出来,本质是考察三件事:
- 能否把中国合规红线(《个人信息保护法》《数据安全法》)第一时间摆到台面上;
- 能否把用户运营场景(拉新、反薅、促活、召回)翻译成图上的“节点、边、权重、标签”;
- 能否用最小可行的工程路径,让图神经网络(GNN)在“脱敏、抽样、实时、可解释”四条红线内跑通,而不是堆算力。
一句话:不是炫技GNN,而是让GNN在合规+业务+数据三重约束下产生运营价值。
知识点
-
节点设计
- 手机号节点:经不可逆哈希+盐(国密SM3)生成64位hex,作为唯一ID;属性只保留脱敏后画像标签(年龄段、城市等级、运营商、R分层),原始明文绝不落盘。
- 设备节点:Android取OAID、iOS取IDFA(若用户授权),无授权时用MD5(品牌+型号+系统版本+分辨率)生成弱ID;属性保留设备风险分、root/越狱标识、电量采样分布等。
-
边设计
- 登录边:手机号↔设备,权重=30天登录天数/30,归一化到0–1;方向无向。
- 共享边:两设备在同一WiFi SSID+BSSID下30分钟内先后登录,权重=共现次数对数衰减;用于识别设备农场。
- 资金边:手机号A给手机号B转账,权重=近90天累计金额log;用于识别羊毛党网络。
- 召回边:同一设备先后绑定老手机号与新手机号,权重=1,用于换号召回。
-
图构建流程
① 数据层:Kafka实时流→Spark Streaming每5分钟生成增量边;
② 采样层:对全量10亿节点做Weighted-DFS采样,保留高价值用户(近30天GMV>200元)及其二跳邻居,子图规模控制在500万节点、2000万边;
③ 特征层:节点用XGBoost产出的运营概率(下单、留存、流失)作为初始向量,边权重直接作为邻接矩阵;
④ 模型层:二部图采用RGCN(关系图卷积),输出128维embedding;下游接双塔结构,左塔embedding、右塔用户画像,CTR预估任务联合训练,AUC提升0.8个百分点即上线。 -
合规与隐私
- 全程不落地明文手机号,哈希盐值每季度轮换;
- 设备弱ID不关联任何IMEI,避免触碰工信部164号文;
- 图模型输出embedding经DP-SGD(差分隐私)加噪,ε≤3,保证无法逆向还原个人。
-
运营落地场景
- 拉新反欺诈:GNN识别设备–手机号–WiFi三角环,密度>0.7且资金边权重>5即触发“羊毛盾”,实时拦截注册;
- 沉默召回:对embedding相似度>0.9的“老号新设备”组合,推限时回流券,召回率提升18%;
- 高价值促活:把RGCN输出的高潜流失概率>0.6的用户推给社群运营,人工干预后7日留存+12%。
答案
“我会先画一张二部异构图:左侧节点是脱敏手机号,右侧节点是脱敏设备号。边有三种:
- 登录边,权重=30天登录天数占比,反映忠诚度;
- 共享网络边,两设备在同一WiFi下短时共现,抓设备农场;
- 资金边,手机号之间转账,抓羊毛党网络。
全量数据10亿节点,先用Weighted-DFS采样保留高价值用户二跳子图,规模压到500万节点。节点特征用XGBoost运营概率,边权重直接进邻接矩阵。模型用RGCN产出128维embedding,下游接双塔CTR任务联合训练。
合规层面,手机号国密SM3+盐哈希,设备号用OAID/IDFA,无授权则用弱ID,embedding经DP-SGD加噪,ε≤3。上线后,羊毛党识别准确率+9%,沉默召回率+18%,高潜流失用户7日留存+12%。”
拓展思考
- 动态图:用户换机周期缩短到18个月,如何把时序邻接矩阵做成T-GNN,让模型捕捉“换机链”?
- 多平台ID:微信小程序、支付宝小程序、抖音小程序的openid如何映射到同一张图?需引入联邦哈希方案,避免明文碰撞。
- 实时性:召回场景要求200ms内返回embedding,是否把RGCN层前向计算拆成Neighbour Sampling + GPU 缓存,用双缓冲保证热用户毫秒级更新?
- 业务反哺:GNNembedding能否反向生成可解释规则?例如**“设备节点度>50且资金边权重>5”即输出“疑似设备农场”,让运营同学肉眼可读**,降低黑盒焦虑。