算法工程师为什么成天做数据,都做哪些数据?( 三 )


比如像是最基础的CTR、CVR、收入等数据 , 也有像是老板临时起意想要看的某些数据 。比如分析一下某些特征的分布 , 比如看一下某个特定族群中样本的数量或者是数据的情况 , 等等等等 , 不一而足 。
第二种是我们模型做出来之后的效果分析 , 如果说模型的效果还 , 那还好 。如果效果不好 , 问题就来了 , 我们怎么样确定是哪里出了问题?是因为模型本身的性能不足呢?还是我们的特征不够或者是特征当中存在问题呢?还是我们的数据质量不高呢?还是说什么地方存在bug呢?
算法不像是工程 , 工程当中绝大多数事情是确定的 , 结果不对一定是因为逻辑有bug , 那么只要仔细测试 , 分析原因 , 总能解决 。那种难以复现 , 找不到原因的问题非常罕见 。但是算法不一样 , 大多数情况下并没有绝对的错误和正确 , 甚至没有绝对的原因 。我们扮演的角色更多地像是侦探 , 根据一些蛛丝马迹推测导致问题的原因 , 然后用实验尝试着解决 , 在这个过程当中就涉及到大量的数据处理和分析的工作 。
比如 , 如果你怀疑是某些特征分布有问题导致了模型效果不好 , 那么你需要分析特征的分布 。如果你怀疑是数据存在bug , 那么你需要设计方案 , 筛选数据 , 仔细甄别数据当中的问题 , 验证自己的想法 。如果你觉得是训练数据量不够 , 那么你需要增大训练量 , 设计对比实验……总之 , 想要排查问题都需要大量的数据分析 , 绝不仅仅是看看代码 , 想一想就能有结论的 。
感想很多想要从事算法的人真正做了算法之后 , 往往会有幻灭感 。会有一种强烈的面试造航母 , 入职拧螺丝的感觉 。原因也很简单 , 我们面试的时候问的是各种各样的模型 , 各种先进的理念和方法 , 但是入职之后面临的工作却是各种各样的数据分析以及数据准备 。比如我当年大部分时间都在写SQL做数据 , 我一度怀疑公司的职位安排 。
但当我理解了这一切的运作机制之后 , 我就理解了 。实际的工作场景和线上算法比赛不同 , 线上比赛我们可以使用各种各样的trick来提升成绩 。还可以搞各种跨界混搭 , 比如今年的腾讯算法大赛的冠军的做法就是把BERT应用在了用户行为分析的场景下 。但是在实际的场景当中 , 由于系统以及各方面的制约 , 这些想法都是很难实现的而且效果也难保证 , 最终还是要落实到基本的数据支撑上来 。
打个不确切的比方 , 各种各样的算法模型就好像是工具箱里的各式工具 , 我们仅仅了解工具是没用的 。最重要的是要理解使用工具的场景 , 从而可以根据需要选择最合适的工具 。但很遗憾的是 , 我们对数据以及场景的理解是很难量化的 , 所以面试的时候只能退而求其次问你工具的使用了 , 长此以往很多人本末倒置 , 搞错了核心竞争力 , 出现对面试的种种非议也就不奇怪了 。
今天的文章就到这里 , 衷心祝愿大家每天都有所收获 。如果还喜欢今天的内容的话 , 请来一个三连支持吧~(点赞、关注、转发)
本文始发于公众号:TechFlow , 求个关注




推荐阅读