个人经验谈算法在实际业务场景中的应用

首先,以排序为例,有冒泡排序、快排、二分法、分桶或者分堆.......它的每一种排序过程背后,其实都是一种解决问题的方法。

比如说二分法,我们可以把它不断地去做切分,分成不同的堆,然后每个堆去分别去解决它。这样的话,就可以达到效率比较优的一个情况。

我们实际在做任何代码开发的时候,都可以把这种思维方式应用过来,而不是排序问题本身的实现它可以运用到工作中来。

我之前写分析引擎的时候有一个非常小的功能点,需要判断大家提交的分析查询语句是否存在前后矛盾的情况。

当时我是自己写了一个类似有向无环图的判断来解决。一开始写这个判断的时候并不能和曾经刷过的题关联起来,但在一些有变化的问题上,就发现需要用到刷算法时的解决思路了,比如怎样实现会更优雅,各种复杂度是比较小等。

这些都是你刷久了算法后,逐渐潜移默化的一个应用过程。

而机器学习算法的话,很多时候面临到的问题是,你学到的一些非常fancy ,看起来很厉害的模型,却在实际运用的时候发现都不work,效果也不好,甚至是会面临一些很厉害的模型因为性能太差根本没法上线。

这些情况都是比较常见的情况,所以在实际的工作中用到一些模型的时候,一定要理解它背后的原理和当时提出这个模型的过程。

只有了解了当时为什么会有这个模型出现?这个模型为什么这么设计?当时背后思考了什么样的问题?优缺点又都是什么?

把这些吃透,是你的第一步。

第二步是需要你在实际的业务场景下,结合当前的情况去不断做match。

比如说数据分布,你用到了什么样类型的特征?你的线上的算力和性能是什么样的?

结合过程中你实际遇到的各种问题,再去思考自己以前学到的理论,有哪些思想是可以应用到解决这个问题的?哪个模型可能和当前的数据分布更加匹配?

你的match做得越好,你就越能解决当前的实际问题。

所以,在我看来,我们学到的算法知识,你一定要把这个知识变成自己的认知,再用这个认知去解决实际工作中遇到的问题。

那么对于这个问题,其实你自己就会有答案了。

本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。