用户行为数据是推荐系统的核心
打开淘宝,首页的“猜你喜欢”总能精准推中你最近想买的东西。这背后靠的不是算命,而是实实在在的行为数据。用户的点击、浏览时长、加入购物车、收藏、下单这些动作,都是系统判断兴趣的重要依据。比如你在某款运动鞋页面停留超过30秒,系统就会记下:这个人对这款鞋有兴趣。
用户属性帮助细化画像
除了行为,用户的基本信息也少不了。性别、年龄、所在城市、设备类型(iOS还是安卓)、网络环境(Wi-Fi还是流量),这些都能影响推荐结果。比如一个25岁的女生在杭州用手机浏览,系统可能会优先推本地促销或适合年轻女性的商品。注册时填写的职业或兴趣标签也能加快冷启动阶段的匹配速度。
物品本身的特征不能忽略
推荐不只是看人,也要看货。商品或内容的标题、类别、价格、标签、关键词、发布时间等元数据,都会被系统提取并建立索引。例如一篇关于“Python爬虫实战”的文章,会被打上“编程”“Python”“教程”等标签,当有用户频繁阅读技术类内容时,这类文章就容易被匹配出来。
上下文信息让推荐更智能
同样的人,在不同时间、地点、场景下的需求可能完全不同。早上通勤时刷新闻App,系统可能推短资讯;晚上在家,可能推长视频或深度文章。天气下雨,外卖平台会优先推热汤类菜品。这些实时上下文——时间、地理位置、网络状态、甚至手机电量,都会动态影响推荐排序。
社交关系也能提供信号
如果你关注了某个美食博主,他点赞的餐厅很可能也会出现在你的推荐流里。微信看一看里的“朋友在看”,就是利用社交关系增强可信度。虽然不是所有应用都开放社交链,但一旦可用,这种数据往往比单纯行为更有力。
隐式反馈比显式评分更常用
很多人以为推荐系统依赖用户打分,比如五星好评。实际上,大多数产品用的是隐式反馈——你没点“不感兴趣”,但反复跳过某类内容,系统就知道你不爱看。播放完成率、跳出率、分享次数,这些被动收集的数据更真实,也更容易大规模获取。
代码示例:简单的行为数据记录结构
{
"user_id": "u_1024",
"item_id": "p_8867",
"action_type": "click",
"timestamp": 1712345678,
"duration": 45,
"device": "iPhone 14",
"location": "Shanghai",
"network": "WiFi"
}
数据质量比数量更重要
堆一堆日志没用,关键是要清洗和结构化。同一个用户在不同设备上的行为要能打通,虚假点击要过滤,长时间不活跃的账号要做标记。很多推荐效果差,不是因为算法弱,而是底层数据太乱。比如把测试流量混进训练集,模型学出来的全是噪音。