数据分析师面经汇总(机器学习篇)


正则化是什么?

定义:对某一问题加以先验的限制或约束以达到某种特定目的的一种手段或操作。
原理:对损失函数加上某种约束,从而减少模型的方差提高泛化能力。 损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度。
L1正则化是最小绝对值误差     L2正则化是最小平方误差
L1会产生一个稀疏矩阵 用于特征选择 L2更倾向于产生更小更分散的权重向量 让模型做决策时考虑更多的特征  这两种正则化本质都是防止过拟合,在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。


过拟合

定义:模型在训练集上表现优越,但在验证集或测试集上表现不佳。
过拟合解决:增加样本数量,简化模型(提取特征或PCA降维),训练过程提前终止(early-stopping-rounds),正则化,深度学习(神经网络),K-folds交叉验证
过拟合会导致高方差 欠拟合会导致高偏差 所以模型需要在方差和偏差之间做出一个权衡。
偏差反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,方差反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。

监督学习、无监督学习有哪些?它们的区别是什么?

监督学习有哪些:决策树,随机森林,极端梯度递增(XGB)、k近邻(KNN),支持向量机(SVM),朴素贝叶斯
无监督学习:k-means,PCA主成分分析,apriori
区别:①监督学习给数据加了标签,无监督学习没有给数据添加标签。②有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。


决策树及其优缺点。

定义:决策树是一种对样本进行分类的树形结构,也能够进行回归预测。决策树主要包含3种结点(根结点:初始结点;叶节点:最终分类结果结点;内结点:树内部进行判断的条件结点-即特征)  在决策树中,每个样本都只能被一条路径覆盖。
基本思想:以信息熵为度量构造一棵熵值下降最快的树。到叶子节点处的熵值为零,此时每个叶结点中的实例都属于同一类。
决策树的优点:①易于理解和解释、可以可视化分析,容易提取出规则。②速度快、计算量相对较小。③可以处理连续和种类字段
决策树的缺点:①数据集特征很多时,容易过拟合。②忽略了特征之间的相关性。


关于决策树的第一个优点的实现方法:
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
import matplotlib.pyplot as plt
# 加载鸢尾花数据
iris=datasets.load_iris()
X=iris['data']
y=iris['target']
# 查看鸢尾花类别的名字
feature_names=iris.feature_names
# 将数据分为训练数据和测试数据,比例是4:1
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=1024)
# 训练数据,预测鸢尾花的种类
clf=DecisionTreeClassifier(criterion='gini')
clf.fit(X_train,y_train)
y_=clf.predict(X_test)
plt.figure(figsize=(18,12))
# filled填充color
_=tree.plot_tree(clf,filled=True,feature_names=feature_names)             #下图petal length(cm)为特征名称   gini为基尼指数  samples为样本数  value是各个类别的样本数(一共有三个类别,四个特征(sepal(萼片长度和宽度),petal(花瓣长度和宽度))



决策树的三种分类算法及其优缺点

决策树学习算法包括3部分:特征选择、树的生成和树的剪枝。常用的算法有ID3、C4.5和CART决策树,分别基于信息增益、信息增益比、基尼指数划分的。
信息熵:可以衡量特征到底多不确定。信息熵越小,不确定性越低。
信息增益:使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。 信息增益=使用该特征分类前的信息熵– 使用该特征分类后的信息熵。
信息增益率:信息增益率=信息增益/特征熵
Gini指数:总体内包含的类别越杂乱,GINI指数就越大(跟熵的概念很相似)。

ID3算法:使用信息增益进行特征选择。当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益比较 偏向取值较多的特征。

优点:①处理离散型数据②倾向于选择取值较多的属性,因为信息增益反映的给定一个条件以后不确定性减少的程度,必然是分得越细的数据集确定性更高,也就是条件熵越小,信息增益越大。
缺点:①不能处理连续型数据和带有缺失值的数据集。②如果出现各属性值取值数分布偏差大的情况, 分类精度大幅度降低。

C4.5算法:使用信息增益率进行特征选择,克服了信息增益选择特征的时候偏向于特征个数较多的不足。并且可以处理连续性数据和缺失值 ,可以调用机器学习库weka实现C4.5算法。(sklearn不存在C4.5算法,只有ID3和CART算法)
优点:①克服了信息增益选择特征的时候偏向于特征个数较多的不足②以处理连续性数据和缺失值③加入了树的后剪枝。
缺点:①C4.5和ID3一样,使用的模型算法含有大量的对数计算,增加了模型的时间复杂度。②相比于ID3,加入了树的剪枝,因此,需要对数据进行多次扫描,算法效率低。

CART算法:分类回归树,既可以用于分类,也可以用于预测。使用基尼系数进行特征选择。
优点:①既适用于回归,也可以用于预测。②采用基尼指数选择特征,相比于信息增益,计算速度更快,因为它不用计算log值。③CART 构建回归树用到树的 剪枝技术,用于防止树的过拟合。
缺点:①不能处理缺失值。

如何防止决策树过拟合?

剪枝:给决策树瘦身;目标就是不需要太多判断就可以得到好的结果.防止过拟合发生。
进行剪枝,处理由于数据中的噪声和离群点导致的过分拟合问题。包括先剪枝和后剪枝。
预剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。比如:建模时指定树的深度。
后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。这个需要写算法实现。


逻辑回归

线性回归是利用多个输入变量来预测一个输出变量。
逻辑回归是线性回归通过S函数将结果映射到0,1区间内,做分类判断时,设定一个概率的阈值,大于阈值则样本预测值为1,小于阈值则样本预测为0。
常用的场景包括:广告点击行为预测;借款人评估;信用评分卡等等
优点:①模型输出即为样本的概率分布;②能够输出表达式并且分析各个特征的权重;③在SPSS,Python中有许多现成的包能够调用,并且构建的模型可解释性高。
缺点:①预测结果呈S型分布,两端的概率变化非常小,中间的概率变化十分剧烈,难以找到阈值;②只能处理线性可分类的问题;③拟合能力差。


随机森林

定义:随机森林的由很多决策树构成 当我们输入一个要预测分类的数据时,每个决策树都会接收数据并产生一个分类结果,然后采用投票机制,认为哪个结果出现的次数最多就归为哪一类。
原理:随机森林是bagging类的集成学习算法,可以利用多个弱学习器投票得到最终答案,其中每个弱学习器的构建方法是从全部样本和全部特征中,有放回的抽取部分样本和特征进行训练。
构造过程:随机样本的选取→ 随机选取特征→ 构建决策树→ 随机森林投票
优势:有效解决决策树的过拟合问题,能够处理特征维度很多的数据,并且不需要做特征选择,可以解决回归或者分类问题。
劣势:模型的可解释性比较差,无法控制模型内部的运行,会在某些噪声较大的分类或回归问题上会过拟合(噪声意思是错误的数据)。
应用场景:可以用来预测贷款风险,银行和证券使用较多,调参简单。

提问:随机森林随机性体现在哪?
答:随机选取样本、随机选取特征。

各类算法比较

Bagging算法:每个分类器都随机从原样本中做有放回的采样,然后分别在这些采样后的样本上训练分类器,然后再把这些分类器组合起来。简单的多数投票一般就可以。其代表算法是随机森林。
Boosting算法:通过迭代地训练一系列的分类器,每个分类器采用的样本分布都和上一轮的学习结果有关。
xgb算法:极端梯度递增是boosting类的集成学习方法,按顺序生成各分类器,后一个分类器的参数会根据前面分类器的残差大小来设置对应的权重,所有弱分类器的结果相加等于预测值。

bagging和boosting的区别
在样本选择上,bagging方法是有放回的选择样本,所有样本的权重保持不变;boosting方法是每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。
在预测函数上,bagging方法所有弱分类器权重相等;boosting方法中每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
在计算方式上,bagging采用并行计算的方式,同时生成所有弱分类器;boosting采用顺序计算的方式,各分类器只能按顺序生成,后一个分类器的参数会用到前一个分类器的结果。

梯度提升是一种用于回归和分类问题的机器学习技术,它以弱预测模型(通常是决策树)的集合的形式产生预测模型。

随机森林和gbdt区别:


  1. 都是由多棵树组成 随机森林是bagging算法 gbdt是boosting算法。
  2. bagging算法采取均匀有放回抽样,boosting根据错误率来取样。
  3. 对于最终的输出结果而言, 随机森林采用多数投票等; 而 GBDT 则是将所有结果累加起来, 或者加权累加起来。
  4. 随机森林的树可以并行生成,gbdt只能串行生成。
  5. gbdt对异常值敏感,随机森林对异常值不敏感。



XGBoost和GBDT的区别


  1. XGB是GBDT的改进,GBDT将目标函数展开式到一阶 XGB将目标函数泰勒展开到了二阶。保留了更多有关目标函数的信息,对提升效果有帮助。
  2. 传统GBDT以CART作为基分类器,XGB还支持线性分类器。
  3. xgboost加入了L1和L2正则化项,因而有利于模型获得更低的方差。
  4. xgboost增加了自动处理缺失值特征的策略,将缺失值捆绑分别放在左边和右边,取信息增益大的那边。
  5. xgb支持并行。是特征粒度上的并行 而不是树的并行。gbdt是串行。



随机森林和XGBoost的区别


  1. 随机森林采用的是bagging算法同时生成多个弱分类器。 xgb使用的是boosting算法,按顺序生成各分类器。
  2. XGB会根据特征的重要性进行排序 随机森林是随机选取特征。
  3. 随机森林不能处理缺失值 , XGB可以处理缺失值。
  4. 对于最终的输出结果而言,随机森林采用多数投票等;而xgboost则是将所有结果累加起来,或者加权累加起来。
  5. 随机森林计算量少 计算速度也更快 并且需要的参数也少,XGB需要的参数多,运行速度较慢。



lgbm和xgb的区别
①xgb采用了预排序方法处理节点分裂,lgbm采用的是直方图优化算法,减少了内存消耗和计算代价。
②决策树生长策略,XGBoost 采用的是 Level-wise(按层生长) 的树生长策略,LightGBM 采用的是 leaf-wise (按叶子生长)的生长策略,以最大信息增益为导向。后者进度更高,容易过拟合,所以要控制最大深度。
③并行策略对比,XGBoost 的并行主要集中在特征并行上,而 LightGBM 的并行策略分特征并行,数据并行以及投票并行。

归一化

广义常用的归一化方法:最大最小值归一化、去均值/标准差
作用:无量纲化,提高收敛速度。  无量纲化的意思:消除单位所带来的影响,比如通过这两个特征身高(cm) 体重(克),预测年龄。
不需要进行归一化的模型:决策树、GBDT、XGBoost、LightGBM、CatBoost这样的树模型
因为它们在训练的过程中通过信息增益、信息增益率、gini系数来进行树的生长,不涉及梯度下降过程。
梯度下降就是找到让损失函数的误差值最小时候算法取的参数。
树形模型不需要归一化,因为树模型并不关心变量的值,而是关心变量的分布和变量之间的条件概率。
需要进行归一化:1.基于距离计算的模型:KNN。2.通过梯度下降法求解的模型:线性回归、逻辑回归、支持向量机、神经网络。

狭义上可以分为标准化和归一化两种。


标准化归一化区别:

标准化是减均值除以标准差,将数据分布变成均值为0标准差为1的分布 不一定是正态分布
标准化保留了数据之间的距离,没有保留数据的权重大小
适用于分类 聚类算法和大数据

归一化是是减最小值 除以最大值减最小值的差 将数据规约到0,1 或者-1,1区间
丢失了数据之间的距离,保留了数据的权重大小
适用于小数据以及不涉及距离度量的时候


AUC

定义

①随机给定一个正样本和负样本,用分类器进行分类和预测,正样本得分大于负样本得分的概率,就是AUC。
②横坐标是假阳率 纵坐标是召回率 roc曲线所为成的面积就是AUC的值。


计算
样本:y=1,y = 1, y=1, y = -1, y = -1, y = -1
模型1的预测:0.8,0.7,0.3,0.5,0.6,0.9
模型2的预测:0.1, 0.8, 0.9, 0.5, 0.85, 0.2
模型1:正样本score大于负样的对包括(y1,y4)(y1,y5)(y2,y4)(y2,y5)。所以AUC值为4/9
模型2:正样本score大于负样本的对包括(y2,y4)(y2,y6)(y3,y4)(y3,y5)(y3,y6)。所以AUC的值为5/9
所以模型2要比模型1好


数据处理包含哪些部分?

数据处理包含数据清洗、数据集成、数据变换、数据规约。
数据清洗:就是对那些空值 进行填充或删除,噪声是指异常值离群值,可以使用聚类分析或者三倍标准差找到噪声点。重复值 直接用pandas中的duplicated drop_duplicates方法进行处理。
数据集成:一般来说用皮尔逊相关系数来检验是否有相关性,将多个有相关性的列,保留某一个,主要是为了解决数据冗余的问题。
数据变换: 将数据进行规范化处理一般来说是将数据减去均值再除以标准差 解决数据之间的单位问题。
数据规约: 类似于降维 是去除贡献度较小的属性 产生更小且保持数据完整性的新数据集。

K-means

定义:一种典型的无监督学习算法,对未标记的数据(即没有定义类别或组的数据)进行分类
思想:定义多个簇,把相似的对象归到同个簇中,保持各个簇之间的相似度最小,簇内对象之间的相似度最大。
过程:1.选择初始化K个样本作为初始聚类中心。 2.针对每个样本 计算它到K个聚类中心的距离,并把它们分到距离最小的簇中。  3.针对每个簇,重新计算它的聚类中心。  4.重复二三步,直到知道达到某个终止条件比如:迭代次数。

优点:原理简单、收敛速度快,聚类效果较优、算法解释度比较强。
缺点:K值的选取不好把握、非凸数据集难以收敛、采用迭代方法容易得到局部最优结果、对噪声、异常值比较敏感。
实际应用点:潜在的簇是凸面,且簇之间区别明显,大小相近,适用于大数据。

多重共线性

定义:模型的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或者难以估计准确。
影响:影响模型的稳定性和解释性,对于线性回归模型,会导致最小二乘估计无法计算系数,即使可计算系数方差也很大。
识别方法:计算特征之间的相关系数,对于相关性比较高的特征,根据业务需要保留有代表性的特征。例如:皮卡逊相关系数。
解决方法:删除共线性强的特征,对于线性回归模型,可采用岭回归的估算方式解决,或者PCA降维。
岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。

有偏估计和无偏估计

无偏估计是用样本统计量来估计总体参数时的一种无偏推断。估计量的数学期望等于被估计参数的真实值,则称估计量为被顾及参数的无偏估计,即具有无偏性,是一种用户评价估计量优良性的准则。无偏估计的意义是:在多次重复下,他们的平均数接近所估计的参数真值。
有偏估计是指由样本值求得的估计值与待估参数的真值之间有系统误差,其期望值不是待估参数的真值。在统计学中,估计量的偏差(或偏差函数)是此估计量的期望值与估计参数的真值偏差。偏差为0的估计量或决策规则称为无偏的。否则该估计量是有偏的。


以上面试和笔试常问内容已加粗。


#数据分析##笔试题目##面经##数据分析工程师##机器学习##面试题目##数据分析师#
全部评论
K-means优化:     k-means++:假设已经选取了n个初始聚类中心(0<n<k),则在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心,在选取第一个聚类中心(n=1)时同样通过随机的方法。可以说这也符合我们的直觉:聚类中心当然是互相离得越远越好。     ISODATA:类别数目随着聚类过程而变化,对类别数的‘合并’(当聚类结果某一类中样本数太少,或两个类间聚类太近),‘分裂’(当聚类结果中某一类的内方差太大,将该类进行分裂)。     Kernel K-means:将每个样本进行一个投射到高维空间的处理,然后再将处理后的数据使用普通的K-means算法进行聚类。     二分K-means:将所有的点作为一个簇,然后将该簇一分为二。之后选择能最大限度降低聚类代价函数(也就是误差平方和)和簇划分为两个簇,依次进行下去,知道簇的数目等于用户给定的数目K为止。隐含的一个原则是:因为聚类的误差平方和能够衡量聚类性能,该值越小表示数据点越接近于他们的质心,聚类效果就越好。所有我们就需要对误差平方和最大的簇进行再一次划分,因为误差平方和越大,表示这个簇的聚类效果越不好,越有可能是多个簇被当成了一个簇,所有我们首先需要对这个簇进行划分。二分K均值算法可以加速K-means算法的执行速度,因为它的相似度计算少了不受初始化问题的影响,因为这里不存在随机点的选取,且每一个都保证了误差最小。     Mini Batch K-means(适合大数据的聚类算法):通过样本量大于一万做聚类时,需要考虑选用此算法。他使用了一种叫做Mini Batch(分批处理)的方法对数据点之间的距离进行计算。Mini Batch的好处是计算过程中不必使用所有的数据样本,二十从不同类别的样本中抽取一部分样本来代表各自类型进行计算。由于计算样本量少,所以会相应的减少运行时间,但另一方面抽样也必然会带来准确度的下降。
4 回复
分享
发布于 2021-10-20 09:45
已经很棒啦,我也有被问到过决策树的原理这样
点赞 回复
分享
发布于 2021-10-17 15:56
秋招专场
校招火热招聘中
官网直投
点赞 回复
分享
发布于 2021-11-24 16:50
请问数据分析除了会问到机器学习和sql的知识之外,还会问别的方面的知识吗
点赞 回复
分享
发布于 2021-12-01 17:21
大佬TQL
点赞 回复
分享
发布于 2022-01-23 16:44
友 个人博客打不开啦
点赞 回复
分享
发布于 2022-11-07 10:11 河南

相关推荐

75 524 评论
分享
牛客网
牛客企业服务