数据分析师面经汇总(机器学习篇)
正则化是什么?
定义:对某一问题加以先验的限制或约束以达到某种特定目的的一种手段或操作。
原理:对损失函数加上某种约束,从而减少模型的方差提高泛化能力。 损失函数(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种结点(根结点:初始结点;叶节点:最终分类结果结点;内结点:树内部进行判断的条件结点-即特征) 在决策树中,每个样本都只能被一条路径覆盖。
基本思想:以信息熵为度量构造一棵熵值下降最快的树。到叶子节点处的熵值为零,此时每个叶结点中的实例都属于同一类。
决策树的优点:①易于理解和解释、可以可视化分析,容易提取出规则。②速度快、计算量相对较小。③可以处理连续和种类字段
决策树的缺点:①数据集特征很多时,容易过拟合。②忽略了特征之间的相关性。
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
决策树的三种分类算法及其优缺点
ID3算法:使用信息增益进行特征选择。当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益比较 偏向取值较多的特征。
优点:①克服了信息增益选择特征的时候偏向于特征个数较多的不足②以处理连续性数据和缺失值③加入了树的后剪枝。
优点:①既适用于回归,也可以用于预测。②采用基尼指数选择特征,相比于信息增益,计算速度更快,因为它不用计算log值。③CART 构建回归树用到树的 剪枝技术,用于防止树的过拟合。
缺点:①不能处理缺失值。
如何防止决策树过拟合?
预剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。比如:建模时指定树的深度。
后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。这个需要写算法实现。
逻辑回归
线性回归是利用多个输入变量来预测一个输出变量。
逻辑回归是线性回归通过S函数将结果映射到0,1区间内,做分类判断时,设定一个概率的阈值,大于阈值则样本预测值为1,小于阈值则样本预测为0。
常用的场景包括:广告点击行为预测;借款人评估;信用评分卡等等
优点:①模型输出即为样本的概率分布;②能够输出表达式并且分析各个特征的权重;③在SPSS,Python中有许多现成的包能够调用,并且构建的模型可解释性高。
缺点:①预测结果呈S型分布,两端的概率变化非常小,中间的概率变化十分剧烈,难以找到阈值;②只能处理线性可分类的问题;③拟合能力差。
随机森林
提问:随机森林随机性体现在哪?
答:随机选取样本、随机选取特征。
各类算法比较
Bagging算法:每个分类器都随机从原样本中做有放回的采样,然后分别在这些采样后的样本上训练分类器,然后再把这些分类器组合起来。简单的多数投票一般就可以。其代表算法是随机森林。Boosting算法:通过迭代地训练一系列的分类器,每个分类器采用的样本分布都和上一轮的学习结果有关。
bagging和boosting的区别
在样本选择上,bagging方法是有放回的选择样本,所有样本的权重保持不变;boosting方法是每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。
在预测函数上,bagging方法所有弱分类器权重相等;boosting方法中每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
在计算方式上,bagging采用并行计算的方式,同时生成所有弱分类器;boosting采用顺序计算的方式,各分类器只能按顺序生成,后一个分类器的参数会用到前一个分类器的结果。
- 都是由多棵树组成 随机森林是bagging算法 gbdt是boosting算法。
- bagging算法采取均匀有放回抽样,boosting根据错误率来取样。
- 对于最终的输出结果而言, 随机森林采用多数投票等; 而 GBDT 则是将所有结果累加起来, 或者加权累加起来。
- 随机森林的树可以并行生成,gbdt只能串行生成。
- gbdt对异常值敏感,随机森林对异常值不敏感。
XGBoost和GBDT的区别
- XGB是GBDT的改进,GBDT将目标函数展开式到一阶 XGB将目标函数泰勒展开到了二阶。保留了更多有关目标函数的信息,对提升效果有帮助。
- 传统GBDT以CART作为基分类器,XGB还支持线性分类器。
- xgboost加入了L1和L2正则化项,因而有利于模型获得更低的方差。
- xgboost增加了自动处理缺失值特征的策略,将缺失值捆绑分别放在左边和右边,取信息增益大的那边。
- xgb支持并行。是特征粒度上的并行 而不是树的并行。gbdt是串行。
随机森林和XGBoost的区别
- 随机森林采用的是bagging算法同时生成多个弱分类器。 xgb使用的是boosting算法,按顺序生成各分类器。
- XGB会根据特征的重要性进行排序 随机森林是随机选取特征。
- 随机森林不能处理缺失值 , XGB可以处理缺失值。
- 对于最终的输出结果而言,随机森林采用多数投票等;而xgboost则是将所有结果累加起来,或者加权累加起来。
- 随机森林计算量少 计算速度也更快 并且需要的参数也少,XGB需要的参数多,运行速度较慢。
①xgb采用了预排序方法处理节点分裂,lgbm采用的是直方图优化算法,减少了内存消耗和计算代价。
②决策树生长策略,XGBoost 采用的是 Level-wise(按层生长) 的树生长策略,LightGBM 采用的是 leaf-wise (按叶子生长)的生长策略,以最大信息增益为导向。后者进度更高,容易过拟合,所以要控制最大深度。
③并行策略对比,XGBoost 的并行主要集中在特征并行上,而 LightGBM 的并行策略分特征并行,数据并行以及投票并行。
归一化
不需要进行归一化的模型:决策树、GBDT、XGBoost、LightGBM、CatBoost这样的树模型
因为它们在训练的过程中通过信息增益、信息增益率、gini系数来进行树的生长,不涉及梯度下降过程。
梯度下降就是找到让损失函数的误差值最小时候算法取的参数。
狭义上可以分为标准化和归一化两种。
丢失了数据之间的距离,保留了数据的权重大小
适用于小数据以及不涉及距离度量的时候
AUC
定义
①随机给定一个正样本和负样本,用分类器进行分类和预测,正样本得分大于负样本得分的概率,就是AUC。
②横坐标是假阳率 纵坐标是召回率 roc曲线所为成的面积就是AUC的值。
模型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好
数据处理包含哪些部分?
数据集成:一般来说用皮尔逊相关系数来检验是否有相关性,将多个有相关性的列,保留某一个,主要是为了解决数据冗余的问题。
数据变换: 将数据进行规范化处理一般来说是将数据减去均值再除以标准差 解决数据之间的单位问题。
K-means
定义:一种典型的无监督学习算法,对未标记的数据(即没有定义类别或组的数据)进行分类。
思想:定义多个簇,把相似的对象归到同个簇中,保持各个簇之间的相似度最小,簇内对象之间的相似度最大。
过程:1.选择初始化K个样本作为初始聚类中心。 2.针对每个样本 计算它到K个聚类中心的距离,并把它们分到距离最小的簇中。 3.针对每个簇,重新计算它的聚类中心。 4.重复二三步,直到知道达到某个终止条件比如:迭代次数。
缺点:K值的选取不好把握、非凸数据集难以收敛、采用迭代方法容易得到局部最优结果、对噪声、异常值比较敏感。
多重共线性
定义:模型的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或者难以估计准确。影响:影响模型的稳定性和解释性,对于线性回归模型,会导致最小二乘估计无法计算系数,即使可计算系数方差也很大。
识别方法:计算特征之间的相关系数,对于相关性比较高的特征,根据业务需要保留有代表性的特征。例如:皮卡逊相关系数。
解决方法:删除共线性强的特征,对于线性回归模型,可采用岭回归的估算方式解决,或者PCA降维。
有偏估计和无偏估计
无偏估计是用样本统计量来估计总体参数时的一种无偏推断。估计量的数学期望等于被估计参数的真实值,则称估计量为被顾及参数的无偏估计,即具有无偏性,是一种用户评价估计量优良性的准则。无偏估计的意义是:在多次重复下,他们的平均数接近所估计的参数真值。有偏估计是指由样本值求得的估计值与待估参数的真值之间有系统误差,其期望值不是待估参数的真值。在统计学中,估计量的偏差(或偏差函数)是此估计量的期望值与估计参数的真值偏差。偏差为0的估计量或决策规则称为无偏的。否则该估计量是有偏的。