知识卡片
算法效果的关键往往在数据预处理,而非算法本身
内容
团队在权重和相关性计算上尝试过布尔模型、BM25、SVM、余弦相似度(Cosine similarity)等多种算法,但发现把这些理论上”高大上”的算法直接套用到真实业务场景中,效果往往并不理想。团队总结的经验是:真正能让算法发挥作用的关键,不在算法本身的选择或调参,而在于索引之前对数据做的预处理工作——先踏踏实实地做数据清洗、分析业务背后的真实结构,理解数据本身的特征与某个算法所依赖的假设之间是否真的契合,找到数据与算法之间的结合点,算法才能真正发挥效力、检索出符合用户心理预期的结果。这个经验对任何”引入了理论上更先进的算法却发现效果不及预期”的场景都有参考价值:与其把精力持续投入在替换或调优算法本身,不如先回头检查喂给算法的数据是否经过了足够贴合业务特征的预处理,很多算法效果不佳的根源其实出在预处理环节,而不是算法本身不够好。
参考来源
- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.12 基于Xapian的垂直搜索引擎的构建分析"节,"6.12.4 垂直搜索技术和业务细节","3.关于算法选择"(源文件:_epub-src/OEBPS/Text/Chapter6_12_5.xhtml)
- 结论依据:原文说明"算法一定不是万能的。现在计算权重、相关性的算法很多。我们尝试过基本的布尔、BM25、SVM、Cosine similarity,等等。其实将这些算法直接应用到现实业务时都不灵……我们的经验是:想要发挥算法奇效,要靠数据索引前的预处理。所以,踏踏实实做数据处理、分析业务,然后理解数据与算法的结合点;最终才能做到相得益彰",直接支撑本卡片结论。
- 原始内容:算法一定不是万能的……其实将这些算法直接应用到现实业务时都不灵。那为啥会有这么高大上的算法存在呢?我们的经验是:想要发挥算法奇效,要靠数据索引前的预处理。