新的冠军
上个周末,发生了我们内部称之为“政权更迭”的事件:基于 LightGBM 的价格检测模型被 CatBoost 模型取代。这听起来很技术化——确实如此。但效果是直接可感知的:您的产品页面上的价格检测变得更加准确了。
借此机会,我们想带您一窥幕后:我们的 AI 驱动价格检测是如何工作的,我们如何训练模型,以及为什么 CatBoost 现在脱颖而出。
问题:众多数字中的一个
一个典型的产品页面包含数十个数字:商品 ID、评分、运费、数量、划线价、变体价格。实际购买价格只是其中之一。我们的模型需要从所有这些候选项中挑选出正确的那个——在任何网站上,不论布局、语言或商店系统。
我们的流水线如何运作
价格检测分几个阶段运行:
阶段 1:收集候选项
当您添加一个 URL 进行跟踪时,我们的系统会分析完整的页面结构。每个可能包含价格的元素都会被识别出来。我们并行使用多个来源:
- 结构化数据:许多商店为搜索引擎提供的 JSON-LD 和 Schema.org 标记。
- DOM 分析:检查每个文本元素是否存在类似价格的模式——带有货币符号、小数分隔符等的数字。
- JavaScript 提取:对于具有可配置产品的商店(例如不同尺寸),我们直接从嵌入的 JavaScript 中提取变体价格。
阶段 2:特征提取
对于每个价格候选项,我们计算大约二十多个特征,帮助模型区分真实价格和噪声:
- HTML 上下文:周围元素是否包含“价格”、“优惠”或“当前”等词汇?文本是否在视觉上被强调(加粗、大字体)?
- 页面位置:元素在 DOM 中嵌套多深?它相对于其他候选项的位置在哪里?
- 统计上下文:该值与页面上其他数字相比如何?它是异常值还是在典型价格范围内?
- 商店特定信号:模型在该域名上的历史价格检测表现如何?有些商店比其他商店更难处理。
阶段 3:预测
所有候选项及其特征被发送到我们的 ML 服务。模型为每个候选项评分一个概率:“我有多确定这是实际的产品价格?”得分最高的候选项胜出。
训练:模型如何学习
我们的模型从真实用户数据中学习。每次您确认或纠正一个价格时,该反馈都会作为训练信号回传。“这个页面上的这个数字是正确价格”的对应关系成为下一轮训练的标注样本。
挑战在于:页面上所有候选项中,通常只有一个是正确价格——比例大约是 1:50。这种不平衡必须在训练中加以考虑,否则模型会简单地学会将所有内容都分类为“不是价格”。
我们定期并行训练多种模型类型,并在保留的测试集上比较它们的性能。测试集严格按页面划分——模型永远不会在训练期间见过的页面上进行测试。
为什么 CatBoost 获胜
在我们最新的模型比较中,CatBoost 在关键指标上超越了之前的 LightGBM 模型(自一月份以来一直在生产环境中运行):
- Top-1 准确率 80%:每 5 个产品页面中有 4 个,模型能在第一次尝试中识别出正确价格。
- Top-3 准确率 84%:考虑前三个最佳候选项时,正确价格几乎总是在其中。
是什么让 CatBoost 更好?两个因素尤为突出:
更好地处理类别不平衡。CatBoost 内置了自动类别权重平衡策略,在实践中比 LightGBM 所需的手动校准更加稳健。
更智能地处理分类特征。像 HTML 标签类型或候选项来源(JSON-LD vs. DOM 文本 vs. JavaScript)这样的特征被 CatBoost 原生处理,无需我们手动将其编码为数字。这减少了信息损失。
自动重新训练
我们的流水线不只训练模型一次——它持续进行。每天,当前最佳模型都会用新数据重新训练。每周一次,运行所有模型配置的全面比较——这就是我们发现向 CatBoost“政权更迭”的方式。
执行实时价格检测的检测器服务会自动加载新模型。从发现更好的模型到将其部署到生产环境,只需几分钟。
这对您意味着什么
简而言之:更好的价格检测,更少的手动纠正。您应该特别能在具有复杂页面布局、多种价格变体或不寻常展示方式的商店中注意到改进。
当模型不确定时,您会在创建跟踪器时在置信度指示器中看到。在这些情况下,您可以手动确认价格——同时帮助模型在下一轮训练中学习。
试试看,创建您的下一个跟踪器——CatBoost 现在负责价格检测。
