
机器学习不仅仅是
模式。这个问题的原因是,每个人都认为机器学习的模型就是机器学习本身,理解那些算法是机器学习的最大优势,但事实上它是完全不同的。谁在玩
型号?这个模型是由科学家、科学家和大公司的研究人员发明的。这项发明会产生纸张,并被他们用来滥用我们的智商。在正常情况下,你不能发明模型(如果你能,不要往下看,你可以走学术之路)?你不能修改模型吗?
所以,学习了模型之后,我才刚刚开始,甚至还没有开始。
家公司有这么多算法工程师在做什么?让我们以算法工程师为例。他们在干什么?在
观察数据->查找特征->设计算法->算法验证->清洗数据->工程->在线观察效果->转到观察数据
和一个成熟的系统中,一般模型已经大致确定。如果效果不是特别差,模型不会改变。例如,一家公司的搜索和分类系统使用机器学习逻辑回归模型。对于你来说,改变到另一个模型是不可能的,所以你只能补充一些特性
好,让我们通过这个过程看看机器学习算法工程师还需要什么能力。
观察数据
小明每天看数据、查数据、看表格、画曲线,发现销量、收藏、点击等可想而知的特征已经被使用了很长时间,所以用了三个月,没有任何进展,人都垮了,这么长时间,机器学习代码羊毛都没见过在
的第四个月,他发现了一个小问题。他发现了一些商品,评论了什么是好的,觉得产品的质量不错,但是销量没有上升,所以他总是排在后面。因此,他筛选出销量不佳的商品,希望看到它们的共同点。
观察数据阶段,你想要什么能力?呵呵,只能告诉你,需要数据敏感度,其实,就是告诉你需要综合能力,需要经验,需要产品经理的能力
除此之外,您还需要能够编写手边的脚本代码。如果有些数据需要初步处理,您可能需要编写代码来进行处理,并且应该快速编写。因为这些代码可能被使用一次或两次,所以您需要相对较强的脚本语言能力。所以python至少应该熟悉,shell也应该熟悉
查找功能
数据观察发现问题,现在要查找功能,查找功能,也就是说,要找到导致销售的因素,首先需要想象力,然后要验证你的想象力
小明的想象力爆炸了。尽管如此,花了一个月的时间才发现这些商品有一个共同的特点,那就是图片相当糟糕,人们第一眼就不想订购。如果你能把图片质量加入到排序因素中,这是一个奇迹吗?图片的质量是一个以前没有人做过的特征,最后一个特征被发现了。
所以在这个阶段,毕竟,每个人的想象力是有限的,需要更多的经验来找到与当前场景相匹配的特征。找到
设计算法
功能,但如何将此功能添加到排序模型中?这些照片有多好?他们有多好?这些机器是如何理解它们的?如果图像质量不能转化为数学向量,它将永远不会被添加到排序模型中。
是算法工程师在这个阶段的真正测试,也就是对特征进行矢量化。小明观察到,图像越漂亮,颜色变化越大,而质量差的图像往往颜色变化很小。所以他想出了一种方法,通过傅立叶变换将图像数据转换成频域数据。根据傅里叶变换的性质,高频部分的高振幅表明图像的颜色变化明显。如果低频部分较高,则意味着颜色变化不明显,这与观察到的图像信息基本匹配。这种图像的质量可以通过傅立叶变换后的高频部分的振幅来表示。然后,在进行一些标准化的改变之后,图像被矢量化,并且可以在矢量化之后被添加到排名模型中。在这个步骤
中,你可以使用你已经学过的机器学习模型,但它肯定只占一小部分。大多数情况下,你需要根据当前场景建立一个数学模型,而不是机器学习模型。你认为这个阶段需要什么技能?虽然我在这里给出的例子是极端的,但数学抽象、数学建模和熟练使用数学工具的能力是必不可少的,而且还需要很强的编程能力。这不是前一步的脚本能力,而是真正的计算机算法编程能力。
算法验证了
算法的设计,并设计了该算法的离线验证方法,向您的老板证明我的算法是有效的。否则,你有很多机会在网上尝试。这一步也是各种综合能力的结合。关键是在这一步,你需要用一种通用的语言从理论上说服你的老板。这是什么样的能力?很强的语言技能
除此之外,你需要在上线后设计一个AB测试方案,可以很好的测试你的算法是否真的有效。已经发现
洗涤数据
特征,并且该算法被设计成几乎反映这些特征。体育活动来了。清洗数据是算法工程师的必修课。数据不是你想要的样子,所以把数据变成你想要的,然后删除无效数据是一种体力活动。
类似于上面的例子。首先,每个人的照片可能大小不同。最好把它们换成一种尺寸。有些商品有多种图片。你可能需要找到最佳质量的图片进行再加工等。
这个阶段一开始也需要脚本语言处理能力,并且还需要掌握一些数据处理工具的使用。关键是要有足够的耐心和信心。当然,优秀的编程能力是不可或缺的。
工程
好了,你已经越过了前坑。给你。哈哈,算法已经设计好了,数据也准备好了。估计半年过去了。然后把它放到网上。你认为你可以带着一堆脚本上网。你必须考虑工程。如果你把你的算法嵌入到原来的系统中,如果你保证你的算法的效率,不要到处跑一天,也应该考虑代码的健壮性。如果这是一个在线算法,你必须考虑性能,不要耗尽内存。
这一步,你真的使用了你上面学过的机器学习hadoop和spark工具。读完上面的内容后,我不需要说完成这一步工程需要什么能力。这是标准软件开发工程师或高级开发工程师的必要技能。
在线看效果
全部完成,来回10个月,终于可以上线了,好了,真正的测试来了,看看在线效果呗,产品经理说,做个AB测试,结果呵呵,点击率下降了,小明!经过10个月的努力,点击率下降了吗???老板不会骂死你,所以你必须有很强的抗攻击能力。
呵呵,赶快下线,看看一开始出了什么问题,又花了一个月修改算法,然后重新上线。好吧,这一次很好,命中率提高了0.2个百分点,继续努力,看看是否还有什么需要挖掘的,所以你开始查看数据。
虽然这是0.2,但是在一个大的数据集下,增加0.2已经是一个很好的增加了,所以如果你花这么多钱来培养算法工程师,如果你一年能给0.2几次,这是非常值得的。
让我们总结一下
以上的许多过程。完全由一个人完成确实有点困难。我有点夸张了。中间的一些步骤是由某人协调的。产品经理将在观察数据时与您合作,数据工程师将在清洗数据时与您合作,系统工程师将在工程设计时与您合作。然而,作为一名机器学习算法工程师,你必须能够掌握整个过程,所以即使是你也应该能够自己完成整个过程。
这只是一个标准的算法工程师应该具备的能力,当然我这里以搜索算法为例,其他的算法工程师没有太大的区别,总是不能运行上面的过程,当然,如果你是一头牛,可以根据场景修改机器学习模型,甚至可以想到一个模型,那就更厉害了
是好的。让我们把上面标记的关键部分拿出来并总结一下。让我们来看看一个算法工程师需要什么技能:
数据敏感度,
观察数学抽象,数学建模和数学工具的熟练使用
编写脚本代码的能力,强大的计算机算法编程能力。高级开发工程师的素质是
想象力、耐心和自信、较强的语言表达能力、抗攻击能力
那么,还有一个关键点,你需要非常聪明
,当然,如果你能做到以上几点,你基本上会很聪明。相反,如果你能做到这一点,机器学习的模型、理论和工具将变得不那么重要,因为这些只是随时可以学习的知识和工具。
你说,这些都是通过读几个博客,读几本书,几节课就可以了??
,当然,我们在这里谈论的是总体情况。如果你只是在做研究,那么你需要将上述技能熟练程度提高一个数量级。
最后,你正在学习机器学习,并激励自己成为算法工程师。你准备好踏入这些深渊了吗??
