大数据工程师的年终总结&算法数据的思考

从前东家离职已经一个多月的时间了,在这一个月,前前后后也和几家公司做了技术交流,自己也第一次静下来这么久来思考总结。今年是我毕业的第五年,也正巧赶上年底,就把这些凑到一起写个小总结吧,也没有什么主题,没有主次,纯粹记录,想到哪儿写到哪儿。

1. 推荐系统

在最近的三四年时间里,我的主要工作就是搭建推荐系统,这几年来不说看了上千篇论文也有数百篇了,这种专注让我自认为在推荐系统领域至少处在一个业界相对领先的水准,但是也恰恰是这段经历让我被打上了深深的标签:他是一个“推荐系统专家”。既然这样,那我就先来说说推荐系统吧。

推荐系统是一个太庞大的词,我们不妨先退一步说推荐算法本身,其实推荐算法本身是一个综合性的问题,他说浅他可以做的很浅,说深也可以把他做到很深。你可以简单地用最基本的Content-based,再复杂点可以Collaborative Filtering,如果你想做的深入一些,基于SVD/LDA等的降维算法,基于SVD++等的评分预测算法,基于Learning To Rank的排序算法,甚至你再转换问题,把推荐问题再转换成分类问题,或者采用以上算法前先用各种聚类算法做数据的预处理,你可以折腾出很多很多的花样。所

以做推荐领域的工程师是个很“痛苦”的事儿,因为只要机器学习领域有任何的突破性进展,你都需要去做跟踪,NLP领域出了Word2Vec,出了GloVe,其他领域的算法工程师可以说我对NLP不感兴趣,但是你必须跟踪,因为他可以辅助你去做文本内容类的推荐算法;Deep Learning可以让图像识别领域做更棒的特征工程,你也马上要去跟踪学习,因为在做图片推荐时终于有一种方式也许能解决元信息问题;RecSys2013的best paper通过调整节点顺序从而优化矩阵分块策略,极大改善了矩阵分解算法的效率,你就要去跟踪来更新自己的旧有离线算法;微软亚研搞出了一个Light LDA允许在低网络流量下去做LDA的多机并行,你就要兴冲冲地跑过去读他们啰啰嗦嗦的几十页的paper,因为终于不用忍受LDA低劣的性能了,而这些追踪往往是无穷无尽的。但是如果你一旦停止了更新知识库,就会学术界远远甩在身后,做一个“协同过滤”工程师。

但是算法的一切调整只有寄托于产品才能发挥出其最大的威力,但是如何根据产品去选择和调整算法是我认识大多数的算法工程师所非常薄弱的一点。举个实际的例子,我们都知道在所有的比赛中,多种算法的混合是最重要的环节,经常就会有人问我,说哪种混合策略是最好的,但是其实这是严重依赖于产品本身的。例如Tinder,他们的产品形态是每次只出现一个人,让你点击喜欢还是不喜欢,那么这种情况你必须需要一个算法的分类器来为每个用户选择一个合适的推荐算法,并且根据用户的反馈来实时调整分类器,因为如果用户连续Unlike了几个用户,他可能就流失掉了。但是对于LinkedIn的用户推荐列表中,你很适合用若干算法混合的算法,因为这样可以保证至少让整个列表中至少有X个所感兴趣的用户,而往往同一个推荐算法的Items是趋同的。再对于展示在首页的推荐入口区域,可以优先选择若干推荐算法的交集策略,这样可以用少量的高质量Item最大化的满足用户的心理底线,从而吸引用户点击。所以认清产品的形态和交互形式,依据产品去订制算法是成为优秀算法工程师,而非算法研究员的重要一点。

一个优秀的推荐算法,一个优秀的推荐系统的确可以为企业创造很多价值,曾经和某知名电商网站的数据总监交流,他们的推荐系统实实在在地把销售额增加了15%,但是过于神话迷恋推荐算法和过于看扁推荐算法都是一种偏激的行为。作为推荐算法工程师更应该清楚推荐算法本身的瓶颈,或者可以估计到该算法为企业带来的实际价值,从而来决定是否应该继续优化该推荐算法。何时始,何时止,是任何一个推荐算法工程师都必须要面对和决定的问题,但是聊这个话题必须要牵扯到推荐系统的两个重要部分:产品和数据。

一时想不起更好的例子来了,就说淘宝吧,以淘宝的搜索推荐为例。首先,我相信淘宝从整体来讲是不需要推荐算法的,因为淘宝是以爆款商品为主打的,构成了淘宝盈利的大部分,而我相信以淘宝的KPI和运营文化,必然会以CTR为主要的KPI,所以在这个程度上,淘宝的运营必然不停地推荐爆款商品而不可能冒着风险让这部分来做个性化。这就是产品不适合做推荐的典型例子。 另一方面,由于爆款商品的推荐所以让长尾的产品没办法积累到足够的点击数据,这使得数据的缺失和偏移变得异常严重,推荐算法更是无从发挥威力。(没在淘宝工作过,所以纯属局外人猜测,另外我相信电商网站大多如此)

那么你从这一个例子就否定掉推荐系统的作用?这个我觉得有一个例子非常容易反应情况:现在地上每隔1米就有100块钱,在遥远的10000米外可能会有500W,你到底是选择一直低头捡100块钱,还是跑向遥远的10000米去找那500W的问题。

推荐阅读文章

扫描二维码关注公众号,回复: 6479678 查看本文章

大数据零基础快速入门教程

Java基础教程

web前端开发基础教程

大数据时代需要了解的六件事

大数据框架hadoop十大误解

年薪30K的大数据开发工程师的工作经验总结?

大数据框架hadoop我们遇见过的问题

猜你喜欢

转载自blog.csdn.net/chengxvsyu/article/details/92011394