刚刚在 Trulia 的博客上发表了我的第一篇文章:Docker for Data Science at Trulia. -How Trulia’s Data Scientists Minimized Releasing, Testing, and DevOps Efforts with Docker
文章大意,就是我们在 Data Science Team 里推行了 Docker 的使用,帮助我们使用更少的精力,搭建出了一套强壮的 API 和对应的整个测试、部署流程。使得我们能继续在5个人左右的小组规模,维护和继续开发上十个机器学习相关的 Endpoint,横跨 Text Mining, Natural Language Processing, Computer Vision, Spam Detection, Search Ranking, Recommendation 等各个领域,每个人既负责算法,也负责开发、测试、部署、运维。一言以蔽之:
At Trulia, we are proud to be a full stack data science team providing end-to-end solutions, with every data scientist taking care of both researching and shipping our algorithms to production.
然而工作了一段时间,还有些其他的一些零零碎碎的想法,也一并写在这里。
机器学习正在渗透到每一个角落
打开网站,你看到的所有信息都是由算法决定的。信息的排序来自于你之前的浏览行为然后由算法生成,看到图片来自于算法选出来最合适的图片,看到的内容显示,如何显示,都由算法决定。
你收到的邮件和消息推送,所有的内容、发送的时机、发送的频率,都是由算法来动态控制。
销售们打出去的每一个电话,都是由算法,从茫茫人海中找到可能性最大的,以提高转化率。
你所看到的所有广告,都是由算法,分析你的浏览行为,给你推送最相关的内容。
算法已经渗透到每一个公司每一个产品线上。根据我们在 Trulia 的经验,每在一个领域使用基于机器学习模型的算法,都会比之前人们经验算法,在关键指标上,有极其显著的提升。又或者是极大地替代手工劳作,把成本降到几乎为零。
在这样的大趋势下,懂算法的人,更需要了解公司本身的业务流程,知道该如何把算法合理的嵌入到现有的运行环境中,带领其他人一起推动项目上线。
Data Scientist 要全栈
开发的趋势,是全栈化。程序员不能仅仅只了解前端或者后端,而是要在专注某个专精领域的同时,尽量了解和自己直接相关的各个领域知识,使得项目在开发的时候能够更加顺利。
作为 Data Scientist 也是一样。在我之前的文章:抛弃幻想,谈谈现实中的数据科学家 - Hello陈然! - 知乎专栏 中我提到了 Type A 和 Type B Data Scientist。在我们组,我们更倾向于 Type B Data Scientist,也即我们相信优秀的 Data Scientist 首先要是优秀的 Engineer,要能够对自己的产品负责,负责产品的一切。
每一个项目上线我们都要身兼数职。项目的开始都往往来自于我们认为这些东西可以做,而且值得做,为了 Pitch,我们往往要做出 Prototype。经过游说与展示,比如在每个季度一次的Innovation Week上,项目可能会进入下若干个季度的 Roadmap。一旦项目正式开始,我们就要开始搭大规模数据的 Pipeline,Infrastructure,以及最后的 API,同时做好整个系统的Monitoring,Log Analysis等等。基础设施中的部署、测试等工具也少不了自己开发与集成。同时也要不断升级和维护以前开发过的产品的算法。
这样更个流程虽然看似繁琐,然而却保证了我们对于整个产品线最大的掌控力,可以快速迭代开发,快速上线算法。也因为身兼数职,我们对于工具的选择要求格外高,使用最现代的技术可以帮助我们极大地帮助我们减少无谓得时间损耗,专注开发。
by