【3】机器学习算法面试八股
31如果给你一些数据集,你会如何分类(我是分情况答的,从数据的大小,特征,是否有缺失,分情况分别答的);
根据数据类型选择不同的模型,如Lr或者SVM,决策树。假如特征维数较多,可以选择SVM模型,如果样本数量较大可以选择LR模型,但是LR模型需要进行数据预处理;假如缺失值较多可以选择决策树。选定完模型后,相应的目标函数就确定了。还可以在考虑正负样例比比,通过上下集采样平衡正负样例比。
32如果数据有问题,怎么处理;
- 上下采样平衡正负样例比;2.考虑缺失值;3.数据归一化
常见的损失函数有:0-1损失函数、绝对损失函数、平方损失函数、对数损失函数经验风险用来度量模型在整个训练集上的预测效果好坏,而损失函数用来度量模型在单个训练样本上的预测效果好坏
梯度(gradient)其实是一个向量,一个函数对于其自变量分别求偏导数,这些偏导数所组成的向量就是函数的梯度。
线性可分支持向量机的模型表达式和感知机是一样的,只不过对于模型参数的求解方式不一样,导致模型的泛化性能也不一样。感知机利用误分类最小的策略得到分离超平面,线性可分支持向量机利用间隔最大化的策略得到分离超平面。
线性可分支持向量机是通过最大化训练集的几何间隔来得到模型参数的。几何间隔最大化可以转化为不等式约束条件下的目标函数最小化问题。
线性可分支持向量机的模型参数通过训练集的每个样本和其对应的拉格朗日乘子计算而来,有多少个训练样本,就有多少个拉格朗日乘子;其中拉格朗日乘子大于零的样本特征向量就是支持向量
非线性支持向量机用来解决非线性分类问题,本质是将特征向量映射到新的特征空间中,从而使得数据在新的特征空间中线性可分,然后利用线性支持向量机的方法求解模型参数
33分层抽样的适用范围
分层抽样利用事先掌握的信息,充分考虑了保持样本结构和总体结构的一致性,当总体由差异明显的几部分组成的时候,适合用分层抽样。
34LR和线性回归的区别
线性回归用来做预测,LR用来做分类。线性回归是来拟合函数,LR是来预测函数。线性回归用最小二乘法来计算参数,LR用最大似然估计来计算参数。线性回归更容易受到异常值的影响,而LR对异常值有较好的稳定性。
35生成模型和判别模型基本形式,有哪些?
生成式:朴素贝叶斯、HMM隐含马尔柯夫模型、Gaussians、马尔科夫随机场判别式:LR,SVM,神经网络,CRF,Boosting
36核函数的种类和应用场景
线性核、多项式核、高斯核、Sigmoid核函数。特征维数高选择线性核样本数量可观、特征少选择高斯核(非线性核)样本数量非常多选择线性核(避免造成庞大的计算量)当样本的特征很多且维数很高时可考虑用SVM的线性核函数。当样本的数量较多,特征较少时,一般手动进行特征的组合再使用SVM的线性核函数。当样本维度不高且数量较少时,且不知道该用什么核函数时一般优先使用高斯核函数,因为高斯核函数为一种局部性较强的核函数,无论对于大样本还是小样本均有较好的性能且相对于多项式核函数有较少的参数
37核函数的作用
核函数隐含着一个从低维空间到高维空间的映射,这个映射可以把低维空间中线性不可分的两类点变成线性可分的。
38分类算法列一下有多少种?应用场景
单一的分类方法主要包括:LR逻辑回归,SVM支持向量机,DT决策树、NB朴素贝叶斯、NN人工神经网络、K-近邻;集成学习算法:基于Bagging和Boosting算法思想,RF随机森林,GBDT,Adaboost,XGboost
39SVM为什么使用对偶函数求解
对偶将原始问题中的不等式约束转为了对偶问题中的等式约束, 对偶问题更容易求解,因为不用求w了;而且更加方便了核函数的引入,同时也改变了问题的复杂度,在原始问题下,求解问题的复杂度只与样本的维度有关,在对偶问题下,只与样本的数量有关。
40ID3,C4.5和CART三种决策树的区别
ID3决策树优先选择信息增益大的属性来对样本进行划分,但是这样的分裂节点方法有一个很大的缺点,当一个属性可取值数目较多时,可能在这个属性对应值下的样本只有一个或者很少个,此时它的信息增益将很高,ID3会认为这个属性很适合划分,但实际情况下叫多属性的取值会使模型的泛化能力较差,所以C4.5不采用信息增益作为划分依据,而是采用信息增益率作为划分依据。但是仍不能完全解决以上问题,而是有所改善,这个时候引入了CART树,它使用gini系数作为节点的分裂依据。
41SVM和全部数据有关还是和局部数据有关?
SVM只和分类界限上的支持向量点有关,换而言之只和局部数据有关。
42为什么高斯核能够拟合无穷维度
因为将泰勒展开式代入高斯核,将会得到一个无穷维度的映射。
SVM的复杂度主要由支持向量数刻画,而不是数据的维度,因此相比其他方法,SVM不太容易过拟合。
43LR和SVM 区别
LR是参数模型,SVM是非参数模型。2)从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。3)SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。4)逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。5)logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。
44 L1和L2正则化的区别
L1是模型各个参数的绝对值之和,L2为各个参数平方和的开方值。L1正则实质上是对模型参数分布做了拉普拉斯分布的先验性假设,L2正则是对模型参数分布做了高斯分布的先验性假设L1更趋向于产生少量的特征,其它特征为0,最优的参数值很大概率出现在坐标轴上,从而导致产生稀疏的权重矩阵,而L2会选择更多的特征,这些特征都会接近于0。最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0
45Loss Function有哪些,怎么用?
平方损失(预测问题)、交叉熵(分类问题)、hinge损失(SVM支持向量机)、CART回归树的残差损失
46线性回归的表达式,损失函数;
线性回归y=wx+b,w和x可能是多维。线性回归的损失函数为平方损失函数。反向求导推导
47知道哪些传统机器学习模型
1).回归算法:回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。 常见的回归算法包括:最小二乘法(Ordinary Least Square),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)。2).基于实例的算法:基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map,SOM)。深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。3).决策树学习:决策树算法根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree,CART),ID3 (Iterative Dichotomiser 3),C4.5,Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机森林(Random Forest),多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine,GBM)。4).贝叶斯方法:贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators,AODE),以及Bayesian Belief Network(BBN)。5).基于核的算法:基于核的算法中最著名的莫过于支持向量机(SVM)了。基于核的算法把输入数据映射到一个高阶的向量空间,在这些高阶向量空间里,有些分类或者回归问题能够更容易的解决。常见的基于核的算法包括:支持向量机(Support Vector Machine,SVM), 径向基函数(Radial Basis Function,RBF),以及线性判别分析(Linear Discriminate Analysis,LDA)等。6).聚类算法:聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization,EM)。7).降低维度算法:像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis,PCA),偏最小二乘回归(Partial Least Square Regression,PLS),Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(Projection Pursuit)等。8).关联规则学习:关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori算法和Eclat算法等。9).集成算法:集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting,Bootstrapped Aggregation(Bagging),AdaBoost,堆叠泛化(Stacked Generalization,Blending),梯度推进机(Gradient Boosting Machine, GBM),随机森林(Random Forest)。10).人工神经网络:人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation),Hopfield网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ)
48什么是DBSCAN
DBSCAN是一种基于密度的空间聚类算法,它不需要定义簇的个数,而是将具有足够高密度的区域划分为簇,并在有噪声的数据中发现任意形状的簇,在此算法中将簇定义为密度相连的点的最大集合
49k-means算法流程
从数据集中随机选择k个聚类样本作为初始的聚类中心,然后计算数据集中每个样本到这k个聚类中心的距离,并将此样本分到距离最小的聚类中心所对应的类中。将所有样本归类后,对于每个类别重新计算每个类别的聚类中心即每个类中所有样本的质心,重复以上操作直到聚类中心不变为止。
50LDA的原理
LDA是一种基于有监督学习的降维方式,将数据集在低维度的空间进行投影,要使得投影后的同类别的数据点间的距离尽可能的靠近,而不同类别间的数据点的距离尽可能的远。
更多校园招聘常见面试问题(开发、算法、编程题目)参见CSDN博客:http://t.csdn.cn/V4qbH
欢迎关注、收藏、点赞后进行问题咨询及秋招建议!!
#数据人的面试交流地##牛客在线求职答疑中心##牛客解忧铺##我发现了面试通关密码##实习,投递多份简历没人回复怎么办#介绍秋招面试过程中对机器学习算法、数据挖掘、python语言、C++语言、数据结构的面试题目和基础总结