文章目录
- 1.请描述推荐系统中协同过滤算法CF的原理
- 2.请描述决策树的原理、过程、终止条件,以及如何防止过拟合
- 3.请描述K-means的原理,说明选择聚类中心的方法
- 4.请列举分类模型和回归模型的区别
- 5.请列举生成模型与判别模型的区别
- 6.梯度下降法求解最优化问题的原理与步骤
- 7.请列举Random Forest和GBDT的区别
- 8.什么是欠拟合、过拟合?避免过拟合有哪些途径?
- 9.逻辑回归的目标函数和优化方法
- 10.讲下 拟牛顿法
- 11.讲下随机森林或者GDBT
- 11.RF、GBDT的区别
- 12.随机森林怎么取最后的结果?
- 13.随机森林是怎样避免ID3算法信息增益的缺点的?
- 14.为什么deep learning 能抑制梯度消失或者爆炸的问题?
1.请描述推荐系统中协同过滤算法CF的原理
协同过滤算法,主要的功能是预测和推荐。
通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。分为两大类:
- 一类为基于memory的(Memory-based),包括 基于用户的协同过滤算法(user-based collaboratIve filtering) 基于物品的协同过滤算法(item-based collaborative filtering) 两种方法都是将用户的所有数据读入到内存中进行运算的;
- 另一类为基于Model的(Model-based),包括 Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization等这种方法训练过程比较长,但是训练完成后,推荐过程比较快
一般步骤
- 1.收集数据
- 2.找到相似的用户和物品
- 3.进行推荐
简单的说就是:人以类聚,物以群分。
2.请描述决策树的原理、过程、终止条件,以及如何防止过拟合
决策树(decision tree)是一种基本的分类与回归方法,主要用于分类。可以看做是if-then规则的集合。
- 优点:分类速度快,模型具有可读性
- 决策树学习的3个步骤:特征选择、决策树生成、决策树修剪
- 决策树算法:ID3、C4.5、CART
2.1决策树生成算法
熵:对平均不确定性的度量
H
(
X
)
=
−
∑
x
−
>
X
P
(
x
)
l
o
g
P
(
x
)
H(X) = -\sum_{x->X}P(x)logP(x)
H(X)=−∑x−>XP(x)logP(x)
平均互信息:在得知特征X后,使得对标签Y的信息的不确定性减少的程度
I
(
X
,
Y
)
=
∑
x
−
>
X
,
y
−
>
Y
P
(
X
,
Y
)
l
o
g
P
(
X
,
Y
)
/
P
(
X
)
P
(
Y
)
I(X,Y)=\sum_{x->X,y->Y}P(X,Y)logP(X,Y)/P(X)P(Y)
I(X,Y)=∑x−>X,y−>YP(X,Y)logP(X,Y)/P(X)P(Y)
决策树的基本思想是以信息熵为度量,构造一颗熵值下降最快的树,其中叶子节点的熵值为0.
ID3、C4.5、CART
- ID3算法利用信息增益为准则,来选择划分属性,对取值数目较多的属性有所偏好(如西瓜编号属性),容易过拟合,不具有泛化能力,对新样本的预测能力差(特征A对于数据集D的信息增益:g(D,A) = H(D) - H(D|A))
- C4.5算法利用信息增益率选择属性,但并不是直接选择信息增益率最大的候选划分属性,而是使用启发式,先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的(信息增益率:gr(D,A) = g(D , A) / H(A))
- CART使用“基尼系数(可以衡量特征和标签之间的差异性)”来选择划分属性,从数据集随机抽取两个样本,类别标记不一致的概率,Gini(D)越小,数据集的纯度越高(Gini§ = ∑ k = 1 K P k ( 1 − P k ) \sum_{k=1}^KP_k(1-P_k) ∑k=1KPk(1−Pk),其中 P k P_k Pk为第K个类别的概率)
2.2 剪枝处理(防止过拟合)
- 剪枝是防止过拟合的主要手段
- 有预剪枝、后剪枝
- 预剪枝:根据一些原则及早的停止树增长
- 如树的深度达到用户所要的深度
- 节点中的样本个数少于用户指定的个数
- 不存度指标下降的最大幅度小于用户指定的幅度等
- 后剪枝:通过在完全生长的树上剪去分枝实现的
- 通过删除节点的分支来剪去树节点
- 可以使用的后剪枝方法有多种,比如:代价复杂性剪枝、最小误差剪枝、悲观误差剪枝等等
- 预剪枝:根据一些原则及早的停止树增长
预剪支
- 预剪枝的核心问题是如何事先指定树的最大深度
- 如果设置的最大深度不恰当,那么将会导致过于限制树的生长,使决策树的表达式规则趋于一般,不能更好地对新数据集进行分类和预测。
后剪枝
- 后剪枝操作是一个边修剪边检验的过程
- 一般规则标准是:在决策树的不断剪枝操作过程中,将原样本集合或新数据集合作为测试数据,检验决策树对测试数据的预测精度,并计算出相应的错误率
- 如果剪掉某个子树后的决策树对测试数据的预测精度或其他测度不降低,那么剪掉该子树(贪心算法)
预剪枝、后剪枝总结
- 预剪枝:事先指定树的最大深度(具有局限性)
- 后剪枝:边修剪边检验,如果修剪后预测精度不下降,则减掉
2.3 停止条件
- 没有属性可以分裂
- 直到数据集不可分则停止决策树停止生长
2.4 棵决策树的生成过程
- 特征选择:特征选择是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
- 决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
- 剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。
2.5 决策树的损失函数
决策树的目的是构建一颗熵最小的树,所以决策树的损失函数包括两部分,一个部分是衡量这棵树的熵大小的,另一个是对树的复杂度约束的正则化项。其中对树熵值的衡量计算是通过计算所有的叶子节点的熵乘以叶子节点的数目作为权重的和,正则化项是对每个叶子节点样本数目的一个约束。
其中 T T T为叶子节点的个数, N t N_t Nt为第t个叶子节点的样本的数目, H t ( T ) H_t(T) Ht(T)是第t个叶子节点的经验熵, a a a是对叶子节点的总样本数的一个惩罚因子。
3.请描述K-means的原理,说明选择聚类中心的方法
K-means是一种聚类算法(区别于分类算法),属于无监督
K-means的原理是通过多次的迭代,使得各个样本点到其所属簇的质心的距离平方和最小。(类间距最大)
3.1 算法流程图
- 从样本中选取K个点,初始化K个簇的质心;
- 分别计算各个样本到不同质心的相异度,将样本归到相异度最小的质心所属的簇;
- 根据聚类结果,重新计算质心;
- 不断重复上述过程,直到精度达到要求。
3.2 聚类中心初始化问题
- 随机选择K个点作为初始的类簇中心点,该方法具有很强的不确定性
- 选择批次距离尽可能远的K个点,首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。(K-means++)
- 选用层次聚类或者Canopy算法进行初始聚类,然后利用这些类簇的中心点作为KMeans算法初始类簇中心点。
4.请列举分类模型和回归模型的区别
定量输出称为回归,或者说是连续变量预测;
定性输出称为分类,或者说是离散变量预测。
举个例子:
预测明天的气温是多少度,这是一个回归任务;
预测明天是阴、晴还是雨,就是一个分类任务。
5.请列举生成模型与判别模型的区别
- 生成模型是通过学习数据集的联合概率密度分布,然后通过贝叶斯公式得出后验概率,通过最大化后验概率进行预测。生成式模型在学习过程中是一个一个类别单独学习的。
- 判别式模型是直接对模型的分界面进行学习,然后通过学习到的分界面对新的数据运行预测。
6.梯度下降法求解最优化问题的原理与步骤
函数的梯度是函数下降/上升的最大方向。
如果要对一个目标函数做最小化
- 每次只需将目标函数对各个parameters 做偏导,得到梯度
- 然后用当前parameter加上负梯度乘以一个步长进行更新。
- 步长太大可能跳出局部最优点。
常用的梯度下降方法有batch gd(使用全部数据计算梯度),SGD(对每个sample计算梯度)。 SGD计算更快,并且能取得不错的效果,而且有时能跳出局部最优,去explore其他更优 的极值点
7.请列举Random Forest和GBDT的区别
Random Forest 是bootstrap(bagging)的方法的tree based ensemble
- 即有放回的对训练数据采样,分别训练decision tree,
- 最后用简单的投票方式作为最终结果。
使用了两次随机,分别是样本的随机和特征的随机,所以叫随机森林。
GBDT 是 boosting 的代表
- 每次训练都是使用所有数据,但是认为最终结果是多颗树的叠加
- 训练完一棵树以后,将结果的残差作为下一棵树的训练目标。
- 在这个过程中还使用了梯度近似残差的方法。
8.什么是欠拟合、过拟合?避免过拟合有哪些途径?
8.1 欠拟合:
指的是模型对数据的表征能力不够,在性能指标上的表现就是训练集和测试集上的表现都不好。
解决方法:
- 增加新的特征
- 增加模型的复杂度
- 减少正则化的惩罚因子
8.2 过拟合:
模型对于训练数据拟合呈过当的情况,反映到评估指标上 ,就是模型在训练集上的表现很好,但在测试集和新数据上的表现较差
解决方法
- 从数据入手,获取更多的训练数据,可以直接增加数据也可以通过人工方法合成更多的数据,因为更多的样本能够让模型学习到更多更高效的特征 ,并减小噪声的影响
- 从模型入手,降低模型的复杂度,适当降低模型复杂度可以避免模型拟合过多的采样噪声。
- 正则化方法,给模型加上一定的正则约束,L1和L2正则化
- 采用集成学习方法
9.逻辑回归的目标函数和优化方法
目标函数:服从二项分布的似然函数
优化方法:优化常用的是梯度下降法
10.讲下 拟牛顿法
- 对比了梯度下降法只是泰勒的一阶展开式
- 而牛顿法是泰勒的二阶展开式
10.1 常见的优化方法
1.梯度下降法
梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。
梯度下降法的缺点:
- 靠近极小值时收敛速度减慢,如下图所示;
- 直线搜索时可能会产生一些问题;**
- 可能会“之字形”地下降**
批量梯度下降法(Batch Gradient Descent,BGD)
对于批量梯度下降法,样本个数m,x为n维向量,一次迭代需要把m个样本全部带入计算,迭代一次计算量为m* n 2 n^2 n2
随机梯度下降(Stochastic Gradient Descent,SGD)
随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。
批量梯度下降—最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
随机梯度下降—最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。
2.牛顿法
牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数_f _(x)的泰勒级数的前面几项来寻找方程_f _(x) = 0的根。牛顿法最大的特点就在于它的收敛速度很快
关于牛顿法和梯度下降法的效率对比:
从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)
牛顿法的优缺点总结:
- 优点:二阶收敛,收敛速度快;
- 缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。
3.拟牛顿法(Quasi-Newton Methods)
**拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。**拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。
4.共轭梯度法(Conjugate Gradient)
共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。 在各种优化算法中,共轭梯度法是非常重要的一种。其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。
5.启发式优化方法
启发式方法指人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。启发式优化方法种类繁多,包括经典的模拟退火方法、遗传算法、蚁群算法以及粒子群算法等等。
11.讲下随机森林或者GDBT
随机森林
采用的是bagging的思想,bagging又称为bootstrap aggreagation,通过在训练样本集中进行有放回的采样得到多个采样集,基于每个采样集训练出一个基学习器,再将基学习器结合。随机森林在对决策树进行bagging的基础上,在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性的时候是在当前节点属性集合中选择最优属性,而随机森林则是对结点先随机选择包含k个属性的子集,再选择最优属性,k作为一个参数控制了随机性的引入程度。
GBDT
GBDT采用的是boosting的思想,先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器,最后将所有基学习器加权结合。GDBT在传统的boosting的基础上,将以决策树为基函数的提升树拟合残差,利用损失函数的负梯度在当前模型的值作为残差的估计。
11.RF、GBDT的区别
GBDT和随机森林的相同点:
- 1、都是由多棵树组成
- 2、最终的结果都是由多棵树一起决定
GBDT和随机森林的不同点:
- 1、组成随机森林的树可以是分类树,也可以是回归树;而GBDT只由回归树组成
- 2、组成随机森林的树可以并行生成; 而GBDT只能是串行生成
- 3、对于最终的输出结果而言,随机森林采用多数投票等;而GBDT则是将所有结果累加起来,或者加权累加起来
- 4、随机森林对异常值不敏感,GBDT对异常值非常敏感
- 5、随机森林对训练集一视同仁,GBDT是基于权值的弱分类器的集成
- 6、随机森林是通过减少模型方差提高性能,GBDT是通过减少模型偏差提高性能
12.随机森林怎么取最后的结果?
对于分类任务,随机森林是多数表决;
对于回归任务,随机森林是简单平均
13.随机森林是怎样避免ID3算法信息增益的缺点的?
首先说下信息增益的过程,决策树算法本质上就是要找出每一列的最佳划分以及不同列划分的先后顺序及排布。
- 信息增益的缺点是比较偏向选择取值多的属性
- 而gini系数每次都是二分,所以跟属性多少没有关系。
14.为什么deep learning 能抑制梯度消失或者爆炸的问题?
一是激活函数不光是只用sigmoid函数,还有 ReLU函数
二是在参数并不是初始化的时候并不是随机选择的,而是在前面有自编码器做了特征特征器,这样避免了梯度下降法求解陷入局部最优解;
三,深度学习一些手段,权值共享,卷积核,pooling等都能抑制梯度消失问题;
四,二次代价函数换成交叉熵损失函数或者选用softmax+对数似然代价函数的组合