一个路人理科应届生找数据挖掘类工作的前前后后

目录

  • 漫谈
    • 在校篇
    • 面试篇
    • 实习篇
    • 再面试篇
    • 现状篇
  • 结语

漫谈

在校篇

  首先说下自己的(马赛克)情况吧:19年X月份毕业于XX学校的一名双非统计系理科生,为什么要强调统计系理科生呢,还不是在找工作时老被嫌弃嘛!后面会聊到。在校期间打打酱油,虽然希望自己以后从事数据类的工作,但不知从何学起。很多人肯定要吐槽了,学统计的不应该很容易上手数挖或机器学习吗?其实统计模型注重可解释性和解的性质(如一致性),而ML模型更注重预测结果和效率,所以从个人角度来看,侧重点的不同让统计和数挖之间还是有一定“代沟”的,也使我在数挖方面的学习曲线相对较平缓。除了理论知识不足外,我还有大部分理科生的通病(也可能又只是我):代码能力不足。拿我自己的情况来说,在校期间只会用R(没黑R,是我菜),那种写一行代码就可以编译运行一行的感觉真踏实,偶尔也会露一手函数式编程,像把毕设用到的600+行代码强拆成10+个函数发给导师查看,代码没报错能跑就行,不求性能和效率,。当我转用Python时出现了这一幕:对着的定义懵了一下午,明明是中文,咋就读不明白啥意思呢?其实最近在接触Java的我依然挺奔溃的…最后就是对实战的欠缺,好不容易模型理论我看懂了,模型代码我会了(叫我调包侠),然后我屁颠屁颠地拉了一份现成数据跑一下,如果这就OK了的话,估计你会像我一样在面试中被KO。当时的我并未意识到这一点,因为很多文献里用到的数据都是是处理好的,论文模型验证部分用到的数据都由模拟产生,除了了解一点填补缺失值的方法外,我对特征工程调参等一无所知。后来我是通过几个比赛数据熟悉了比赛中数挖的流程,还在相关的比赛论坛中看到了好多大佬的代码,不仅能学习到处理数据的思路,还能看到别人的代码风格。
  这里我还想感谢下我的导师,能把我这种懒学生带至毕业真不容易,而且在我还没入学前就给我推荐了《统计学习导论——基于R应用》这本书(别误会,真不是广告),虽然不是什么经典的数据挖掘或机器学习书籍,但算是我个人在ML方面的启蒙书籍吧,还记得里面的交叉验证和树模型思想让我当时有点惊讶,特别是树模型这种if-else的判断形式居然能进行复杂的分类预测。
  在学校无忧无虑的时间很快就见底了,毕设论文初稿上交后,为了后续的实习面试,我也尝试做了一些准备:
1、有事没事儿敲敲Python,熟悉下Pandas和Numpy的常用操作和模块,也试着刷过LeetCode题目(没坚持下去);
2、学习梯度下降法、拟牛顿法等常见优化方法的原理(涉及偏导),因为统计类论文和课本都涉及的不多,关于参数求解见得最多的恐怕是最小二乘法的显示解及其变形(计量经济学里常见);
3、结合李航老师的《统计学习方法》推导感知机、SVM、CART树等经典模型中的重要公式,加强对模型的记忆和理解(树模型很独特、很重要);
4、了解常见的集成框架,如Bagging、Boosting、Stacking(号称比赛杀器),还有各自的代表模型:随机森林、GBDT;
5、美化简历,该套模板就套模板,该彩印就彩印,舍不得孩子套不着狼。

面试篇

  研二暑假期间没去实习(现在有点后悔),论文初稿交完后跑了好几个学校的招聘会去投简历,当然都是投数据相关的岗位,说一下当时的现场面试吧。根据面试官分为两大类情况:
第一种是该公司的技术人员没在现场,所以是HR面我:
HR:“会Java或C++吗?”
我:“不会,但会一些Python”
HR: “是数学系学生?但我们可能更需要计算机相关专业的学生”
我:“…”
  通常HR面试,他们会从公司整体的角度来提问,所以我没有实际项目经验以及编程能力一般般的缺点会被放大,凉凉是很正常的(只怪自己菜)。
  还有一种就是技术面,这类面试官一般会问挺多的专业知识(我翻车好几次),为了不冷场我还会说点个人对于统计和机器学习的理解,毕竟要强调作为理科生的优势给自己加分嘛!原本不擅长交流的我,经历几次面试居然变得挺能扯…
  总的来说,面试还是要好好准备,特别是简历上写的东西一定要保证对答如流,然后就是会扯,最后还是会扯(表达能力很重要)。另外面试的时候要问清楚岗位的工作内容和领域,比如很多领域都需要数据分析师:生物医学、金融、电子商务等等,确认offer前一定要了解清楚。

实习篇

  大概在18年11月份中旬,我终于通过校招收到第一份实习offer,是电商方面的数据分析工作。遗憾的是,转正前一天我还是离开了,不过从双12期间入职到19年4月底离职,我依旧收获满满:一群活力四射的小伙伴(BB、YQ、LY、YF、MN、YX、RX…)、善解人意的领导、对电商领域的了解、更加明确的职业规划等等。另外还有一些个人的感受(可能是错觉):相比模型和代码能力,数据分析工作更注重对业务的理解、指标构建和数据的展示,当时涉及到建模的工作都直接在阿里某平台上用鼠标点点点就完成了:包括建立正负样本集、筛选特征、数据清洗、模型的训练、预测等,但该平台的便捷性与局限性共存:可选模型种类过少(SVM、LR、GBDT等)、无法做过多的特征工程、无法做简单的模型融合等问题(相信阿里爸爸会改进)。也正是这部分工作让我对数据建模有了新的认识:不同于很多比赛给定的数据字段和任务,真实业务场景下的建模,需要根据自身需求具体化模型任务,比如在筛选广告投放人群包时根据不同的产品建立预测任务不同的模型:对于老客,当然希望模型筛选出的投放人群具有较高购买转化率;而对于新客,不妨以预测收藏加购行为进行建模来明确产品的拉新对象。任务目的不同自然会导致选定样本正负集的标准不同以及选入特征的不同。
  近年来深度学习的热度有增无减,所以实习期间我也自学了一些神经网络的理论基础,可能是理科生的优势?(迷之自信)我看理论部分不是很吃力,还了解了ReNet、AlexNet、VGGNet等经典CNN结构,所以当时我琢磨着是不是该结合自身专业再明确下自己的职业规划呢?
  就这样,在实习期间我把自己的职业规划从数据类工作细化到了关于结构数据的数据挖掘或机器学习类工作。为什么是结构数据呢?因为我对NLP和CV方向真不懂,当然不排除以后工作需要也会去学习。
  定好目标后,趁着还是应届生的身份继续投简历面试。

再面试篇

  每年春招最佳的时间应该是3到4月份(金3银4),当然大厂合适的岗位坑早在秋招就被大神们蹲好了,磨磨唧唧的我于四月中旬开启海投模式,也收到了几个面试,都是关于数据挖掘和机器学习类的。有我中意人家,人家不中意我的;也有人家中意我,我不中意人家的(自觉膨胀);也有互不中意的;当然第一种情况最多…下面说说这期间我的面试经历。
  先大致说下我简历上的主要内容:
1、自己做过的一个比赛:之前都是拿已经完结的赛题练手,毕竟有很多现成代码可以参考,后来遇到个合适的比赛,做了一周,再“借鉴”论坛里大神们说漏嘴的强特征居然进了复赛,然后就没然后了…(毕竟分数差个0.1%,排名直接下一页)
2、在校的论文:应届生总要写点在校期间的学术成果吧,难道告诉他我王者荣耀贼6吗?
3、所掌握的常见模型、方法:就是之前说过的SVM、梯度下降法这些,因为本身没有什么数挖项目和实战经验,所以有必要写些自己所掌握的基础知识;
4、之前的实习经历:一些数据分析的日常工作内容,其中我还强调了涉及到模型的工作。
  依旧是一顿海投过后收到几个面试,其中一个是做类似风控的面试,然后被问到XGBoost的调参时翻车了…知道我有多水了吧。所以不太建议把模型当成“黑箱”使用,多少还是要了解一些常用模型的原理,甚至可以读读相关文献,要知道为什么调节某些参数可以防止过拟合等等。这期间我还面了个做图像的岗位,CNN那几个经典网络结构也忘得差不多了,Tensorflow也只是了解更别说什么GPU编程了,而且图像方面的实战经验压根没有(Mnist手写数字集算么…),所以上来没聊几分钟就冷场了,毕竟对CV没什么准备,属于意料之中的翻车。几经波折还是拿到了3个offer,其中2个是做量化投资相关的工作,出于种种考虑我选择了现在的公司,至此也获得了自己第一份有关数据挖掘的工作。
  总结一下这个阶段我的面试感受:
1、还是要有针对性的投简历,不然像我上面提到投了个做CV的岗位,面试只会尴尬;
2、被面试官问到了实在不会的问题不要强撑,直说不会但可以学,现在不会并非代表以后不会;
3、吹牛的尺度要把握好,模型的训练很像,欠拟合和过拟合都会导致效果不好。一味谦虚让人感觉你没啥能力,而牛吹过了圆不回来会给人不靠谱的印象;
4、在面试的结尾,面试官一般会问你有什么问题,我都会反问面试官如果在这个领域工作的话我还需要具备什么技能或能力。充分利用好每次面试中获得的信息,人面试官怎么也比我这种菜鸟强很多,得到的建议好好消化或许就会成为下次面试中的亮点。

现状篇

  目前算是做应用类的算法岗位吧(听着高大上一点),但是在数挖方面暂时没有人带我。这一点比较伤,因为每个刚毕业进入职场的小伙伴都希望有个“前辈”带你飞,可以快速该领域的专业技能。但我深知自己的自学能力很差(只会百度),只会看看博客吸收现成的知识总结,缺乏自我探索性的学习能力,所以借此给足时间好好提升下自学能力。另外没人带让我带着一种忧患意识去学习,害怕被趋势淘汰(小学生都开始学Python了),防止自己陷入舒适区。

结语

  挺羡慕计算机专业的小伙伴,面试遇到的数据结构、计算机组成原理对我来说不太友好。以后可能会不定期写点自己的所学所见,有助于巩固知识。还处于起点的我,和大家一起加油进步,以此文望共勉。

你可能感兴趣的:(一个路人理科应届生找数据挖掘类工作的前前后后)