ML面试题
-
特征工程的意义和作用
- 特征工程可以将样本数据处理成更为适合训练模型时模型更容易找寻出数据规则的数据集,且适当的特征工程可以提升最终模型处理分类或者回归的精度。
-
使用过哪些不同形式的特征工程
- 1.特征值化(文本特征抽取,字典特征抽取,onehot编码,分词工具)
- 2.特征预处理(数据的无量纲化,包括归一化和标准化)
- 3.特征选择(PCA降维,方差过滤,WOE&IV编码,决策树,探索性分析)
- 4.样本类别分布不均衡处理(欠抽样,过抽样)
-
什么是交叉验证,其作用是什么?
- 交叉验证是可以将训练模型的数据集拆分成测试集和训练集两部分,然后使用交叉选择的方式可以多次使用不同的训练集训练模型和使用不同的测试集测试模型,返回一个模型在整组数据集中的一个综合评判结果。其比单次对模型进行训练和测试返回的判定结果更加具有代表性。
-
简述线性回归模型的回归原理
- 线性回归就是在找寻特征数据和标签数据之间存在的某种线性关系,且可以使用w这个权重系数来表示这种关系。并且线性回归模型是一种迭代算法,通过不断的迭代最终可以获得在较小损失下的权重系数w。
-
线性回归是如何求解最小误差的?
- 通过最小二乘或者梯度下降
-
回归模型的评价指标有哪些
- MSE,MAE:用来衡量模型有没有预测到真实的或者接近真实的结果
- r2:表示模型对数据的拟合程度
- 一般是综合使用MSE+r2来表示模型的评判结果,MSE越小且r2越大则模型越优
- Adjusted R-Square:
- 可以抵消变量个数和样本数量对R2的影响
-
线性回归的损失函数如何表示?
- 真实值和预测值之间的差异平方的累和在开根号,叫做残差平方和或者误差平方和
-
是不是损失函数返回的损失值越小越好呢?
- 不一定,损失越小则表示模型越有可能出现过拟合。如果损失小且模型在测试集上表现的也不错则模型的是ok的,否则需要通过正则化(L1和L2正则化)的方式适当增大模型损失。
-
L0,L1和L2范式:
- L0是指向量中非0的元素的个数。
- L1是指向量中各个元素绝对值之和。
- L2是指向量各元素的平方和然后求平方根
-
简述什么是过拟合和欠拟合?
- 简单说过拟合是说模型过多的依赖或者过细的学习到了训练集的数据,反之则是欠拟合。如果模型在训练集表现的比较好在测试集表现不好则表示模型出现了过拟合,在训练集和测试集表现的都不好则出现了欠拟合。
- 过拟合一般可以适当的减少特征的数量,或者通过L1或者L2正则化的方式缩减不重要特征的权重,来处理过拟合的操作,比如岭回归和Loss回归。
- 欠拟合一般可以给数据集增加高次项特征来处理
-
简述什么是多项式回归?
- 就是通过PolynomialFeatures给原始数据集增加一些高次项特征,使得回归曲线弯曲来处理欠拟合的现象。多项式回归其实就是线性回归只不过是给数据集增加了一些高次项特征而已。
-
接触过哪些主要的概率模型
- 朴素贝叶斯中的高斯模型和多项式模型,逻辑回归模型
-
简述TPR和FPR的计算原理
- 真正例率TPR = TP / (TP + FN)
- 伪反例率FPR = FP / (FP + TN)
-
简述分类模型的评价指标有哪些
- Accuracy = (TP+TN)/(TP+FN+FP+TN)
- Recal = TP/(TP+FN)
- Precision = TP/(TP+FP)
- f1-score
- auc
-
什么是roc
- roc只的是计算以TPR和FPR为x和y轴中auc曲线下的面积,该面积越大越好,roc只可以作用在二分类的场景中
-
阐述sigmod函数的作用
- Sigmoid函数是一个S型的函数,可以将线性回归的预测结果(任意实数)映射到0-1之间(不可为0或者1),返回的结果可以被视为分类的概率。
-
逻辑回归为何可以返回分类的概率?
- 因为sigmod可以将线性回归返回的结果映射到0-1之间,返回值为y(x),则y(x)和1-y(x)可以视为一种形似几率,而形似几率中的p和1-p就可以视为正反例发生的概率。
-
逻辑回归和线性回归之间有何联系?
- 逻辑回归的形似几率取对数就是线性回归,线性回归解的对数几率就是逻辑回归。因此逻辑回归也被称为对数几率回归。
-
逻辑回归的优点有哪些?
- 逻辑回归对线性关系(特征与标签之间的线性关系极强的数据)的拟合效果非常好
- 逻辑回归计算快:对于线性数据,逻辑回归的拟合和计算都非常快
- 逻辑回归返回的分类结果不是固定的0,1,而是以小数形式呈现的类概率数字:我们因此可以把逻辑回归返回的结果当成连续型数据来利用
-
逻辑回归的损失函数是什么?
- 对数似然损失函数。
-
逻辑回归如何处理过拟合?
- L1正则化和L2正则化,可以使用模型参数penalty和C来处理。C是用来控制正则化程度的超参数。C越小正则化力度越大。
-
L1和L2正则化的区别?
- 如果我们的主要目的只是为了防止过拟合,选择L2正则化就足够了。但是如果选择L2正则化后还是过拟合,模型在未知数据集上的效果表现很差,就可以考虑L1正则化。
- 在L1正则化在逐渐加强的过程中,携带信息量小的、对模型贡献不大的特征的参数w,会比携带大量信息的、对模型有巨大贡献的特征的参数更快地变成0,所以L1正则化本质是一个特征选择的过程。
- L2正则化在加强的过程中,会尽量让每个特征对模型都有一些小的贡献,但携带信息少,对模型贡献不大的特征的参数w会非常接近于0。
-
逻辑回归常用的模型参数有哪些?
-
聚类算法聚出的类有什么含义呢?这些类有什么样的性质?
- 我们认为,被分在同一个簇中的数据是有相似性的,而不同簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求制定不同的商业或者科技策略。
- 聚类算法追求“簇内差异小,簇外差异 大”:
- 而这个“差异“,由样本点到其所在簇的质心的距离来衡量。
-
Kmeans如何计算距离?
- 欧式距离
- 曼哈顿距离
- 余弦距离
-
Kmeans有损失函数吗?
- 损失函数本质是用来衡量模型的拟合效果的(损失越小,模型的拟合效果越好),只有有着求解参数需求的算法,才会有损失函数。Kmeans不求解什么参数,它的模型本质也没有在拟合数据,而是在对数据进行一种探索。因此Kmeans没有损失函数。
-
什么时候会使用Kmeans的predict方法?
- 如果样本数据量级比较大,则可以使用局部数据来指定之心和实现聚类,然后使用predict将剩下数据进行分类操作。
-
聚类算法的评价指标是什么?
- 轮廓系数,其原理就是让聚类算法追求簇内差异小,簇外差异大。
-
SVM的主要适用场景?
- 图像分类
- 文本分类
-
支持向量机的分类原理
- 找出最大边际的决策边界即可实现高质量的分类。在高维和非线性的特征中可以使用不同的核函数对数据进行升维变化找出合适的超平面作为的决策边界进行分类,因此SVM常被用作到二分类案例中。常用的核函数有:
- linner:处理线性
- poly:处理偏线性
- sigmod:非线性
- rbf:偏非线性
- 在使用中发现rbf在线性和非线性数据中表现都不错。
- 找出最大边际的决策边界即可实现高质量的分类。在高维和非线性的特征中可以使用不同的核函数对数据进行升维变化找出合适的超平面作为的决策边界进行分类,因此SVM常被用作到二分类案例中。常用的核函数有:
-
决策树的基本原理是什么?
- 找寻特征和标签值之间的决策规律,这个规律可以使用一个树状结构来表示,基于该树状结构就可以对未知数据进行分类和预测。
-
决策树算法的处理核心是什么?
- 如何寻找最佳节点和最佳分支
- 如何让树停止生长,防止过拟合
-
构建决策树的常用算法有哪些?
- ID3,C4.5和CART
-
简述ID3算法原理
- 基于信息论可以计算树结构的最佳节点是什么,最佳节点是根据计算不同特征的信息增益,信息增益的大小可以决定最佳节点和不同的分支情况。直到节点的信息熵为0或者不纯度为0则停止分支。
-
什么是信息熵和信息增益?
- 信息熵(entropy):是一种信息的度量方式,表示信息的混乱程度,也就是说:信息越有序,信息熵越低(不纯度或者信息量越低)。
- 信息增益:在根据某个特征划分数据集之前之后信息熵发生的变化or差异叫做信息增益,知道如何计算信息增益,获得计算增益最高的特征就是最好的选择。
-
ID3有哪些局限性?
- 没有剪枝的设置,容易导致过拟合
- 不能直接处理连续型数据集,若要使用ID3处理连续型变量,则首先需要对连续变量进行离散化
-
常用的模型剪枝参数有哪些?
- min_samples_leaf
- min_samples_split
- max_depth
-
超参数如何调优?
- 学习曲线
- 网格搜索
-
简述集成算法的核心思想?
- 目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型(弱评估器,基评估器),在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型一起得到一个更好更全面的强监督模型。(三个臭皮匠赛过诸葛亮)
-
实现集成学习的方法有哪些?
- Bagging:并行生成多个弱评估器且使用又放回的随机抽样方式生成多分训练集数据,然后训练多个弱评估器,然后将每一个弱评估器返回的分类结果进行投票,将预测结果进行均值计算返回最终结果。
- Boosting:依次生成多个弱评估器,然后前一个弱评估器会将预测错的样本赋予更高的权重然后将整改后的样本训练下一个弱评估器,从而使得后面的弱评估器都是前一个评估器的纠错专家,从而降低预测错的可能。
-
常见的集成模型有哪些?
- Bagging的随机森林
- Boosting的xgboost
-
建模前对数据做过哪些形式的数据处理和探究?
- 使用descrip和info对数据总览数据概况
- 通过 describe 和 matplotlib 可视化查看数据的相关统计量(柱状图)
- 重点关注最大最小值中的异常数据和方差较低的特征
- 缺失值处理
- 标签数据的分布情况
- 特征的数值分布情况
- 特征于特征之间的相关性
- 特征和标签之间的相关性
- 适当的特征工程
综合面试题
-
怎么处理数据中的离群值?
- 解析:
- 离群值的存在会影响到对数据的拟合和预测,通常需要加以处理,大致可以分为两类方法
- 第一类的方法可以参考缺失值处理:
- 1)直接删除
- 2)替换:可以使用均值、中位数、众数进行替换
- 第二类的方法是离群值处理特有的:
- 利用拉依达准则法(3σ准则),将超出这个范围的值替换成设定的阈值
- 极小的离群点数据x < (q1 - 3 * iq))
- 极大的离群点数据:x > (q3 + 3 * iq)
- 第一类的方法可以参考缺失值处理:
- 离群值的存在会影响到对数据的拟合和预测,通常需要加以处理,大致可以分为两类方法
- 值得注意的是,在特定的业务中,离群值是有特殊的含义的,对这些离群值单独分析可能会得到一些有价值的结论
- 解析:
-
用于评估预测模型的矩阵称为什么?
- 混淆矩阵(confusion matrix),其列代表预测的类别,行代表真实值的分类, 常用在监督学习中,也可称为列联表、误差矩阵,可以直观地看出每个类别被分错 的数量占类总数的比例,从而可以直观简单地评估预测模型优劣。
-
下面对于处理缺失数据的方法,正确的是(多选):
- A. 缺失数据的处理必须遵循固定的标准和步骤,防止关键信息丢失
- B. 一种方法是忽略有缺失数据的记录,这种处理方法的一个缺点是对于观测值比较小的数据集,容易造成关键数据的丢失
- C. 使用平均值或者最常出现值等不同的方法填充数据
- D. 一种方法是直接把缺失值标记为“未知”
- 答案:B、C、D
-
简述 k-means 聚类的基本思想、步骤以及 k-means 的缺点。
- 基本思想:通过迭代寻找 k 个聚类的一种划分方案,使得用这 k 个聚类的均值来代表相应各类样本时所得的总体误差最小。
- K-means 聚类步骤:
- Step1: 随机选择 k 个质心(即 k 个类);
- Step2: 计算每一个点到这些质心的距离,然后决定每个点所属的类;
- Step3: 对于每个类,重新确定该类的质心;
- Step4: 若收敛,则结束;否则转到 Step2.
- K-means 缺点:
- 1.对聚类中心的初始化比较敏感,不同的初始化带来不同的聚类结果。
- 2.K 值需要首先人工确定(启发式)。
- 3.只能处理服从标准正太分布的聚类。
- 4.K-means 对于噪声比较敏感
-
下面有关分类算法的准确率,召回率,F1 值的描述,错误的是?
- A.准确率是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率
- B.召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是 检索系统的查全率
- C.正确率、召回率和 F 值取值都在 0 和 1 之间,数值越接近 0,查准率或查全率就 越高
- D.为了解决准确率和召回率冲突问题,引入了 F1 分数
-
答案:C
-
下列不是 SVM 核函数的是:
- A.多项式核函数
- B.logistic 核函数
- C.径向基核函数
- D.Sigmoid 核函数
-
答案:B
-
在 Logistic Regression 中,如果同时加入 L1 和 L2 范数,会产生什么效果()
- A.可以做特征选择,并在一定程度上防止过拟合
- B.能解决维度灾难问题
- C.能加快计算速度
- D.可以获得更准确的结果
-
答案:A
-
请解释过拟合,以及如何防止过度拟合。
-
解析:
- 过拟合:是指为了得到一致假设而使假设变得过度严格
- 判断过拟合的方法:一个假设(模型)在训练数据上能够获得比其他假设(模型) 更好的拟合, 但是在【训练数据外】的数据集上却不能很好地拟合数据,这就意味 着出现了过拟合现象。
-
解决办法通常有:
- 增大数据量
- 减少特征
- 正则化特征
-
下面关于 ID3 算法中说法错误的是()
- A.ID3 算法要求特征必须离散化
- B.信息增益可以用熵,而不是 GINI 系数来计算
- C.选取信息增益最大的特征,作为树的根节点
- D.ID3 算法是一个二叉树模型
-
答案:D
-
在其他条件不变的前提下,以下哪种做法容易引起机器学习中的过拟合问题()
- A.增加训练集量
- B.减少神经网络隐藏层节点数
- C.删除稀疏的特征
- D.SVM 算法中使用高斯核/RBF 核代替线性核
-
答案:D
-
监督学习和无监督学习有什么区别?
-
解析:
- 监督学习:对具有标记(分类)的训练样本进行学习,这里,所有的标记(分类)是已知的。如:决策树算法、朴素贝叶斯算法、KNN 算法。
- 无监督学习:对没有标记(分类)的训练样本进行学习,目的是为了发现训练集中的结构特性。这里,所有的标记(分类)是未知的。如:聚类算法。
-
为什么说朴素贝叶斯是“朴素”的?
- 朴素贝叶斯是一种简单但极为强大的预测建模算法。之所以称为朴素贝叶斯,是因为它假设每个输入变量是独立的。这是一个强硬的假设,实际情况并不一定,但是这项技术对于绝大部分的复杂问题仍然非常有效。
-
SVM 最重要的思想是什么?
- SVM 计算的过程就是帮我们找到超平面的过程,它有个核心的概念叫:分类间隔。SVM 的目标就是找出所有分类间隔中最大的那个值对应的超平面。
-
K-Means 和 KNN 算法的区别是什么?
- 首先,这两个算法解决的是数据挖掘中的两类问题。K-Means 是聚类算法,KNN 是分类算法。其次,这两个算法分别是两种不同的学习方式。K-Means 是非监督学习,也就是不需要事先给出分类标签,而 KNN 是有监督学习,需要我们给出训练数据的分类标识。最后,K 值的含义不同。K-Means 中的 K 值代表 K 类。KNN 中的 K 值代表 K 个最接近的邻居。
-
Python数据分析通常使用的环境、工具和库都有哪些?库功能是什么?
- 基础环境一般为Anaconda,
- 编辑器多用Ipython或JupyterNotebook,
- 常用库有:
- Numpy:数值计算
- Matplotlib:数据可视化
- Pandas:数据预处理和数据分析
- scikit-learn:机器学习算法建模预测
-
数据预处理过程有哪些?
- 1)缺失值处理:删、插
- 2)异常值处理
- 3)标准化:最大最小标准化、z标准化等
- 4)归一化:对于文本或评分特征,不同样本之间可能有整体上的差异,如a文本共20个词,b文本30000个词,b文本中各个维度上的频次都很可能远远高于a文本
- 5)离散化:onehot、分箱等
-
PCA
- 1)主成分分析是一种降维的方法
- 2)思想是将样本从原来的特征空间转化到新的特征空间,并且样本在新特征空间坐标轴上的投影方差尽可能大,这样就能涵盖样本最主要的信息
-
请说明随机森林较一般决策树稳定的几点原因
1)bagging的方法,多个树投票提高泛化能力
2)bagging中引入随机,避免单棵树的过拟合,提高整体泛化能力
-
LR 的推导,特性?
- LR的优点在于实现简单,并且计算量非常小,速度很快,存储资源低,缺点就是因为模型简单,对于复杂的情况下会出现欠拟合,并且只能处理2分类问题(可以通过一般的二元转换为多元或者用softmax回归)。
下列哪种方法常用来预测连续型独立变量
A. 线性回归 right
B. 逻辑回归
C. 都行
D. 都不行
训练线性回归模型,如果数据量变少,是否更容易发生过拟合?如果假设空间变小,是否更容易发生过拟合?
- 数据量(样本量)变少模型会过拟合,空间(特征维度)变小,不会拟合,可能会欠拟合
使用Lasso回归拟合数据,之后将数据中某个特征数值扩大10倍,使用相同的正则化系数对Lasso回归进行修正,
A. 这个特征很可能会被排除到模型外
B. 这个特征仍会包含在模型中
C. 根据已知信息无法判断这个特征是否被排除
解释:首先岭回归是L2正则,Lasso为L1正则化。Lasso也是线性模型就是在找寻特征和目标之间的关联w,那么模型训练好之后w就是已知的,如果特征数值扩大10倍,因为w已经为已知的,wx值也为固定的,x扩大则w减小,再次正则化缩减特征权重,则w可能缩减为0,则该特征就会被排除在模型外。
使用线性回归模型拟合数据,之后增加一个新的特征变量,则
R-square上升/下降(1-(RSS/(pred-y).sum()))?Adjust R-square上升/下降?
解释:增加一个特征,则视为模型预测能力变强,则pred-y变小,则R2变大,Adjust R-square只会解决的是样本量对r2造成的影响,这里没有增加样本则Adjust R-square和R2变化是一样的,都变大
评估线性回归模型的指标
A. R-square
B. Adjust R-square
C. F statistics (error)
D. RMSE/MSE/MAE
使用正规方程(SDGRegression)Normal Equation求解系数
- 解释:正规方程就是以梯度下降求解w的一种线性回归模型。
A. 需要学习因子
B. 如果特征数量很多,会降低运行速度
C. 不需要迭代训练 (error)
两个变量相关,它们的相关系数可以为0吗?
- 可以。为0说明两个变量之间没有线性关系
在一个较复杂的回归模型中拟合样本数据,使用Ridge回归调节正则化参数来降低模型复杂度。若设置的参数较大,偏差bias上升/下降,方差varianca上升/下降?
解释:
- 偏差指的是算法在大型训练集上的错误率,方差指的是算法在测试集上的表现低于训练集的程度。
- 高偏差对应着欠拟合,高方差对应着过拟合
- 因此正则化参数较大,模型可能发生欠拟合,则训练集和测试集偏差变大。训练集方差上升,测试集方差下降。
逻辑回归与多元回归的区别
A. 逻辑回归用来预测事件发生的概率
B. 逻辑回归用来计算拟合优度指数 error
C. 逻辑回归用来对回归系数进行估计
监督学习容易产生过拟合,还是非监督学习容易产生过拟合?
- 非监督无法计算拟合度
评价的模型存在高偏差bias,怎么办?(说明模型欠拟合)
A. 减少模型特征数量
B. 增加模型特征数量 right
C. 增加样本数量
二元分类中,阈值为0.5,大于0.5为正例样本,小于0.5为负例样本,将阈值调整为0.6,准确率、召回率等如何变化?
- 解释,阈值为0.6,则正例样本数量减少。
点击率预测是属于正负样本不均衡的问题,例如点击占99%,未点击占1%。 在这种不平衡的数据集上建模,训练样本的正确率达到了99%,是否需要继续优化模型?
- 需要。