机器学习 常见面试题 总结

前言:

找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。

纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有相关职位,另外一些国内的中小型企业和外企也会招一小部分。当然了,其中大部分还是百度北京要人最多,上百人。阿里的算法岗位很大一部分也是搞机器学习相关的。

下面是在找机器学习岗位工作时,总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想,希望对大家找机器学习岗位时有点帮助。实际上在面试过程中,懂这些算法的基本思想和大概流程是远远不够的,那些面试官往往问的都是一些公司内部业务中的课题,往往要求你不仅要懂得这些算法的理论过程,而且要非常熟悉怎样使用它,什么场合用它,算法的优缺点,以及调参经验等等。说白了,就是既要会点理论,也要会点应用,既要有点深度,也要有点广度,否则运气不好的话很容易就被刷掉,因为每个面试官爱好不同。

朴素贝叶斯:

有以下几个地方需要注意:

1. 如果给出的特征向量长度可能不同,这是需要归一化为统一长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。

2. 计算公式如下:29224144-9bad2a8789f549cd88a567a7c2ca7465

其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是P\left(w\middle|c_i\right)的计算方法, 而由朴素贝叶斯的前提假设可知: P\left(w_0,w_1,w_2...w_N\middle|c_i\right) =P\left(w_0\middle|c_i\right)P\left(w_1\middle|c_i\right)P\left(w_2\middle|c_i\right)...P\left(w_N\middle|c_i\right)

因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。

3. 如果P\left(w\middle|c_i\right)中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。

朴素贝叶斯的优点:

对小规模的数据表现很好,适合多分类任务,适合增量式训练。

缺点

对输入数据的表达形式很敏感。 继续阅读机器学习 常见面试题 总结

快速入门机器学习 图解机器学习10张经典图片

入门机器学习, 总有几张图片, 令人印象深刻. 以下是十张经典图片, 图解机器学习, 非常有 启发性:

1.  训练错误和测试错误。这张图告诉我们训练错误越小,不一定是最好的。训练误差和测试误差要达到一个平衡,才是最好的。下图展示了ESL 图 2.11, 训练错误和测试错误与模型复杂度的关系.

Test and training error
Test and training error

2. 欠拟合”和”过拟合”. 出自PRML 图1.4. 下图数据点是从绿色曲线生成的. 拟合参数是M,  通过M得到的模型是红色曲线. 可见, 如果M过小, 得到的模型不够复杂, 不能还原真实模型, 也就是”欠拟合”. 如果M太大, 得到的曲线复杂度过高, 也不能真实还原模型, 也就是”过拟合”. 猜到了吧? 还是要在”欠拟合”和”过拟合”之间找到一个平衡呀~

Under and overfitting
Under and overfitting

3. 奥卡姆剃刀(Occam’s razor). 出自ITILA 图 28.3. 为什么贝叶斯推断包含着奥卡姆剃刀的原理 ? 下图展示了为什么复杂的模型会变得低效。横轴代表了贝叶斯理论的汇报模型在可能数据集上被准确预测的可能性。P\left(D\middle|H_1\right) 代表了使用复杂模型H_1情况下,数据集D被准确预测的概率和置信度(Evidence);P\left(D\middle|H_2\right) 代表了使用较简单模型H_2情况下,数据集D被准确预测的概率和置信度(Evidence)。可见复杂模型H_1在预测时,一些数据置信度,或者信心很高,但是其实整体准确度, 不如模型H_2 。说什么来着? 模型复杂度也要平衡哦~
继续阅读快速入门机器学习 图解机器学习10张经典图片

六个鲜为人知的python数据分析库

Python 提供了高质量的环境和丰富的第三方库为开发者提供数据分析支持。不管是数据处理还是数据 可视化等等, 都有许多有用的库。一些库非常有名:PandasNumpyScikit-learn(我们有一期博客介绍过), NTLK 等等。另一些不是那么有名但是却在平时十分好用。这篇文章介绍6个这样的Python库, 希望对大家有帮助!

  • mrjob

mrjob是一个帮助你写用Python写MapReduce的库,可以让你写Mapper和Reducer程序,在本地,EMR(亚马逊弹性Map-Reduce),或者Hadoop集群上运行/测试。使用pip install mrjob就能快速安装。mrjob是Yelp开发并且每天有成千上万的下载量。Github地址项目地址有大量文档。

在python中使用datetime是件很痛苦的事。如果你用过python自带的datetime库去控制多时区,你一定会觉得不方便。delorean对datetime和pytz做了抽象使得操作更简单。它有很多好的功能使得切换多时区,标准化时区变得简单。

python自带的sorted()方法很高效。但是当你想排列[‘a2’, ‘a9’, ‘a1’, ‘a4’, ‘a10’]这样的数列,那就需要natsort这样的能同时排列字母和数字的库了。官网有更详细的文档。

应用中并不是总是需要多节点的大数据库。TinyDB是一个面向文件的小型数据库,可以在本地文件写入json来保存数据。它有1200行代码以及简洁清楚的API。可以用pip install tinydb来安装。更多详细文档请看这里继续阅读六个鲜为人知的python数据分析库