算法工程师的工作要分为观察数据、找特征、设计算法、算法验证、工程化、上线看效果等几步。
第一步:观察数据,从数据里找问题。
比如说你开了一家淘宝店,店里有几十款商品,有些商品卖得好,有些商品的评价挺好,价格也有优势,质量也不错,搜索排名也挺好,但就是卖的不好,于是你要把这些卖的不好的但是评价又好的商品找出来分析问题。
在实际工作中,算法工程师通过观察数据、看数据报表、分析数据曲线等步骤,对比关键数据的变化,从中发现有问题的部分。这一阶段需要数据敏感性,要具备全面观察的能力。还要具备编写脚本代码的能力,遇到需要处理的数据需要随手编写代码,需要熟悉Python,会用Shell。
第二步:从问题数据里找特征。
你整理了淘宝店里销量不高的商品,开始分析找共性问题,从定价到商品包装,从排名优化到评论星级,都没有发现问题,一拍脑门发现这些商品的展示图片做的不好,没有突出商品特点。
这就是算法工程师找特征阶段的工作了,在问题数据里找到共性特征,需要的能力往往来源于经验。
第三步:设计算法解决问题。
你发现图片的问题后开始找美工重新做图,拍摄商品图片,美化,然后加上商品的卖点,重新包装。
面对几十个商品时可以一个一个更改,如果面对几万几十万条数据时就不能一个一个更改了,需要设计算法来解决。最浅显的就像做Excel表格里,十几行数据时可以手动更改,几千条数据时就要使用公式。
算法工程师需要把任何问题都转化为数学上的向量,也就是将特征向量化,才能通过算法解决。比如更改图片这件事来说,质量差的图片往往颜色变化少,首先将图像数据进行傅里叶变换,变成频域数据,根据傅里叶变换的性质高频部分幅度高,图像的颜色变化明显,一张图片的好坏就可以用向量化表示,然后加到排序模型。
在第三步里,需要根据场景建立一个数学模型,需要具有数学建模和抽象能力以及编程能力。
第四步:验证算法是否有效。
当美工设计完图片后需要由老板审核,来验证这个图片是否符合大众需求,有条件的时候可以通过一些推广渠道进行测试,同时上线两张图片验证哪个效果更好,这是常见的A/B测试。
做算法工程师也是一样,要设计一个算法的离线验证方式来检验效果,以及设计一个上线以后的A/B测试方案来测试算法是否真的有效。这一步需要具备综合能力,也就是强大的语言表达能力。
第五步:工程化
当我们设计完算法并整理好数据之后,需要把算法嵌入到原有的系统中,保证算法的效率以及性能。
第六步:上线看效果
经过前面一系列的准备工作,终于上线了,上线之后需要根据效果再次进行调整。算法工程师的工作是通过程序处理亿万量级的数据,除了要有丰富的工作技能,还要具备一定的经验。
另外,算法工程师要学会洗数据。洗数据是算法工程师的必修课,需要把现有的数据变成需要的格式。需要脚本语言处理能力,还要会使用一些数据处理工具。