01.08 机器学习面试篇—蚂蚁金服电话面试一

最近我们组的一个小朋友接到了蚂蚁金服的电话面试,第一轮是算法,第二轮本周继续,听他事后复盘整个面试过程,感觉还有有些重点可以划出来。

我们就叫他小智好了,首先介绍一下背景,小智在我们公司是做前端开发。我当时自学了2个月机器学习,开始在公司做推荐系统,但是人手不够,又招不到人,有一天中午吃饭小智提出愿意加入机器学习组,跟着我学习,我当时处于面子原因就答应他:“好的,放心吧,我教你”。其实心里还是比较虚,第一自己会的不多,第二怕把小智带到沟里面。

后面我就报了7月在线的机器学习课程,每次都是前一天晚上看视频做练习,还要画重点总结成自己的语言,第二天再教小智,基本每天都是5个小时不到的睡眠,有时候会很尴尬,小智问的问题我都不会,然后先记下来,晚上问老师,不过效果挺好的,把我平常没有注意到的问题弥补了,事后也证明了这种边上课边教小智的方法很管用,我自己理解的更深了,那一个月学到的比之前自己学2个月的效果要好太多了a,因为每天学的我都要重复两遍,思考三遍(加上小智的思考反馈),总结一下就是:多思考,做练习,及时反馈,总结复盘。

下面讲一下小智面试的过程:

首先说一下结论,然后同学们可以带着结论去看下面的过程是怎么体现出来的。面试官最后告诉小智说:他们看重的是如何用机器学习的思维和套路去解决问题,以及实际应用中如何通过各种指标评判一个模型的好坏,还有解决突发问题的能力。

第一个问题:拉普拉斯平滑

小智简历中项目写了用朴素贝叶斯来对新闻做分类,通过一些特征在某类文章中出现的概率来判断一篇文章如果出现了这些特征则这篇文章是否属于某类。

面试官问:“你用朴素贝叶斯公式的时候,条件独立假设的那些概率是相乘还是相加的?”(问的非常细节。)

小智还犹豫了一下想了快一分钟然后说:“应该是相乘。”

面试官说:“好,那如果有一个条件独立假设的概率是0,它们又是相乘的关系,是不是说这个分母就变成0了,概率就变成0了?”

小智答:“我们做的时候会添加一个变量防止为0的情况发生,这个变量非常小,不会影响正常结果。”

虽然小智解释的有点low,但是思路是对的,对方毕竟是蚂蚁金服算法面试官一听大概意思对,也就没有跟小智再计较了。

其实这个步骤叫做“拉普拉斯平滑”,就是在计算类先验概率和属性条件概率时,在分子上添加一个较小的修正量,在分母上则添加这个修正量与分类数目的乘积。这就可以保证在满足概率基本性质的条件下,避免了零概率对分类结果的影响。当训练集的数据量很大的时候,修正量对先验概率的影响也就可以忽略了。

第二个问题:中文分词

面试官:“你们分词是怎么做的,比如现在这句话‘我爱中华’,怎么分词才能把‘中华’分在一起,而不是‘爱中’,具体是怎么实现的?” (新问题,现场解决)

小智:“用统计概率来分词,在一个很大的已经分过词的样本中,用统计模型去学习,对文本切分。”

面试官:“你们用了哪些统计模型?”

小智:“我们没有自己去实现分词,用的是开源的工具 ‘ jieba ’ ,但是我知道的统计模型有 ‘隐马尔可夫模型’。”

其实现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

基于统计的分词方法效果是最好的,介绍如下:

在给定大量已经分词的文本的前提下,利用统计机器学习模型学习词语切分的规律,从而实现对未知文本的切分。如最大概率分词方法和最大熵分词方法等。随着大规模语料库的建立,基于统计的中文分词方法渐渐成为了主流方法。

主要的统计模型有:N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),条件随机场模型(Conditional Random Fields,CRF)等。

在实际的应用中,基于统计的分词系统都需要使用分词词典来进行字符串匹配分词,同时使用统计方法识别一些新词,即将字符串频率统计和字符串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。(中文分词的两大难点就是:歧义识别和新词识别)

推荐一个我们公司目前用的,也是效果非常好的一种中文分词工具:jieba 地址:https://github.com/fxsjy/jieba

感兴趣的同学可以看看源码,注意别看错名字了是jieba。

总结:

介绍了一种学习方法:边教边学,感兴趣的同学可以试试,找一位跟你有同样兴趣的小伙伴,然后你当老湿,认真的准备和学习一门技术,同时把这位小伙伴也教会。

讲了两个小智面试遇到的问题:朴素贝叶斯中的拉普拉斯平滑,和中文分词。


分享到:


相關文章: