一文总结推荐算法岗基础——机器学习部分

大纲

这里用一个思维导图展示算法岗面试会问到的知识点大纲,笔者分为机器学习部分和深度学习部分。有一些交叉的内容,笔者放到了机器学习部分。这两个部分包含的内容又可以按照一个模型的不同阶段来划分:数据部分(样本和特征),算法部分(常见的分类算法、回归算法、聚类算法等),训练部分(过拟合问题、L1正则和L2正则等),评估部分(如何评估一个模型的好坏等)。
在这里插入图片描述

数据部分

1、怎么解决样本不平衡的问题?
样本不平衡是指样本数据中某一类过多而另外一类过少,比如1000个样本中包含999个正样本和1个负样本,一个模型就算全部预测成正样本也能有99.9%的准确率,但是这并不能体现这个模型的性能。当然你可以用AUC来评估模型的性能,这样更准确一些。
如何解决样本不平衡的问题?过采样和欠采样
过采样:重复类别少的样本数据,但是这样并没有为模型带来新数据。
欠采样:丢弃大量数据,和过采样一样会存在过拟合的问题。
这两种采样方式都可能遇到过拟合问题,那么是否可以为类别少的样本增加一些“新的数据”呢?SMOTE算法就是随机生成一些少数类样本数据,它基于随机过采样方案的一种改进方法。算法流程如下:

(1)对于少数类中每一个样本x,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到其k近邻。

(2)根据样本不平衡比例设置一个采样比例以确定采样倍率N,对于每一个少数类样本x,从其k近邻中随机选择若干个样本,假设选择的近邻为$x_n$。

(3)对于每一个随机选出的近邻$x_n$,分别与原样本按照如下的公式构建新的样本。

在这里插入图片描述

模型部分

1、什么是生成模型和判别模型,差别是什么?
生成模型需要学习P(X,Y)的联合概率分布,而判别模型不需要;

生成模型有朴素贝叶斯法和条件随机场,当样本容量增加的时候,学到的模型可以更快地收敛;而且当模型存在隐变量的时候,仍然可以用生成方法学习。

判别模型直接面对预测,往往学习到的准确率越高;常见的判别模型有:LR,SVM,等;

2、用过哪些回归模型?介绍一下它们的区别?
线性回归,带L1正则化的线性回归叫LASSO回归,带L2正则化的叫Ridge 回归。
还有支持向量回归,CART等;

3、KNN和Kmeans的算法流程是什么
Kmeans算法的流程,先从样本中随机选取K个样本作为簇的中心,然后计算每一个样本到各个中心的距离,选取最小距离作为属于该簇。然后,更新簇的中心;直到当前所有簇的中心收敛。Kmeans其实体现了EM算法的思想。

KNN可以用作分类或者回归,是一种有监督的算法,给定一个测试样本,首先找到K个和该样本距离最近的样本,然后这些训练集的样本是有标记的,那么就可以按照投票法判断该测试样本的label。显然该算法的核心参数就是K以及距离的度量方式。

4、LR的数学原理,LR是线性模型吗?为什么?
LR体现的是最大熵原理。熵越大,不确定的程度越多,我们需要分布在满足条件的要求下越均匀越好。我们建模Y|X,并且前提预测了Y|X满足伯努利分布,所以我们只需要知道P(Y|X),其次我们需要一个线性模型,所以P(Y|X) = f(wx),那么只需要用最大熵模型确定f即可,伯努利的指数分布簇就是sigmoid形式。
LR不是带了Sigmoid非线性函数了吗?为什么还是线性模型?
判断一个模型是不是线性的,自变量是否只被一个参数影响以及决策边界是否是线性的。

5、感知机的学习流程?参数怎么求?
感知机的目的是学得一个能使正负样本分离的超平面。目标函数是让误分类的点到超平面的距离越小越好,最终的参数求取是使用梯度下降法。考虑到每次初始值可能不同,因此得到的超平面也不相同,也就是说空间中存在无数个能使正负样本分离的超平面

6、SVM推导和核函数
SMO选择合适的a1,a2,怎么算合适的呢?
只选择不满足KKT条件的,直观来说就是带来误差(错误样本)的α,每次都从中选取带来误差最大的α作为第一个参数,也就是我们要优化的参数,假设为α1。选取第二个参数的时候,我们要选取对待优化参数α1带来积极影响最大的那个参数.怎么算积极影响呢?SMO定义一个指标E:
E i = f ( x i ) − y i E_{i} = f(x_{i}) - y_{i} Ei=f(xi)yi
先算出所有的参数的E值,已知我们优化的参数为α1的话,那么E1如果为正,则取其他参数中负的最大的那个,反之取正的最大的那个,也是使得|E1 - Ei|最大的那个αi.这样所有环都通畅了,且每次迭代带来的收益都是最高,迭代次数可能会更少。确定了a,就可以确定w和b:
在这里插入图片描述
在这里插入图片描述
KKT条件,支持向量之类的可以看深入理解支持向量机
好了,到了树模型部分了,这部分面试频率之高就等同于后台开发岗问线程和进程的区别,汗~

6、决策树有哪几种节点分裂方式或者说特征选择方式?分别介绍一下。
C4.5——信息增益熵
ID3——信息增益比
CART——Gini系数
7、随机森林是怎么生成的?AdaBoost?
RF = DT + bagging, AdaBoost = Boosting + 线性分类器;
8、集成学习中的bagging和boosting的差别?
bagging,就是很多弱分类器或者回归算法通过某种策略聚合在一起,比如回归任务,所有的弱分类器的输出累加在一起取平均作为最终的结果,这样形成的强分类器方差小;同时,在样本选取上选取有放回的采样策略,因此所有的样本都有等概率被取出,同时也有一些样本无法取出。
boosting,也是将很多弱分类器聚合在一起,只不过这次样本变了,上一次预测错误的样本的权重会增加,然后再训练本轮的分类器,最后通过一些策略组合这些弱分类器。
9、GBDT中G是什么意思?这里的B和集成学习中的Boosting区别在哪?GBDT和XGboost的差别?LightGBM呢?
GBDT是决策树的集成模型,通过每次拟合负梯度来学习决策树,这里的G指的是负梯度,也就是残差。这里的B和AdaBoost的差别在于显式地更新样本的权重。在每一轮迭代中,首先计算出当前模型在所有样本上的负梯度,然后以该值为目标训练一个新的弱分类器进行拟合并计算出该弱分类器的权重,最终实现对模型的更新。
XGboost是GBDT的工程实现,它们的差别在于:

1)GBDT是机器学习算法,XGBoost是该算法的工程实现。
2)在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值