那个隐空间
你有没有过这种感觉——刚在网上下单了一包猫粮,转头就看到推荐全是猫砂、猫玩具,精准得有点瘆人。这背后就是个叫协同过滤的算法,早年其实就是用户-物品评分矩阵,填不满,用矩阵分解补全。原理倒不复杂:把每个用户和每个商品都投射到几十维的隐向量里,向量点积近似评分。比如你爱好暗黑料理,你的向量里“黑暗”维度值就高;商品里臭豆腐的同一维度也高,点积自然大,就推给你。可隐向量怎么来?交替最小二乘法(ALS)或者随机梯度下降(SGD)来回迭代,直到误差收敛。这就像猜你的音乐品味,听了几首歌,慢慢摸清你在爵士、摇滚、电子上的权重。现在更狠了,深度神经网络直接端到端学习,连特征工程都省了。但说实话,深度学习在推荐里的增益没那么神,有时还不如调参壮的XGBoost,工程上得权衡。
快,要极致的快
某头部连锁便利店,上线实时推荐引擎后,客单价提升了12%。怎么做到的?他们把用户进店后的行为——拿起了什么、放下了什么、在哪个货架前停留——通过摄像头和重力感应器实时入流,Kafka嚼碎,Flink做窗口聚合,模型在GPU上推理,延迟压在100毫秒内。然后手机APP推送优惠券,或者货架上的电子屏瞬间换广告。对比他们以前的T+1批处理,转化率提高了20个百分点。我亲眼看过压测:峰值每秒2万条事件,p99延迟没超过150ms。传统方案?夜间用Spark跑,第二天早上更新,中间消费场景全漏了。这就是实时性的价值,不是玄学。 但坑也不少。实时特征工程太容易出bug,时间窗口没对齐,就会把“未来”信息泄露到训练集,线下指标虚高,上线就崩。我们踩过这坑,后来强制用Flink的event time,加水位线,才勉强稳住。物理层的狼狈
智慧零售从来不只是软件的事。RFID标签号称自动盘点,实际上在金属架、液体商品面前怂得很。我们给某服装品牌部署时,仓库盘点漏读率一度15%,因为衣架是金属的,反射了信号。最后靠多天线阵列和波束赋形,再加个基于信号强度的去噪算法,才把漏读率干到2%以下。那几天调天线角度调到吐,但看着后台数据一点点绿起来,值了。还有重力货架——你以为放个传感器就完了?校准!温度漂移、机械蠕变,不天天标定,误差能跑到10克以上,没法区分那是拿了一包薯片还是两包。我们最后用卡尔曼滤波融合加速度计数据,才算消停。
三个血泪坑点

作者|大讲堂
排版|大讲堂
审核|白杨
大讲堂