数据分析师需要精通算法细节吗?

知识,只有放在具体场景下才是有意义的,不然只是一些概念,并不能真正产生价值。“房子是由石头组成的,但把一些石头简单放在一起,那并不等于就是房子。”分析挖掘应用与算法紧密相关,如果只是知道很多的算法,并不表明你就是一位合格的数据分析师。 

分析挖掘领域中的算法(分类、聚类等)相对于《数据结构》课程中的算法(排序、查找等),明显复杂的多。编程语言中集合类被使用的频率非常高,内部就有很多常规的算法,大部分软件研发人员并没有深入学习研究过,但基本不影响日常的研发工作; 同样的,对分析挖掘领域中的算法内部实现细节的精通,也不是一名合格数据分析师必备的技能(能掌握最好)。但还是有不少人在算法上面投入了过多的时间和精力,为什么?

常规的软件研发过程中,涉及到的数学知识很少超过初中水平,而在分析挖掘应用研发中,算法是一个核心要素,大部分算法的原理或实现,或多或少会涉及一些高等数学知识,说到数学,普通人学的快忘的更快,数学本身是抽像的,自然而然的,算法对很多人来说就有了神秘感。人是有好奇心和进取心的,这在人自身进化过程中起到了非常大的作用;同样的,人经常会高估自己的毅力及短期内能取得的成果,结果往往是:费劲周折投入大量时间弄明白一两个算法原理或实现后,再也没有勇力继续下去,此时可能走向另一个极端,只要能使第三方算法库在自己的系统中运行起来且能输出结果就可以了,效果不理想再换一个算法。

如果不是为研究目的,纠缠于算法的内部实现细节,时间成本不说,还会容易对算法的理解陷入只见树木不见森林的境界。每种算法都有其适用场景及前置条件,具体使用时超参的影响也极大。如果不从更高层次理解和对待算法,在实际运用算法时,就有可能犯刻舟求剑的错误,难以取得预想的效果不说,更糟糕的情况可能是,过早的否定掉一个本可以很好解决当前问题的算法模型,只因相关的工作没有得到足够的重视(譬如数据预处理方式不合理)。

数据分析师的成长,本身就是一场马拉松,需要合理分配时间和精力。专注力和自制力是一种稀缺资源,需要省着用。经常提醒自己的目标是什么,才有可能把事情做好,对于数据分析师来说尤其如此。

大部分业务场景,系统都是分层实现的。数据分析师的首要目标是解决具体问题,而不是展示技巧,算法只是解决问题的一个工具或者手段,并不是目的。建筑设计师不需要精通制造钢筋水泥的工艺,但需要了解不同钢铁、水泥的性质用途及之间配合关系,这个道理同样适用于数据分析师对算法的态度。

 

数据分析师对于算法的学习,建议在起步阶段找一个好的算法库(Scikit-learn就比较合适),通读一遍常用算法API的帮助文档,然后找个数据集,观察不同参数组合下,结果输出的变化。这个事情看上去有点无聊,但真正做一次收获会很大。很简单的事情,你做了,就已经走在很多人前面了。

 

事情的重要性与成本投入并没有必然的关系,就像空气和水一样。

 

算法只是数据分析应用过程中最后的仪式,算法相对业务来说是稳定的、成熟的,可以直接被使用,极少场景下需要全新设计和实现一个算法。业务模型,能用简单算法解决的就不要使用复杂的算法,经验告诉我们,复杂算法提高的收益与投入往往不成比例,还会带来可解释性差、算法参数调教难的问题。数据分析师需要关心理解算法,但更应该关注数据层面的事情,那更能体现一个人的观察、分析及解决实际问题的能力。说到数据,自然而然就会谈到特征工程,但什么是特征呢?我们下期见!

猜你喜欢

转载自www.cnblogs.com/hong-ke/p/9666866.html