工作第三年(2015)小结
往年的年终总结都是放在元旦跨年时写,但细想之后还是觉得放在春节写来得合适,毕竟春节前往往是最忙最有事情做的时段,只有回到家之后这一年的工作才算完。但是年后发生了各种事……所以拖到了今天才做总结,还是得过去的15年一个好好的交代。
“2013,给自己的评分是不及格;2014,总算是步入正轨”,2015年,应该说是努力让自己心安理得吧。
CS229
CS229是Andrew Ng在斯坦福大学开设的一门机器学习课程,相信非常多的同行是看着这个公开课入行的,向Andrew和提供视频翻译与课件的网易公开课脱帽致敬!这里就引用一下当时学完监督学习部分前11课后的总结吧:“从过年期间(第一篇笔记发布于2月24号)到清明假期(今天4月5号),历经40天左右的时间终于把CS229监督学习的部分过了一遍。期间解开了无数困惑已久的机器学习领域的问题,感觉整个人神清气爽。感谢网易公开的翻译,并且细心地提供了讲义下载,当然更感谢Andrew大神的精彩授课。接下来需要先掌握一个好的工具箱;然后开始践行先Implement something quick-and-dirty,再通过error analyses优化重点环节。像个ml专家一样去战斗!”
复旦研究生
担心未来本科文凭不够用,所以14年报考了复旦大学软件学院云计算大数据方向的工程硕士。15年3月开始正式上课,也拉开了周末单休的序幕。虽然陆陆续续还是延续了大学时翘课的习惯,但是在这里认识各行各业的同学,交到了有趣的朋友,还能及时向资深的教授以及教授带的全日制研究生同学请教,收获颇丰。
推荐系统
在数据部门,BI的工作比较多,通过专题研究给出的分析报告可能结果漂亮,但推行起来总是很难,所以早早就想好15年一定要落实推荐系统的项目,可以自己控制各个环节,让业务部门看到数据的威力。于是4月开始,就从之前配合比较多的识货部门开始践行推荐系统,认真学习了最基本的协同过滤算法和Mahout中相应算法的源代码后,实现了基于时间惩罚与用户活跃度惩罚的物品余弦相似度,同时基于物品标签与物品类目进行rescore,完成了海淘商品内页相似商品的推荐。(Mahout中无偏好值的协同过滤算法计算余弦相似度其实是错的,不知道现在改了没有)由于是从人工选品推荐改变为算法推荐所以数据效果比较漂亮:推荐商品购买数提升163%,购买用户数提升217%,消费总价提升373%,ctr提升73%……这个成功案例确实挺爽的,业务部门更认同数据部门,自己也挺有成就感的。到了项目后期,我甚至自学了Scala,在做spark同事的帮助下玩起了MLib,想像bat一样去训练点击模型做ranking,进一步提升效果。最后auc做到了0.7418,无奈这样大的工程我一个人是hold不住的,而且见效也慢,只好放弃了。
量化投资
15年6月,几乎每一个中国人都在谈论股票,我自然也按耐不住,想通过机器学习的方法来预测涨跌(现在看起来是too young too naive)。正好复旦的机器学习课要求大家组队做一个项目,于是拉了一票炒股的同学,找黄叔要了付费版的万得账号,拔了14年整年的行情,用SVM做了个庄家股的识别模型,从实验数据上看效果是不错的,但后来各种复杂的事情影响没有拿15年的数据做回测也就没有下文了。直到11月的时候参加了R语言大会的上海分会,认真听了一位08级厦大学长的分享算是了解了业内到底是怎么做量化的,大体了解用机器学习做量化是不靠谱的,就算靠谱的方法这里水也太深坑也太多,还是踏踏实实做互联网吧。
七月
上一节里说到因为各种复杂的事,没有继续把模型放到15年的行情中去做回测,这复杂的事就是我们数据部门要独立出去成立公司,因为感觉这样反而离业务更加远了,自己没法把数据做深了,所以差点儿换了工作,好在大虎扑前辈们的信任和劝阻,得以继续留在虎扑体系内。月底的时候去了趟伦敦散散心,算是一次愉快的旅行,每个角落都精致的伦敦,中世纪一般的爱丁堡,还有近距离接触酋长球场让我决定做一名真正的枪迷。
中文分词
anyway,数据部门还是和其他技术岗的同事组成了新公司动云,目标是做体育行业的云服务。所以从伦敦回来不久,我们就搬离了虎扑去了新的办公室。而我的工作重心则转为了搜索,虎扑原本的搜索真的不堪入目,因为采用了一元分词,搜索“斯科尔斯”可以搜出“科比”可以搜出“科斯塔”就是看不到生姜头斯科尔斯。所以,我从中文分词开始入手,挑选了,先是看了中科院那个著名分词器ICTCLAS的paper,深深信服。但可惜人家不开源,于是找到了ansj(号称是Java版的ICTCLAS,但其实离ICTCLAS论文中介绍的完整算法还差得挺远的,但已经是我能找到最靠谱的中文分词开源程序了)。在艰难地啃完ansj的源代码后,八月基本也结束了。
Elasticsearch
中文分词搞定后,飞速转向了对开源搜索引擎框架的研究,一番对比还是决定选用Elasticsearch,因为ES从第一天开始就是面向分布式搜索开发的,而Solr是后续逐渐转为分布式的。好在ES有完善的RESTful设计,并且文档里用的也都是RESTful接口,学习成本不算高,大致花了两三周,把官网的The Definitive Guide刷了一遍,心里也比较有谱什么能做什么不能做了。正好识货之前使用的搜索也是基于ES的,于是以类似于顾问的身份,跟识货的开发一起优化了一下他们的ES配置和搜索算法。总体看下来有提升,但没有推荐系统那么明显。
Linux
到了十月,终于要啃最难的骨头——论坛搜索了。直到这时我才发现,我不但要搞定搜索算法,还得自己搭ES集群,自己想办法把数据导入ES建索引……不过利用这个机会,正面赢刚了一下Linux真是蛮爽的,学习各种命令,了解web服务真的大多是字符串游戏,学会crontab,逼自己使用vim,爱上文字界面开始鄙视图形界面……虽然不简单,虽然花时间,但是能掌控服务器的感觉真的很爽,妈妈再也不用担心我吓敲命令搞不懂权限问题了。
论坛搜索
虎扑论坛,虎扑社区一直是虎扑留住用户的核心,但毕竟是十年前的产物,基础架构和数据表乱成一锅粥。光光主贴内容就有900张分表,一开始真是有些无从下手,并且我还得从线上数据库拿数据,这样模拟真实环境才能测试搜索效果。在这里要好好感谢一下RStudio的作者,没有Server版的RStudio这个任务我肯定完不成。总之,各种挣扎之后总算理清了数据,且通过crontab实现了几乎实时的增量索引更新,顺利把论坛搜索做上线了!当然事情不总是一帆风顺,新的搜索算法步子迈得太大使用了综合考虑匹配度、时间、质量的算法,而我们的老用户习惯于按时间排序的搜索结果,因此虽然大大改进了分词,但用户反而不买账(因为坚持用那么糟糕的老搜索的用户已经知道怎么规避无效的搜索词了)。对步子迈太大容易扯着蛋这句话更深入理解后,还是把默认排序改回时间顺序,最终实现了平滑过渡,看到现在有网友说虎扑论坛的搜索好用多了,心里还是美滋滋的,但我不能暴露我的虎扑id,不想带上官方身份发言束手束脚。
虎扑体育App搜索
往移动端转移已经是业内的共识,而虎扑体育App现在就是我们的重中之重,而此前虎扑体育App一直没有搜索功能也被用户喷得不轻,有搜索的版本必须在过年前上线,于是开启了疯狂加班模式,好在之前的积累比较靠谱,顺利完成了任务,得以安心回家,作为虎扑的员工兼用户,为用户做新功能从某方面来说也是为自己做,想想加班起来也是挺开心的。
恩……本命年就这么结束了,羊年,应该说是非常努力地让自己可以心安理得说:我是做机器学习的,我过推荐系统的,我做过搜索服务,我是一名数据工程师,我是程序员。