常见面试题--机器学习篇

传统的机器学习算法:SVM,LR,softmax,决策树,随机森林,GBDT,xgboost,adaboost,bp神经网络、朴素贝叶斯这些都必须自己手推一次或者多次;

深度学习方面:CNN、RNN、LSTM、常用激活函数(tanh、relu等)、adam优化函数、梯度消失原理或者结构应该能手画出来。

nlp方面:强烈建议tf-idf、textrank、Word2vec、注意力机制、transformer都应该非常熟悉。

一、模型和算法篇(周六)

1)逻辑回归:

1. 手推LR,对并每一步进行解释,引入sigmoid,逻辑回归的公式,极大似然,求解参数时的梯度下降法;

2. 多分类问题怎么处理(ovr-??)

2)SVM

1. SVM的原理

2. SVM为什么采用间隔最大化?

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。利用间隔最大化求得最优分离超平面,这时解是唯一的。另一方面,此时的分隔超平面所产生的分类结果对未知实例的泛化能力最强。

3. SVM怎么处理过拟合?

解决的办法是为SVM引入松弛变量,在SVM公式中的目标函数加上松弛变量的平方和,并求最小值。这样就达到了一个平衡:既希望松弛变量存在以解决异常点问题,又不希望松弛变量太大导致分类解决太差。

4. SVM有哪些可以调节的参数?

C:惩罚系数,即对误差的宽容度,C越高,说明越不能容忍误差,容易过拟合。C越小,容易欠拟合,C过大或过小,泛化能力变差;

分类算法具有样本权重class_weight:指定样本各类别的权重,主要是为了防止训练集某些类别的样本过多,导致训练的决策过于偏向这些类别。这里可以自己指定各个样本的权重,或者用"balanced",如果使用"balanced",则算法会自己计算权重,样本量少的类别所对应的样本权重会高。当然,如果你的样本类别分布没有明显的偏倚,则可以不管这个参数,选择默认的“None”;

正则化参数penalty:仅仅对线性拟合有意义,可以选择L1或L2,默认是L2正则化。如果我们需要产生稀疏化的系数的时候,用L1

5. 常用的SVM核函数,什么是核函数,为什么要用核函数,核函数怎么选择?

常用核函数有:

a. 线性核函数:没有专门需要设置的参数;

b. 多项式核函数:有三个参数。-d用来设置最高次项次数,默认值是3。-g用来设置核函数中的gamma参数,也是公式中的gamma,默认值是1/k。-r用来设置核函数中的coef0,也就是公式中的第二个r,默认值是0。

c. RBF(高斯)核函数:有一个参数,-g用来设置很函数中的gamma参数设置,也就是公式中的gamma,默认值是1/k(K是特征数);

d. sigmoid核函数:有两个参数,-g用来设置gamma,-r用来设置核函数中的coef0,也就是公式中的第二个r,默认值是0.

gamma的物理意义:

核函数主要从训练集样本、特征量上进行考虑。

6. SVM和LR的异同点:

相同点:

1)如果不考虑核函数,都是线性分类器,本质上都是求一个最佳分类超平面;

2)都是监督学习算法;

3)都是判别模型:判别模型会生成一个表示P的判别函数,而生成模型先计算联合概率P,然后通过贝叶斯公式转化为条件概率。简单说,在计算判别模型时,不会计算联合概率,而在计算生成模型时,必须先计算联合概率。

不同点:

1)loss function不同:LR基于概率理论,通过极大似然估计的方法估计出参数的值;SVM基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面;

2)SVM只考虑局部的边界线附近的点,而LR考虑全局(远离的点对边界线的确定也起作用)

3)在解决非线性问题时,SVM采用核函数的机制,而LR通常不采用核函数的方法;

4)线性SVM依赖数据表达的距离测度,所以需要对数据做normalization,而LR不受其影响;

5)SVM的损失函数自带正则(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因。而LR必须另外在损失函数上添加正则项。

 

7. 如何使用SVM处理多分类问题?

两种办法:

OvR(one vs rest)

OvO(one-vs-one)

8. SVM损失函数;

9. SVM软间隔和硬间隔

10. 为什么SVM对缺失数据敏感?

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要,缺失特征数据将影响训练结果的好坏。

3)树模型

0.决策树怎么剪枝?

1. GBDT与xgboost的区别:

改进之处:

1)显式地将树模型的复杂度作为正则项加入了损失函数中;

2)公式推导里用到了二阶导数,而GBDT只用到一阶;

3)使用了column(feature) sampling来防止过拟合,借鉴了RF的思想;

4)data事先排好序并以block的形式存储,利于并行计算;

5)GBDT以CART树作为基分类器,而xgboost还支持线性分类器;

6)shrinkage(缩减),相当于学习率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置的小一点,然后迭代次数设置得大一点。

 

2. XGBoost如何解决缺失值问题

xgboost把缺失值当做稀疏矩阵来对待,本身在节点分裂时不考虑缺失值的数值。缺失值数据会被分到左子树和右子树分别计算损失,选择较优的那一个。如果训练中没有数据缺失,预测时出现了数据缺失,那么默认被分类到右子树。

3. XGBoost中的树剪枝

4.误差分析(bagging是为了降低偏差,所以RF中决策树用较深的,boosting为了降低方差,所以GBDT中决策树用较浅的)

5. 泰勒公式XGBoost中为什么没有三阶导数(因为泰勒展开最高二阶,高阶都是零)

6. bagging和boosting的区别:这个具体化就是RF和GBDT的区别:a.样本选择方式 b.样例权重 c.预测函数 d. 并行计算

7. xgboost多分类,参数怎么设置:multi:softmax

数据不平衡的时候,xgboost可以直接训练吗?会不会有影响:会有影响,需要做采样,

讲一下xgboost的推导,大概讲讲就好;

8. 

4)神经网络

1. RNN原理

2.交叉熵与softmax;

3. 神经网络处理过拟合的方法

5)集成学习

1.有哪几种方式

6)其他

1. 分类和聚类的区别

2. KNN与K-means的区别;

3. 特征选择: Filter、Wrapper、Enbedded

4. L1正则和L2正则的区别

5. 样本不均衡问题:负例采样、smote算法怎么做;

6.什么情况会导致过拟合?

7. 有序数据和无序数据的处理

二、数据结构与算法篇(周日上午)

1. 冒泡排序算法(排序算法)、手写快排,讲原理,最好、最坏时间复杂度、空间复杂度

2 写一个快排,说一下快排主要快哉哪里:快在它的思想是分而治之的思想,其实东西都是这个思想,例如分布式、hadoop等。

3. 手写二分查找算法(查找算法)

 

三、大数据篇(周日晚上)

1. 说说hadoop的原理:大数据这块的东西还是好好看一下,因为现在搞算法,搞机器学习、深度学习都是在大数据的背景下的,所以这以后是一个基本的技能,面试官问的也比较多。

hadoop的原理就是分而治之

map-reduce是干什么:

2. 有一个1T大小的每行只有一个词汇的文本,怎么统计词的个数

这个问题其实就是考察大数据处理中map-reduce的原理了,原理很简单,就是“分———合”的思想,就是对HDFS上的资源进行分片,map阶段将数据分成key-value对,然后在reduce阶段再对key对应的value进行计数。这样就统计出了词的个数。

 

四、NLP篇

1. word2vec和glove的区别,

2. 模型输入是只有word2vec吗?用别人训练好的word2vec来训练你的模型有没有影响?

3. 了解过transformer吗

4. 你觉得bert的优点是什么,说一说transformer、rnn、cnn这些模型的优缺点,比较一下这三种特征抽取器;

5. 

 

 

 

 

你可能感兴趣的:(面试题)