当前位置:首页 » 操作系统 » 算法调包

算法调包

发布时间: 2022-06-21 20:50:14

㈠ 有没有必要把机器学习算法自己实现一遍

1对算法细节的理解更加深刻了。书中毕竟不会给出所有细节,而且书本身可能就是错的。我几乎是把所有公式重新推了一边,重新把这本书写了一遍,自己存下的note里面公式数量绝对远远多于书本身,期间也发现了书中无数的错误,这些错误在初读的时候根本意识不到。这样一遍下来,一个side effect就是让我变得愤青了,看什么paper都觉得烂。因为读paper的时候,你会发现,很多paper违背基本常识,即使影响力非常大的一些paper里也有这样那样的错误。
2可以了解很多看书学不到的各种trick。所有算法几乎都有坑。比如hyper-parameter什么意义怎么设,怎么初始化,numerical stability的怎么保证,如何保证矩阵正定,计算机rounding error的影响,numerical underflow和overflow问题等等。
3对整个领域各个算法的关联有更深刻的了解,思维形成一个关系网。看到一个算法就会自然的去想跟其他算法的联系,怎么去扩展。如果一篇paper我不能把它纳入到这个关系网里,我就觉得自己没懂。要么推出联系,要么推出矛盾证明这篇paper垃圾。另一个side effect就是我看paper从来不根据实验好坏判断优劣。虽然自己动手实现算法有好处,但是性价比几何还是个见仁见智的问题,毕竟这是一个很费时的过程。我并不认为一定有必要自己实现书上所有算法,毕竟每个人所能关注的领域还是有限的,懂得算法大致原理,具体用的时候在细研究就可以。很多算法我也是写完了从来没用过。几年过去后,我在回头看自己的代码也很难看的懂,细节还得看公式。但是对于自己的研究领域我建议还是有必要把经典算法动手实现一遍加深理解。

㈡ 算法工程师应该具备哪些工程能力

作者 | 木东居士

来源 | Data_Engineering

最近看了 Milter 的《算法工程师究竟需要哪些工程能力》这篇文章,有所感想,因此也写一篇关于算法工程师的技术能力的问题,和大家分享一下居士关于算法工程师的技术能力的观点。

对于一名优秀的算法工程师,他(她)要具备的不仅仅是出色的技术能力,也要有很深的业务理解能力和对外沟通能力,总之,要求可以很高!

但是,从职责能力的划分上来讲,算法工程师首先是一名工程师,因此本文主要从工程能力要求上进行一些探讨。

开始之前先放一份思维导图,这将是这篇文章要分享的核心内容:

工程能力概览

算法工程师,从名字上我们就能看出,一名算法工程师首先应该具备算法能力和工程能力,我们可以认为这是基础的技术能力。由于现在开源技术的普及,Sklearn、Tensorflow 和 Spark ML 基本已经成为大部分算法工程师标配的工具库了,因此,熟练的调包能力也是决定了一名算法工程师能否快速实现需求。

其次,在真实的生产环境中,算法的落地会遇到各种各样的业务场景和数据环境,这也要求算法工程师需要具备Pipeline 构建能力,将整个生产环境中的数据流和模型打通。同时,在生产环境中,会出现各种“疑难杂症”等待你去解释,比如说为什么实验效果特别差?为什么模型效果不稳定?这就要要求算法工程师需要具备一定的数据分析能力。

很多时候,你会发现,你用在数据分析和Pipeline构建上的精力可能占据了你8成以上的工作内容。

当你具备了上面的能力时,你已经可以称自己是一名算法工程师了。此时,你可以去对着数据分析小得瑟一下:“你看,我能构建整个模型的Pipeline,你却只能拿到别人提供的数据后调调包吧。“或者,你也可以去找开发得瑟:”你看,我懂了很多算法哦,你就只会写代码吧。“

得瑟完之后,我们还是回归正题,算法工程师只具备这样能力是否已经够了?答案当然是不够的。由于不同公司的团队成熟度不同,工具化和流程的成熟度都不同,这就会对算法工程师有不同的要求,比如说模型发布能力和报表开发能力,当然也会有一些其它能力,虽然可能不是特别重要,但是当这些工作没人帮你做的时候,算法工程师可能依然要承担起这些工作内容,比如说灰度测试的能力、负载均衡的能力等等。

将上面的内容整理后,就是这样一份思维导图了(一张图多看几篇更能加深印象,因此我再贴出来一遍)

工程能力详解

一、基础能力

算法能力

算法能力就不多说了,算法工程师的基本能力要求,不懂算法对于一名算法工程师来讲是不太合理的。这里居士把统计学的内容也放进来了。

编程能力

编程能力主要分为两部分:

Python、C++、Java这类编程语言,这三种也是算法工程师需要了解的主流编程语言,一般掌握其一就够,看不同公司。 Sql就是很通用的能力了,Sql也是一门编程语言,而是是数据处理最常用的语言! 很好用。 大数据场景下,要了解Hive Sql。

调包能力

大家虽然会调侃调包侠,但是说实话,能调包调的很溜的人,也是不多的,比如说现在让你自己用tensorflow构建一个复杂网络,不能google,你能写出来吗?能记清楚用法吗?

Sklearn Tensorflow Spark ML

二、核心能力

Pipeline 构建能力

Pipeline构建能力,这里想表达的更多的是整个数据流的构建能力,数据从日志->特征->模型训练->反馈,这一个链条能否完成的能力,这里面会有很多难题需要克服。比如说:

实时和离线模型一致性问题? 离线和实时特征一致性问题? 实时特征构建的问题? 数据延迟的问题?

很多时候,模型发布之类的工作是可以由其他同学支持完成,但是数据流这种问题更多的是需要算法工程师来解决的。

数据分析能力

这里的数据分析能力不是指商业分析或者业务分析,更多的是指特征分析、算法效果分析和各种异常问题定位分析的能力。

很多时候,两个算法工程师能力水平的强弱从数据分析能力上也能窥得一二。

三、辅助技术能力

辅助的技术能力是指,你会不会的影响不会特别大,但是也都是有用的能力,特别是不同公司的发展情况不同,很可能会出现一个算法工程师既要做数据接入、又要做数据清洗、还要做算法平台

也要搞前端、还要负责模型上线、系统运维。

这里就不再细讲了。

思考一

聊一下对技术能力、工程能力和数据分析的思考。

居士个人的理解,技术能力更多的是偏向于一个一个的技术点,而工程能力更多就是在一个团队中将项目做好的能力。很多算法出身的工程能力不行,那么他做的单纯的一个模型是无法应用到实际生产中的,而工程就是指把理论落地实际生产的过程。那么工程包含了什么?它包括了系统架构设计和模块设计、数据流搭建和平台搭建、调包或算法开发、分布式、上线以及各种落地的代码开发。报表和监控,其实本质也是做数据流,边缘性的可能要做些后台和前端的开发。

然后数据分析能力是什么?数据分析(不是纯粹的数据分析)除了分析方法论和套路外,是一个很综合性、相对偏软一点的能力,比如说你通过分析发现了我们的系统有哪些可以优化的点,通过分析发现了问题的原因是什么,这些都是分析能力。

思考二

针对前面的内容,和 Cathy 讨论后,对整个思路做了新的梳理,大家直接看图就好,居士也认为这样描述可能更为合理。

思考三

这里再补充一个模型复现的能力,比如你看了一篇论文,发现这个模型可能很适合自己的业务场景,那么你是否能力将论文里面的模型快速用公司现有的平台和工具来复现?

居士认为,这一个是一个非常重要的能力,但是没有想好具体该怎样划分。

㈢ 机械学习 能调包还需要学算法吗

在算法方面,需要一定的数学功底。有些简单问题,只需要概率论、离散数学、线性代数等即可解决,有些艰深的难题,需要近世代数、图论等高深数学功底。

例如:请你设计一个算法,把一堆正整数分成两部分,使得这两部分数字的和相等。如果不存在满足条件的分法,请算法输出“不存在”;如果存在满足条件的分法,请算法给出结果。比如1, 3, 6, 7, 8, 14, 23,可以分成【1, 3, 6, 7, 14】和【8, 23】,每部分的和都是31。该问题是一个NP完全问题,目前没有多项式时间解法。

如果你具有数学功底,显然在设计算法上会更强大,当然如果数学功底不深厚,就要多通过经验和眼光弥补了。

㈣ 算法工程师工作期间需要掌握什么知识学到哪些核心技术

算法工程师的主要核心技术基于数学,并辅以语言。要全面掌握的知识包括高级数学,复变函数,线性代数的离散数学,数据结构以及数据挖掘所需的概率论和数学统计知识。不要太受约束去平时阅读教科书并多练习,并培养良好的思维能力。只有那些有想法的人才能拥有技术的未来。尝试实现您遇到的任何算法,无论算法的优劣总是有其自身的特征。此外,您必须具有一定的英语水平(至少6级),因为该领域的大多数官方材料都是外语。

计算机及相关专业本科以上学历,在互联网搜索,推荐,流量或相关领域有2年以上工作经验。熟悉机器学习/自然语言处理/数据挖掘/深度学习中至少一项的原理和算法,并且能够熟练地建模和解决业务问题。精通Linux平台下的C / C ++ / Java语言开发,精通使用gcc / gdb等开发工具,并精通Python / Linux Shell / SQL等脚本开发。熟悉hadoop / hbase / storm等分布式计算技术,并熟悉其运行机制和体系结构。具有出色的分析和解决问题的能力,思路清晰,并对工作挑战充满热情。具有强烈的工作责任感和团队合作精神,并能够交流和更好地学习。

㈤ 图像算法工程师待遇高吗

的确算得上是一个入算法坑的黄金时间,曾经的条条大路通 CS 变成了条条大路通 AI,不管你曾经读的是物理还是生物,化学还是数学,只要你会 Python,会统计学基础,那时的我都会推荐你们来试一试加入算法这个坑,我也抱着体验的心态开了几次知乎 Live 都讲了一些关于算法入门相关的课,按那时候来讲,只要你“思路正常,逻辑清晰,吃苦耐劳,肯学习”,在算法这个坑里摸滚带爬四五年到现在,你要是在大厂,基本上都能拿到这个数,放一张最近的图可供参考。

图片引用至 @曾加 ,可以参考这位大佬的最新文章:

曾加:最新!互联网大厂各职级薪资对应关系图(2020年初)

zhuanlan.hu.com
图标
以我熟悉的阿里为例,文中所说的二三十人团队,那基本上就一个P8主管,下面再拆成2-3个小组,每个小组有一个P7/8带队,带着一群P5-P7干活。这就基本构成了阿里的一个最小组织单元,每年的绩效和奖金大体上都是由这位P8主管决定的,所以我们一般尊称为老板……

扯远了,其实我想表达一点,如果现在再有人来问我,学了 Python 之后怎么样加入算法坑比较好,我的建议是不加入。

我们常说的算法,本质上是统计,而统计是基于大数据的。目前能真正拥有大数据基建的企业其实并不多,能通过算法产出新价值的就更少,所以看起来搞 AI 的风风火火,其实大部分都是投资人含泪投的钱,背后能赚钱的少之又少,即便是在大厂也不例外。

所以一个目前仍不赚钱的行业,冲着心中伟大的理想和抱负,会像招开发那样花重金吸纳大批人才吗?答案明显为否,其实只需要花重金留住顶尖的算法人才即可,调包调参的 AI 选手无论何时都可以招得到,而目前大部分通过自学、培训机构出来的 AI 人才,就是这样的 tool boy。

巧的是,曾经我也是这样的 AI 选手,但谁叫我运气好,混得好不如混得早,现在转去数据分析那可就是降维打击了(手动狗头

最后再概括一下,今年是 2020 年,如果想从事算法和数据行业,建议先读一个相关专业的硕士,比如数据挖掘、图像识别等,且学校不能太非主流,不然可能简历面都过不了。

㈥ 会用汇编语言写机器学习算法是什么水平

当你犹豫看书看完,然后对调包充满疑惑甚至是觉得很空动时,问题出在编程水平不足而非机器学习算法本身

㈦ 本科毕设需要用到机器学习的算法比如说支持向量机,算法需要自己写吗还是用现成的

有现成的库啊。你看看sk learn这个,里面有自带数据集和算法,使用很方便。里面支持向量机分为支持向量机回归SVR和支持向量机分类SVC

㈧ 为什么手动实现决策树效率比调包低很多

1.每个算法模块按照“原理讲解→分析数据→自己动手实现→特征与调参”的顺序,“原理加实践,顶天立地”。
2.拒绝简单的“调包”——增加3次“机器学习的角度看数学”和3次“Python数据清洗和特征提取”,提升学习深度、降低学习坡度。
3.增加网络爬虫的原理和编写,从获取数据开始,重视将实践问题转换成实际模型的能力,分享工作中的实际案例或Kaggle案例:广告销量分析、环境数据异常检测和分析、数字图像手写体识别、Titanic乘客存活率预测、用户-电影推荐、真实新闻组数据主题分析、中文分词、股票数据特征分析等。

热点内容
sql绿色 发布:2024-11-08 17:26:48 浏览:805
安卓手机如何更新红标 发布:2024-11-08 17:25:23 浏览:62
python正则空格 发布:2024-11-08 17:14:18 浏览:234
蟑螂数据库 发布:2024-11-08 17:13:07 浏览:780
洗车机的配置是什么意思 发布:2024-11-08 17:13:01 浏览:265
java开发文档编写 发布:2024-11-08 17:06:49 浏览:433
文件夹取消折叠组 发布:2024-11-08 17:05:41 浏览:569
微信第一次支付密码是什么 发布:2024-11-08 17:05:21 浏览:578
国内免费云服务器腾讯 发布:2024-11-08 17:03:53 浏览:664
摩尔庄园脚本容易检测吗 发布:2024-11-08 16:54:47 浏览:756