本文介绍了如何使用PolarDB for AI的特征算子打造ID-Mapping的解决方案。
背景信息
ID-Mapping是将所有可以收集到的账户类ID、设备标识ID等信息进行关联,并将关联后的信息汇聚到一个自然人身上,同时赋予这个自然人一个ID,作为这个自然人的唯一ID。
在游戏领域,同一用户可以在游戏公司的自建平台上创建多个游戏账号,在其他平台也有游戏公司的自研游戏账号,这些账号分散在各个游戏或平台中而没有进行相互关联 。基础数据建设不完善会带来各种问题,例如:在做精准营销时不能精准刻画同一个用户,流量在跨渠道使用时效率很低,因此,需要借助ID-Mapping技术助力基础数据建设,以完善精准营销或个性化推荐等。
打造ID-Mapping解决方案
以游戏领域的ID类型为例,游戏领域的ID类型分为两大类:
账户类:游戏平台的账号、特定游戏的账号、电话号码和邮箱地址等。
设备类:设备IMEI、设备IMSI、设备OAID和AndroidID等。
创建基础信息表。
ID-Mapping使用的资源是已有的两类信息表,即:
用户属性信息,如userid、电话号码、邮箱地址和身份证号码等。
用户行为信息,如用户登录游戏的信息、用户在游戏中的交易信息以及用户在游戏中的交流信息等。
用户属性信息表
user_info
如下:列名
说明
plat_user_id
用户ID。示例:0b887f9e1e915XXXX。
phone_number
电话号码。
email
邮箱地址。示例:xxx@alibaba-inc.com。
device_id
常用设备号码。示例:0b887fXXXX915e355。
用户行为信息表1
game_platform_info
如下,记录用户登录游戏平台的具体信息。列名
说明
device_id
设备ID。示例:0b887f9e1e915XXXX。
android_id
AndroidID。示例:02bd2a91190c1a6406866302942f4XXXX。
oaid
设备唯一ID。示例:106ed9425b12664364a06c51aXXXX。
ip
IP地址。示例:182.XX.XX.146。
ts
时间戳。示例:1647137327。
user_id
平台用户ID。示例:447268XXXX。
用户行为信息表2
game_info
如下,记录用户登录游戏账号的具体信息。列名
说明
device_id
设备ID。示例:0b887f9e1e915XXXX。
user_id
游戏账号ID。示例:02bd2a91190c1a606866302942XXXX。
ipv4
IPV4地址。示例:182.XX.XX.146。
ipv6
IPV6地址。示例:240e:337:1026:XXXX:XXXX:a26d:4a34:920d。
imei
国际移动设备识别码。示例:45ca53a497897c0b39f4373b0c14XXXX。
idfa
iOS平台内的广告跟踪ID。示例:8301c9fcgg6a16fd3XXXX0e30e1854a78a。
googleid
谷歌广告ID。示例:f09adce39gr564c7f178bd9ebf64b9XXXX。
android_id
安卓系统ID。示例:a9d26756755rtr7b8faf6b2e0b6d414XXXX。
说明刷机会改变该ID值。
oaid
设备唯一ID。示例:4aad25ea19rtr769fe84cc46244b2aeXXXX。
timestamp
时间戳。示例:1647137327。
构建ID关联关系。
将步骤1中的三张表中的账户信息(
user_info.plat_user_id
、game_platform_info.user_id
、game_info.user_id
)和设备类信息(device_id
、android_id
、ip
、imei
、idfa
、googleid
、oaid
)相互关联,形成一个统一的ID。说明以下命令中,所在表名不同而含义相同的列需要保持列名一致,如
user_info
的plat_user_id
与game_platform_info
的user_id
列为相同含义列,可以在CREATE FEATURE语句中通过SELECT plat_user_id as user_id...
的方式使其保持一致。不同含义的列需要保持名字不一致,如game_platform_info
的user_id
列与game_info
的user_id
列虽然列名相同但含义不同,可以通过SELECT ... user_id as game_user_id...
的方式使其不一致。执行如下命令,创建特征oneID。
/*polar4ai*/CREATE FEATURE oneID WITH ( feature_class = 'graph',parameters=()) AS (SELECT plat_user_id as user_id, device_id FROM user_info)
执行如下命令,查看特征算子状态。
/*polar4ai*/SHOW FEATURE oneID;
说明当算子状态为
FINISHED
时,表示ID关联关系构建完成。当算子状态为其他状态时,
FeaturePath
的内容为Please wait for the feature calculation to finish
。
当特征算子的状态为
FINISHED
时,执行如下命令,更新特征。/*polar4ai*/UPDATE FEATURE oneID WITH (parameters=()) AS (SELECT device_id, android_id,oaid,ip,user_id FROM game_platform_info)
执行如下命令,查看特征算子状态。
/*polar4ai*/SHOW FEATURE oneID;
当特征算子的状态为
FINISHED
时,执行如下命令,更新特征。/*polar4ai*/UPDATE FEATURE oneID WITH (parameters=()) AS (SELECT device_id,user_id as game_user_id,ipv4 as ip,ipv6,imei,idfa,googleid,android_id,oaid FROM game_info)
生成映射表。
执行以下命令,生成映射表。
/*polar4ai*/CREATE FEATURE csg_1 WITH ( feature_class = 'connected_subgraph',parameters=()) USING FEATURE oneID
你可以执行以下命令查看算子构建状态。
/*polar4ai*/SHOW FEATURE csg_1;
当算子状态为FINISHED时,FeaturePath内容为OSS的下载地址,将其复制在网页中便可查看ID-Mapping的结果信息。
查看最终结果。
如下表所示,
csg_id
表示column
所属连通子图的ID,column
表示用户信息表中的列名,value
表示column
的值。csg_id
column
value
0
user_id
user1
0
device_id
device1
0
oaid
oaid1
1
user_id
user2
1
device_id
device2
ID-Mapping的本质是将稀疏的信息通过实体之间的关系汇集起来,是ID类数据加工的最重要的基础工作之一,ID-Mapping在企业中通常是用户画像构建的最底层、也是最重要的环节。通常是在基础数据入库后再执行ID-Mapping构建操作,构建完成后形成新的基础数据。
ID-Mapping其他应用场景
增强用户行为
ID-Mapping技术可以对数据进行加工,加工后的数据为上层业务(个性化搜索、精准推荐)提供更优质的数据支撑,提高上层业务的效果。例如:利用ID-Mapping技术可以将同属于一个自然人的不同应用ID上的用户行为合并,以此来增强数据。在电商业务中,可以将本地购物行为数据和电商网站上的行为数据合并,补全用户购物链路来分析用户喜好。
发现黑灰产团伙
在电商营销领域,常常会遇到“刷单党”等,他们拥有多个设备和多个用户ID,用于赚取电商佣金、抢优惠券、刷好评等电商活动,极大的破坏电商的健康生态,给商户和平台带来极大困扰。使用ID-Mapping技术,可以将不同ID关联起来,通过一些运营经验,可以发现账号异常情况,例如:会获取同一设备下的超多活跃userid、或者同一userid在一段时间内拥有超多的设备ID等。再通过已关联的账号之间一些互动行为来发现更大的团伙。
扩展用户画像
通过对用户的基础数据或者行为分析,可以得到一些用户画像,比如某人属于男性、某人对某品牌或商品类目有偏好等等。由于用户行为存在的马太效应,某些用户可能在某些领域行为缺失,加上用户基础数据本身的不完善,导致用户画像并不能完全覆盖所有用户。通过ID-Mapping技术来挖掘ID之间的关系,从另一个角度来补充用户画像信息,以此来扩展用户画像。例如某ID对某商品类目有偏好,他可能属于一个家庭中的一员,和他相关的ID可能是另一个家庭成员,他也会对该类目有偏好。
营销圈人
广告领域会根据用户的兴趣、设备类型等定点投放广告。例如:某游戏平台上存在多款游戏,同一个人会拥有不同游戏的账号,或使用多个设备来登录游戏等。通过ID-Mapping技术,可以将同一个人的不同游戏账号和不同设备信息进行相互关联,并针对性地对一个人进行跨设备和跨游戏的投放广告,让用户在玩不同游戏,或者在不同设备登录游戏后都能看到该广告,相比于仅利用用户偏好在单一游戏上投放广告的效果更好。