1、LR为什么用sigmoid函数。这个函数有什么优点和缺点?为什么不用其他函数?(√)
2、LR与SVM有何不同?(√)
3、LR的优缺点(√)
4、SVM怎么防止过拟合?(√)
5、SVM原问题与对偶问题的关系(√)
6、K-means聚类个数选择,做什么样的试验来确定K()
7、为什么要把原问题转换为对偶问题?(√)
8、函数间隔和几何间隔(√)
9、KTT条件有哪些?(√)
10、如何处理数据不平衡问题?(√)
11、阐述GBDT、xgboost、lightGBM的异同,xgb的优势,lgb的优势,二者的并行如何实现?(√)
12、阐述word2vec的原理,为何使用哈弗曼树,如何构建哈夫曼,负采样的原理
15、对于一个取值较多的类别变量在不能进行onehot的情况下如何使用?(√)
16、SVD与PCA的关系
17、过拟合与欠拟合,区别,怎么避免?(√)
18、偏差与方差介绍一下(√)
19、boosting和bagging区别,GBDT讲一下,和随机森林区别?(√)
20、什么是松弛变量?(√)
21、什么是核函数? 核函数的作用? 有哪些核函数?(√)
22、SVM模型的优缺点?(√)与2类似及补充
23、核函数中的z是什么?(√)
24、什么是最大熵模型?(√)
26、决策树如何防止过拟合?(√)
27、为什么L1正则可以实现参数稀疏,而L2正则不可以?(√)
28、为什么L1很多系数可以被压缩为0,L2是被压缩至接近于0?
29、信息增益率有什么优缺点?(√)
30、决策树的原理?
31、简述决策树的构建过程(√)
32、和其他模型比,决策树有哪些优点和缺点?(√)
33、常用的决策树一定是二叉树吗?二叉决策树与多分支决策树相比各有什么特点?
34、决策树需要进行归一化处理吗?(√)
35、如果决策树属性用完了仍未对决策树完成划分应该怎么办?
36、决策树对缺失值如何处理?
37、简述一下分类树和回归树(√)
38、C4.5对ID3做了哪些改进?(√)
39、C4.5决策树算法如何处理连续数值型属性?
40、C4.5与CART的区别?(√)
41、CART树对离散特征取值数目>=3的特征如何处理?
42、CART树生成算法的停止条件是?(√)
答
作者:牛客128229号
链接:https://www.nowcoder.com/discuss/108820
来源:牛客网
1、
(1) 为什么可以用: Sigmoid函数定义了逻辑回归的条件概率,<w,x>的内积代表数据属于正类(y=1)的确信度。<w,x>越大则x属于正类的确信度越大。由于建模需求,需要将<w,x>从整个实数空间映射到条件概率P(y=1|w,x),Sigmoid 函数单调递增能反映确信度,并且能够将实数空间(-无穷,+无穷)映射到(0,1)区间内,能表示概率意义,更加直观。
(2) 为什么要用:指数分布具有最大熵的性质,即在满足前提假设下的分布,分布越均匀越好.在逻辑回归中认为P(Y|x)服从伯努利二分布,并且P(y|x)=f(wx),可根据最大熵的性质推出sigmoid函数。(对偶函数的极大化等价于最大熵模型的极大似然估计)。学习概率模型中,熵最大的模型是最好的模型。
2、(1)LR是一种概率推导的模型(以对数似然函数为损失函数的优化问题),而SVM是以最大化几何间隔(求解凸二次规划的最优化问题)
(2)SVM决策面只由少量的支持向量决定,而LR的话是所有样本都会参与决策面的更新,所以SVM对于异常点不敏感,而LR敏感。SVM更加健壮,决策面不受非支持向量影响。SVM对于未知新事例有很好的分类预测能力(因为它对最难分的实例点(离超平面最近的点)都有足够大的确信度将他们分开)
3、优点:训练速度快
缺点:数据量小的时候容易过拟合,这与使用极大似然估计有关(本质上为均值)
4、1)使用交叉验证法调试参数C。C值越大,对异常点惩罚大,则过于关注异常点对最大间隔的影响,从而导致过拟合。
2)因为过于powerful的核函数引入,在高维空间过于拟合数据造成的。
5、可见SVM模型中的回答(原问题是一个极小极大问题,对偶问题是一个极大极小问题)若原始问题和对偶问题都有最优质值时,原始问题是大于等于最优问题的,在某些条件下原始问题是等于对偶问题的(是凸优化问题及满足KKT条件)。
7、1)对偶问题往往更容易求解,2)自然引入核函数,进而推广到非线性分类问题上。
8、函数间隔:|wx+b|能够相对的表示点x距离超平面的远近。而wx+b的符号与类标记y的符号一致能够表示是否正确。所以可用量y|wx+b|来表示分类的正确性及确信度。
几何间隔:对超平面的法向量w加某些约束||w||=1后使得间隔确定。
9、可见SVM模型
10、上采样、下采样
11、https://www.cnblogs.com/mata123/p/7440774.html
梯度提升:对于特殊的损失函数(如平方损失函数、指数损失函数),每一步的优化相对于一般函数而言更容易。那么对于一般损失函数的优化时,基于当前模型去寻找使得损失函数最小化的那个x的最好方法就是使用梯度下降法来求得。
GBDT:每一次迭代拟合的是一阶梯度。
XGboost:基于GBDT的,与GBDT最大的不同在于其拟合的是二阶泰勒展开式、采用level-wise,对当前层的所有叶子节点都计算其收益并分裂,增加了计算代价
LightGBM:使用的leaf-wise,容易过拟合,需限制树的深度
15、(此题的意思应该是指一条数据的某个类中的数据存放有一个数组,元素都是类别型数据)可以使用embbedding(构建一个类别空间)和分箱法(将某些类别归为一类,其他归为另一类)。
17、欠拟合:1)增加特征项(组合”、“泛化”、“相关性”来进行添加)2)减少正则化参数。3)添加多项式特征,增强模型的泛化能力。
过拟合:1)重新清洗数据,数据不纯导致模型过于拟合坏数据。2)训练数据量太少,增加训练数据量(占总数据的比例太小)。3)采用正则化方法。正则化方法包括L0正则、L1正则和L2正则,而正则一般是在目标函数之后加上对于的范数。但是在机器学习中一般使用L2正则,下面看具体的原因。4)神经网络中使用dropout方法切掉一些神经元之间的连接。
L0范数是指向量中非0的元素的个数。L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”(Lasso regularization)。两者都可以实现稀疏性,既然L0可以实现稀疏,为什么不用L0,而要用L1呢?个人理解一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。
L2范数是指向量各元素的平方和然后求平方根。可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。L2正则项起到使得参数w变小加剧的效果,但是为什么可以防止过拟合呢?一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力。
18、偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据
方差:描述的是预测值的变化范围,离散程度。
19、
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
5)
Bagging减少方差、Boosting减少偏差
#----------------------gbdt和rf的区别?
组成随机森林的数可是分类树也可以是回归树,而GBDT只由回归树组成
组成随机森林的数可是并行生成,而GBDT只能是串行生成
随机森林的结果是多棵树表决决定,而GBDT则是多棵树累加之和
随机森林对异常值不敏感,而GBDT对异常值比较敏感
随机森林是通过减少模型的方差来提高性能,而GBDT是减少模型的偏差来提高性能
随机森林不需要进行数据预处理、归一化,而GBDT需要进行特征归一化
20、在处理线性不可分问题时,某些样本点的函数间隔小于1,为了解决这个问题引入松弛变量对每个样本点(xi,yi),使得函数间隔大于等于1。在松弛变量前还定义了一个C>0作为惩罚参数,C值越大对误分类的惩罚越大,反之亦然,那么最小化目标函数的两层含义:使1/2||w||²尽量小即间隔尽量大,同时误分类个数尽量小,C用来调和两者。
21、
(1) 什么是核函数?
映射函数为将欧式空间映射到希尔伯特征空间, 核函数K(x,z)就为映射函数的内积。
核技巧为只定义核函数K(x,z),不定义映射函数, 通过核函数直接计算映射函数的内积。
2 核函数的作用?
将低维的欧式空间映射到高唯特征空间,将线性不可分在高维特征空间中变得线性可分,在svm中拉格朗日对偶问题中的内积xi*xj 可以用核函数代替 。核函数可将两组数据映射为核空间内的两个点,看两个点之间的距离判断是否为同一分布。
3 有哪些核函数?
1)高斯核函数RBF: 其嵌入空间(embedding space)非常丰富,使得原空间的不同分布能够映射到不同的点.
核函数能将连续函数空间填满的kernel叫做general kernel.
2)多项式核函数:多项式函数不是general kernel. 因为更高阶的多项式不能由低阶多项式的线性组合构成
3)字符串核函数(string kernel function):核函数不仅定义在欧式空间,还定义在离散数据集合. 字符串核函数是定义在字符串集合上的核函数
22、作者:牛客128229号
链接:https://www.nowcoder.com/discuss/108820
来源:牛客网
优点:
1 )基于结构风险最小化原则,正则化的合页损失函数(当样本被正确分类且函数间隔(确性度)>1 的时候损失
数为0,否则损失函数为1-y(wx+b)),有更好的泛化能力
2 )在对偶问题上可以使用核技巧,避免了高维空间的复杂映射
3 )SVM问题是凸二次规划函数,可以求得全局最优解
缺点 1 、有较大的空间消耗,主要是储存训练样本与核函数,适用于训练小样本
23、通过映射函数映射到新空间时,存在于新空间中的样本点。
24、在没有更多信息的情况下,将每个情况设为等可能的。
27、L1是权值向量w中绝对值之和,L2是平方和。
L1的图形是带有边角的(比如在二维上)会出现(w,0),而目标函数在满足约束条件L1的情况下的最优值在顶角,如图:
L2图形则是,如图:
29、优点:克服了以信息增益做划分时,存在偏向于取值较多的特征的问题。
缺点:
30、决策树的生成是一个递归的过程。可以认为是定义在特征空间和类空间上条件概率分布。
31、设A为特征集、D为数据集
1)若D中的数据同属于一种类别Ck,则设为单节点树,类别设为Ck
2)若A为空集,则设单节点树,并将D中类别多的一方Ck类别设为节点类别
3)按照信息增益公式计算每个特征Ai对D的信息增益,选取最大值的特征Ag
4)比较Ag是否大于给定阈值,若小于,则设T为单节点树。并将T中事例数最大的类Ck作为该节点的类标记,返回T。
5)否则,对Ag的每一个可能值ai,依照Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子节点。由节点和子节点构造T,返回T。
6)对i个子节点,以Di作为训练集,A-Ag作为特征集,重复1)~5)
32、可读性高、分类速度快
34、概率型模型不需要进行归一化
36、如果有些训练样本或者待分类样本缺失了一些属性值,那么该如何处理?要解决这个问题,需要考虑3个问题:i)当开始决定选择哪个属性用来进行分支时,如果有些训练样本缺失了某些属性值时该怎么办?ii)一个属性已被选择,那么在决定分支的时候如果有些样本缺失了该属性该如何处理?iii)当决策树已经生成,但待分类的样本缺失了某些属性,这些属性该如何处理?针对这三个问题,昆兰提出了一系列解决的思路和方法。
对于问题i),计算属性a的增益或者增益率时,如果有些样本没有属性a,那么可以有这么几种处理方式:(I)忽略这些缺失属性a的样本。©给缺失属性a的样本赋予属性a一个均值或者最常用的的值。®计算增益或者增益率时根据缺失属性样本个数所占的比率对增益/增益率进行相应的“打折”。(S)根据其他未知的属性想办法把这些样本缺失的属性补全。
对于问题ii),当属性a已经被选择,该对样本进行分支的时候,如果有些样本缺失了属性a,那么:(I)忽略这些样本。©把这些样本的属性a赋予一个均值或者最常出现的值,然后再对他们进行处理。®把这些属性缺失样本,按照具有属性a的样本被划分成的子集样本个数的相对比率,分配到各个子集中去。至于哪些缺失的样本被划分到子集1,哪些被划分到子集2,这个没有一定的准则,可以随机而动。(A)把属性缺失样本分配给所有的子集,也就是说每个子集都有这些属性缺失样本。(U)单独为属性缺失的样本划分一个分支子集。(S)对于缺失属性a的样本,尝试着根据其他属性给他分配一个属性a的值,然后继续处理将其划分到相应的子集。
对于问题iii),对于一个缺失属性a的待分类样本,有这么几种选择:(U)如果有单独的确实分支,依据此分支。©把待分类的样本的属性a值分配一个最常出现的a的属性值,然后进行分支预测。(S)根据其他属性为该待分类样本填充一个属性a值,然后进行分支处理。(F)在决策树中属性a节点的分支上,遍历属性a节点的所有分支,探索可能所有的分类结果,然后把这些分类结果结合起来一起考虑,按照概率决定一个分类。(H)待分类样本在到达属性a节点时就终止分类,然后根据此时a节点所覆盖的叶子节点类别状况为其分配一个发生概率最高的类。
37、在决策树递归构建二叉树过程中,回归树是以平方误差最小化准则,分类树是以基尼指数准则,进行特征选择。
38、将计算信息增益改换为求信息增益比,防止了在选取某个特征时,特征取值过多而使得结果偏向于它的缺陷。
39、相对于那些离散值属性,分类树算法倾向于选择那些连续值属性,因为连续值属性会有更多的分支,熵增益也最大。算法需要克服这种倾向。还记得前面讲得如何克服分类树算法倾向于离散值较多的离散属性么?对了,我们利用增益率来克服这种倾向。增益率也可以用来克服连续值属性倾向。增益率作为选择属性的依据克服连续值属性倾向,这是没有问题的。但是如果利用增益率来选择连续值属性的分界点,会导致一些副作用。分界点将样本分成两个部分,这两个部分的样本个数之比也会影响增益率。根据增益率公式,我们可以发现,当分界点能够把样本分成数量相等的两个子集时(我们称此时的分界点为等分分界点),增益率的抑制会被最大化,因此等分分界点被过分抑制了。子集样本个数能够影响分界点,显然不合理。因此在决定分界点是还是采用增益这个指标,而选择属性的时候才使用增益率这个指标。这个改进能够很好得抑制连续值属性的倾向。当然还有其它方法也可以抑制这种倾向,比如MDL,有兴趣的读者可以自己阅读相关文章。
40、C4.5使用的是信息增益比(底层是熵计算)最大来选取特征的、而CART算法使用基尼指数(底层是基尼指数)最小来选择特征并决定该特征的最优二值切分点。剪枝过程也不一样。C4.5剪枝只是简单的使用不断向上递归的比较前后损失函数的大小来决定是否剪枝,而CART算法是通过计算内部节点与每个内部节点的子树,通过计算当他们两个的损失函数相等时,其剪枝前后损失函数改变的程度大小来决定(选择程度较小的进行剪枝)。最后对形成的每个子树(子树序列)使用交叉验证法,选择出最好的树(同时也决定了α值)
42、一则是已生成的树中叶节点的样本个数已经小于预设的阈值,无法再划分下去了
二则是节点中计算gini指数已经小于预设阈值了,这说明该叶节点的数据集中特征划分后的类别基本属于同一类了。