热门话题白皮书HR资料
牛客访谈|肖健:机器学习求职攻略
2024.05.24
关于牛客访谈:每周牛客网会邀请一个在某个领域比较擅长的嘉宾来为大家回答问题,所以在一周内大家可以在帖子下面问你想问的问题,过期嘉宾将不再进行回答哦~


嘉宾简介


姓名:肖健

学校:华中科技大学(硕士)

知乎:https://www.zhihu.com/people/jian-xiao-69/about 

邮箱:charlesxiao2030@outlook.com



背景介绍



offer:百度sp,美团sp,华为sp...


面试其实在九月底就基本结束了,一直在忙一些其它的事情。最近看到牛客推出的访谈栏目,感觉非常不错,也想着能贡献自己的一些微薄经验,希望后来的学弟学妹们能少走点弯路,强撸之下完成了这篇yy贴。


ps: 因为我个人资质中庸,编程能力也很普通,所以我想我的经验应该比较具备普适性吧,大家应该会比我做的更好。


本期话题:跟你聊聊机器学习的求职攻略

跟你聊聊机器学习的求职攻略

跟你聊聊机器学习的求职攻略


所谓笨鸟先飞,我制定了个半年计划来打怪升级,大致可分三块:编程基础,机器学习理论,实战。

(大神们就不要往下看了,都是些粗浅的东西)


一。编程基础

编程基础这块我其实没啥发言权,牛客上随便找一个估计都比我厉害不少。

因为本身非计算机出身,大二学完数据结构基本就没看过这块,平时主要放在看论文划水上了,编程相当于是我最弱的一块。(网易,头条,滴滴笔试都跪了),所以编程不错的牛牛们请忽略这块。


一句话概括:套路+总结


我的策略非常简单粗暴,两样工具:leetcode,剑指offer(面试coding题基本来源这两块)。刷题也要讲究些策略,刚开始,刷了几天我就受不了了,感觉真tm枯燥,然后一顿胡思乱想胡搅蛮缠无理取闹之后,有了如下的套路。


一. 先对题目分类,比如:数组/链表/二叉树等(leetcode有对应的分类,很贴心)。 二. 对于每一类,总结出基本的模块(每一类问题都会存在一些简单模块,复杂题基本都可以猜解为这些简单模块的叠加) 三. 按照上述的由各分类到各子模块对应写总结做笔记(推荐gitbook,支持markdown,格式简洁美观)


举个例子,比如链表:

Reorder List这道题我们可以很清晰的猜解为三个模块,链表中间节点,链表反转,链表合并。写起来也是得心应手,一气呵成。


void reorderList(ListNode* head) {
    if (head == nullptr || head->next == nullptr) return;
    // 链表中间节点
    ListNode *fast = head->next, *slow = head;
    while (fast != nullptr && fast->next != nullptr) {
        fast = fast->next->next;
        slow = slow->next;
    }
    // 对称分割为两部分
    ListNode *cur = slow->next;
    ListNode *prev = nullptr;
    slow->next = nullptr;
    // 反转链表后半段
    while (cur != nullptr) {
        ListNode *tmp = cur->next;
        cur->next = prev;
        prev = cur;
        cur = tmp;
    }
    // Reorder
    while (prev != nullptr) {
        ListNode *tmp = prev;
        prev = prev->next;
        // 插入节点
        tmp->next = head->next;
        head->next = tmp;
        head = tmp->next;
    }
}

嗯,酸爽。


二.机器学习理论


关于理论这块我觉得一开始上手就看李航的学习方法不太好,刚入门的话,Andrew Ng的视频还是非常不错的,但是只能算是开胃菜,两到三周看完比较合适,每课都应该做笔记写总结(不写总结的学习就是耍流氓!)。这一步要快,要猛。

看完算是有了些许的概念,整体上还是比较弱的。接下来推荐重点看林轩田的机器学习基石和机器学习技法,总共三十二课,每一课都相当精彩,细致学下来需要三个月,我指的是细致的看,每一课都应该写笔记,梳理脉络,强烈建议做笔记。

踏踏实实看完,面试中让你推个svm讲讲adboost,gbdt原理基本就是手到擒来,再辅以李航的统计学习方法和周志华的西瓜书查漏补缺,基础就算比较扎实了。

当然这一块可能会有些枯燥,但林轩田老师讲的真的是非常精彩了,强烈安利,做笔记很重要,在强调遍。


三.实战篇


没经过实战,不能算会机器学习,理论学的好也只是提供的一个基本保障。没玩过数据,拼过指标的人是很难融入工业界的。


举个最简单的例子,在工业界逻辑回归用的是非常广泛的,你会想,为啥要用这么简单的模型,我们有那么多理论上更叼的模型为啥用这个?


模型是有适用性的,用什么模型更多取决与我们的数据。比如在推荐系统里面,随随便便做几个特征交叉,做下one hot encoding,维度就是几万,几十万维,ctr预估里面更是可以达到上亿的特征,而且这些特征是高度稀疏的,几万维特征可能只有几十维是非零的,这时候使用Random Forest 和 GBDT 这样的模型结果很可能根本拼不过 LR。


LR及其衍生算法FM,FFM在处理这种高维离散特征是有先天优势的。这样一些经验我们需要在实战中积累。


kaggle里面的比赛比较适合新人入门,氛围比较好,每个比赛有对应的论坛,时不时有人会发布自己的代码,大家集思广益一起讨论,可以学到很多。国内的比赛大多会封闭些,讨论很少,不利于新人上手。


一. 所以实战第一块就是完整跟踪kaggle上的一个比赛,因为有些比赛数据量很大,大家根据自己现有的机器配置选择合适的比赛参加,8g内存是最低的配置了。


(打比赛的话python党强烈安利《利用python进行数据分析》这本书,pandas大法好)。


二. 第二块着重于实现常用算法,svm/kmeans/LR/FM等,这一块可以作为简历亮点,去工业界毕竟是要码代码的,前面刷的题也不能白刷,所以这块可以强烈提升自信,网上有很多开源实现可以参考,写完会爱上c++。


PS:这三块应该是并行操作的,同时上,分配好时间。


以上就是我的一些粗浅经验,希望对大家有帮助,另外本人常年混迹知乎

Charles Xiao),求粉,有问题可以随时私信我。本周内在本帖下面回复即可、


目前拿到百度sp,美团sp,华为sp,基本都是比较高的sp


【访谈规则】对于访谈你可以问任何跟话题有关的问题,要求必须在帖子下面留言,嘉宾会在一周内逐一回答

栏目介绍
牛客访谈:是牛客网推出的新栏目,每周邀请一个嘉宾来分享经验并和大家交流,针对固定的话题,大家可以随意提问(在本帖下),嘉宾会载一周内逐一回答跟话题有关的所有问题。
关于牛客访谈栏目如果你有什么好的建议欢迎私信牛妹,一经采纳,会有礼物相赠哦~
如果你想报名本栏目的嘉宾,请私信牛妹或者加qq:1037532015进行报名哦

牛客访谈嘉宾招募中:http://www.nowcoder.com/discuss/15333



牛客网—程序员必备求职神器

刷真题,练算法,看面经,得内推
www.nowcoder.com

长按二维码,把IT笔试面试题库装进口袋

点击下方  阅读原文  查看原文