计算机保研/考研面试复习——机器学习篇
计算机保研/考研面试复习系列
专业课(PDF整理版下载):
计算机保研/考研面试复习专业课篇——数据结构
计算机保研/考研面试复习专业课篇——计算机网络
计算机保研/考研面试复习专业课篇——操作系统
计算机保研/考研面试复习专业课篇——计算机组成原理
数学(PDF整理版下载):
计算机保研/考研面试复习数学篇——高等数学
计算机保研/考研面试复习数学篇——线性代数
计算机保研/考研面试复习数学篇——概率论
计算机保研/考研面试复习数学篇——离散数学
人工智能 (PDF整理版下载):
计算机保研/考研面试复习——机器学习篇
计算机保研/考研面试复习——深度学习篇
一、基本概念
1. 简述解决一个机器学习问题时,你的流程是怎样的?
- 问题定义:明确问题类型(分类、回归、标注、搜索、推荐、序列学习等)和目标。
- 数据准备:收集、清洗、探索数据,进行必要的特征工程。
- 模型选择:根据问题类型选择合适的机器学习算法。
- 训练模型:使用训练数据训练模型,调整参数以优化性能。
- 模型评估:使用验证集和测试集评估模型性能。
- 模型部署:将训练好的模型部署到实际应用中。
2. 损失函数是什么,如何定义合理的损失函数?为什么用这个损失函数?
损失函数是衡量模型预测值与真实值之间误差的函数。目的是量化模型的预测性能,并通过最小化损失函数来优化模型参数。
定义合理的损失函数需要考虑以下几个因素:
- 任务类型:不同的任务(如回归、分类、聚类)需要选择不同类型的损失函数。在回归问题中,常用的损失函数有均方误差
和平均绝对误差
;在分类问题中,交叉熵损失函
和Hinge 损失
常被使用。
- 模型目标:损失函数应该与模型的目标一致。例如,如果模型的目标是最小化错误率,则可以选择0-1损失函数(如果模型的预测值与真实标签不一致,则损失为1;如果一致,则损失为0);如果模型的目标是最大化概率似然,则可以选择交叉熵损失函数。
- 数据分布:损失函数的选择应该考虑到数据的分布特点。例如,如果数据存在明显的离群点,可以选择鲁棒性较强的损失函数,如Huber损失函数
。
- 可解释性:在某些应用场景下,可解释性对于模型的性能评估很重要。因此,损失函数的定义中可能需要考虑到模型预测的可解释性。
3. 回归模型和分类模型常用损失函数有哪些?各有什么优缺点
回归模型:
- 均方误差(MSE):
- 优点:直观,易于理解和计算;是最小二乘法的损失函数,常用于线性回归
- 缺点:对异常值敏感,可能导致模型性能下降
- 平均绝对误差(MAE):
- 优点:对异常值不敏感,比MSE更稳健
- 缺点:不具有MSE的可微性,可能影响梯度下降算法的收敛速度。
- Huber损失
- 优点:结合MSE和MAE的优点,对异常值不敏感,在误差较小时使用平方损失以保持模型的平滑性。
- 缺点:需要额外的参数(阈值δ)来控制损失函数的敏感度。
分类模型:
- 交叉熵损失:
- 优点:适用于多分类问题,能够提供关于类别概率的有用信息,对于错误分类给予较大的惩罚
- 缺点:当类别不平衡时,可能会导致某些类别被忽视。
- Hinge Loss(用于SVM):
- 优点:适用于二分类问题,能有效优化边界。
- 缺点:不能处理概率输出。
4. 什么是结构误差和经验误差?训练模型的时候如何判断已经达到最优?
结构(泛化)误差和经验误差是在机器学习中用于评估模型性能的两个重要概念。
- 经验误差:经验误差是指模型在训练集上的误差,即模型对已有训练数据的拟合程度。它可以通过计算模型预测结果与真实标签之间的误差来衡量。通常使用损失函数来表示经验误差,目标是使经验误差尽可能小,以提高模型对训练数据的拟合程度。
- 结构误差:结构误差是指模型在未知的测试数据上的误差。它反映了模型在现实世界中的泛化能力,即模型对新样本的预测能力。结构误差由于模型的复杂度、训练数据的质量和数量等因素而产生。降低结构误差的目标是使模型具有更好的泛化性能,在面对新样本时能够做出准确的预测。
判断模型达到最优的方法通常包括以下几种:
- 利用验证集:将数据集分为训练集、验证集和测试集,从训练集中训练模型,在验证集上评估模型的性能。随着模型训练的进行,可以观察验证集上的误差变化情况。当模型在验证集上的误差停止下降或开始增加时,可以认为模型已经达到最优。
- 使用交叉验证:交叉验证是一种评估模型性能的统计方法,将数据集划分为多个子集,在每个子集上轮流作为验证集,其他子集作为训练集。通过对多个验证集上的评估结果进行平均或加权求和,得到模型的性能评估。当模型在交叉验证中的性能稳定时,可以认为模型已经达到最优。
- 观察测试集表现:将测试集作为独立的数据集,在模型训练和调参完成后使用测试集来评估模型的泛化能力。如果模型在测试集上的表现令人满意,可以认为模型已经达到最优。
- 使用正则化技术:正则化技术可以帮助控制模型的复杂度,防止过拟合问题。通过引入正则化项或设置正则化参数,可以在训练过程中平衡经验误差和结构误差。选择适当的正则化策略可以提高模型的泛化能力,从而达到最优。
5. 模型的“泛化”能力是指?如何提升模型泛化能力?
泛化能力是指模型在新数据上的表现,即在测试集或实际应用中的表现。
提升泛化能力的方法:
- 正则化:如L1、L2正则化,防止过拟合。
- 数据增强:通过数据增强技术扩展训练数据集。
- 交叉验证:使用k折交叉验证选择最佳模型和参数。
- 集成方法:将多个不同的模型组合起来,如Bagging、Boosting等。
6. 如何选择合适的模型评估指标?PR、ROC、AUC、精准度、召回率、准确率、F1 值都是什么?如何计算?有什么优缺点?
模型评估指标的选择取决于问题类型和业务需求。
- 精准度—查准率(Precision):正预测样本中实际为正的比例(即你认为的该类样本,有多少猜对了,猜的准确率如何)。精确度 = TP / (TP + FP),其中TP表示真阳性(将正类预测为正类数),FP表示假阳性(将负类预测为正类数->误报)。
- 优点: 适合在正类预测的错误代价较高的场景。
- 缺点: 当正类样本较少时,精准度可能会被虚高的假阳性 (FP) 混淆。
- 优点: 适合在正类预测的错误代价较高的场景。
- 召回率—查全率(Recall):实际为正的样本中被正确预测的比例(该类样本有多少被找出来,召回了多少)。召回率 = TP / (TP + FN),FN表示假阴性(将正类预测为负类数->漏报)
- 优点: 适合在漏报代价较高的场景。
- 缺点: 提高召回率可能会降低精准度,因为模型可能会预测更多的正类以减少漏报。
- 优点: 适合在漏报代价较高的场景。
- 准确率(Accuracy):表示预测正确的样本数占总样本数的比例。准确率 = (TP + TN) / (TP+ FP + TN + FN)
- 优点: 简单易懂,适合在数据集各类别分布均衡的情况下使用。
- 缺点: 在类别不平衡的数据集上可能会产生误导性结果。
- F1值:精准度和召回率的调和平均数。F1 = 2 * (精确度 * 召回率) / (精确度 + 召回率)
- 优点:综合考虑了精准度和召回率。
- 缺点: F1 值无法区分不同的错误代价,只能提供一个综合的权衡指标。
- AUC(Area Under Curve): 是 ROC 曲线下的面积,用于量化模型的整体性能。
- 优点: 提供了一个对模型性能的全局评价,不依赖于特定的阈值。
- 缺点: 和 ROC 一样,不易解释实际应用中的含义。
- PR曲线:PR曲线是根据不同的分类阈值绘制出的精确度和召回率之间的关系曲线。PR曲线下的面积被称为AUC-PR。
- 优点: 在类别不平衡的情况下,PR 曲线比 ROC 曲线更有意义,因为它专注于正类的表现。
- 缺点: 不适用于类平衡的数据集。
- 优点: 在类别不平衡的情况下,PR 曲线比 ROC 曲线更有意义,因为它专注于正类的表现。
- ROC曲线:ROC曲线是以假阳性率FP/(FP+TN)为横轴,真阳性率 TP/(TP+FN) 为纵轴,绘制出的曲线。ROC曲线下的面积被称为AUC-ROC。
- 优点: 在所有阈值上评估模型的表现,适合在类别不平衡的数据集上使用。
- 缺点: 不易解释,尤其是在实际应用场景中。
7. 什么是混淆矩阵?ROC 曲线如何绘制?相比 P-R 曲线有什么特点?
混淆矩阵也称误差矩阵,是一种用于评估分类模型准确性的工具。它通过统计分类模型将观测值归错类和归对类的个数,并将结果放在一个表中展示出来。这个表格展示了分类模型的预测结果与实际结果之间的差异,包括TP、FP、FN、TN的数量,从而可以直观地评估分类模型的性能。
ROC曲线(接收者操作特征曲线):横轴为假阳性率(FPR),纵轴为真阳性率(TPR)。面积越大(AUC值越高),模型效果越好。
P-R曲线(精准率-召回率曲线):横轴为召回率(Recall),纵轴为精准率(Precision)。更适用于不均衡数据,能更直观地反映模型在不同阈值下的表现。
区别:ROC曲线在样本不均衡时可能会误导,而P-R曲线能更好地反映正类样本的性能。
8. 如何评判模型是过拟合还是欠拟合?遇到过拟合或欠拟合时,你是如何解决?
过拟合(Overfitting):训练误差低,但验证误差高,模型在训练集上表现优异,但在新数据上表现不佳。
- 增加数据集:通过扩充训练数据减少模型对特定样本的依赖。
- 正则化:引入L1或L2正则化,抑制模型复杂度。
- 简化模型:减少模型参数或选择较简单的模型(如减少神经网络层数)。
- 早停法(Early Stopping):在验证集上监控模型表现,避免过度训练。
欠拟合(Underfitting):训练误差高,验证误差也高,模型过于简单,无法捕捉数据中的潜在模式。
- 增加模型复杂度:选择更复杂的模型,增加特征数或神经网络层数。
- 特征工程:通过增加有信息量的特征提升模型能力。
- 减少正则化力度:放松正则化项,使模型能够更好地拟合数据。
- 提高训练时间:增加训练轮数,使模型能够更好地学习。
9. 你是如何针对应用场景选择合适的模型?
- 数据规模:
- 对于大规模数据,优先考虑线性模型、随机森林、深度学习等具有较好扩展性的方法。
- 对于小规模数据,考虑使用支持向量机(SVM)、K近邻(KNN)等。
- 问题类型:
- 分类问题:逻辑回归、支持向量机、决策树、随机森林等。
- 回归问题:线性回归、岭回归、Lasso回归、神经网络等。
- 数据特征:
- 线性关系:选择线性模型,如线性回归、逻辑回归。
- 非线性关系:考虑非线性模型,如决策树、支持向量机、神经网络等。
- 解释性需求:
- 对结果解释性要求高时,选择逻辑回归、线性回归、决策树等易解释的模型。
- 对结果准确性要求高时,考虑复杂模型,如随机森林、神经网络等。
10. 如何选择模型中的超参数?有什么方法,并说说其优劣点
- 网格搜索(Grid Search):在预设的参数空间中穷举搜索最佳组合。
- 优点:全面搜索,能够找到全局最优解。
- 缺点:计算开销大,尤其是参数空间较大时。
- 随机搜索(Random Search):在参数空间中随机采样进行搜索。
- 优点:比网格搜索效率高,能节省计算资源。
- 缺点:可能错过最优参数组合。
- 贝叶斯优化(Bayesian Optimization):通过建立代理模型预测参数空间的最佳区域,逐步优化超参数。
- 优点:高效,能够在较少的实验次数中找到接近最优的解。
- 缺点:实现复杂,适用于高计算成本的模型。
- 交叉验证(Cross-Validation):结合上述搜索方法,通过交叉验证选择最优超参数。
- 优点:能有效防止过拟合,适应不同的数据集。
- 缺点:增加了计算时间。
11. 误差分析是什么?你是如何进行误差分析?
误差分析是指通过人工来检查模型预测错误的数据,来帮助你判断下一步应该怎么优化算法,来提升模型的性能。进行误差分析,需要特意找到预测错误的样本,这些样本可能在训练集或者测试集中,观察错误标记的样本,看看假阳性和假阴性,统计属于不同错误类型的错误数量。在这个过程中,可能会得到启发,归纳出新的错误类型,通过统计不同错误标记类型的百分比,可以发现哪些问题需要优先解决。
通过训练误差和测试误差来分析模型是否存在高方差、高偏差。
- 如果训练误差较高:说明模型的偏差较大,模型出现了欠拟合。
- 如果训练误差较低,而测试误差较高:说明模型的方差较大,出现了过拟合。
- 如果训练误差较低,测试误差也较低:说明模型的方差和偏差都适中,是一个比较理想的模型。
- 如果训练误差较高,且测试误差更高:说明模型的方差和偏差都较大。
12. 你是如何理解模型的偏差和方差?什么样的情况是高偏差,什么情况是高方差?
偏差(Bias):偏差是指模型预测值与真实值之间的差距,即模型在训练数据上的表现与真实情况的偏离程度。高偏差通常意味着模型过于简单,未能捕捉到数据的复杂性,导致欠拟合。当模型的表现趋于一致,且无论在训练集还是验证集上误差都很大时,通常是高偏差。
方差(Variance):方差是指模型在不同数据集上的预测结果的变化程度,即模型对训练数据中的小波动过于敏感。高方差通常意味着模型过于复杂,对训练数据中的噪声和异常值过于敏感,导致过拟合。当模型在训练集上的误差低,但在验证集或新数据上的误差大时,通常是高方差。
高偏差对应于模型的欠拟合:模型过于简单,以至于未能很好的学习训练集,从而使得训练误差过高。此时模型预测的方差较小,表示预测较稳定。但是模型预测的偏差会较大,表示预测不准确。
高方差对应于模型的过拟合:模型过于复杂,以至于将训练集的细节都学到,将训练集的一些细节当做普遍的规律,从而使得测试集误差与训练集误差相距甚远。
13. 出现高偏差或者高方差的时候你有什么优化策略?
高偏差:
- 增加模型复杂度:选择更复杂的模型,增加特征数或神经网络层数。
- 特征工程:通过增加有信息量的特征提升模型能力。
- 减少正则化力度:放松正则化项,使模型能够更好地拟合数据。
- 提高训练时间:增加训练轮数,使模型能够更好地学习。
高方差:
- 增加数据集:通过扩充训练数据减少模型对特定样本的依赖。
- 正则化:引入L1或L2正则化,抑制模型复杂度。
- 简化模型:减少模型参数或选择较简单的模型(如减少神经网络层数)。
- 早停法(Early Stopping):在验证集上监控模型表现,避免过度训练。
14. 奥卡姆剃刀定律是什么?对机器学习模型优化有何启发?举例说明
奥卡姆剃刀定律是一条哲学原则,通常表述为“如无必要,勿增实体”或“在其他条件相同的情况下,最简单的解释往往是最好的”。它提倡在解释现象时,应尽量减少假设和复杂性,优先选择最简单的解释。
启发:在机器学习中,奥卡姆剃刀定律鼓励我们选择更简单的模型,而不是更复杂的模型。这是因为:
- 避免过拟合:复杂的模型可能会过度拟合训练数据,捕捉到数据中的噪声和不相关的细节,从而在测试数据或新数据上的表现变差。简单模型则更有可能抓住数据的主要特征和趋势,具有更好的泛化能力。
- 可解释性:简单模型更容易解释和理解。对于很多实际应用,特别是那些需要人类决策和监管的领域(如医疗、金融),模型的可解释性非常重要。
- 计算效率:简单模型通常需要更少的计算资源,训练和预测的时间更短,适用于计算资源有限或需要快速决策的场景。
举例来说,如果我们使用线性回归和多项式回归来预测房价,线性模型简单直观,参数少,易于理解和实现,而多项式回归虽然可能在训练集上拟合得更好,但可能会捕捉到数据中的噪声而非潜在的数据趋势,导致在新的数据上泛化能力差。因此,根据奥卡姆剃刀定律,如果线性回归已经能够满足预测需求,我们就没有必要使用更复杂的多项式回归模型。
二、特征工程
1. 你是怎样理解“特征”?
特征是从原始数据中提取的用于训练机器学习模型的数值表示,是数据中携带有用信息的元素。特征是模型学习规律、进行预测的依据。好的特征能够显著提升模型的性能,因此特征工程在机器学习中非常重要。
2. 给定场景和问题,你如何设计特征?(特征工程方法论)
问题理解:深入理解业务场景,明确模型要解决的问题。
数据理解:分析数据的分布、类型及其与目标变量的关系。
特征构建:
- 基础特征:直接从原始数据中提取,如用户年龄、性别、浏览次数等。
- 组合特征:通过特征交互、组合生成新特征,如用户年龄×浏览次数。
- 时间特征:根据时间信息构建特征,如时间戳转换为小时、周、季节等。
- 文本特征:对文本数据进行处理,如词袋模型(Bag-of-Words)、TF-IDF、词向量等。
- 统计特征:对数值特征进行统计分析,如均值、方差、最大值、最小值等。
特征选择:通过特征重要性评估、相关性分析、降维等方法筛选出有用的特征。
特征验证:在验证集上测试新特征的效果,确保其对模型有正向提升。
3. 机器学习中开发特征的时候如何做数据探索,怎样选择有用的特征?
数据探索(EDA,Exploratory Data Analysis):
- 数据可视化:通过可视化工具(如直方图、散点图、箱线图等)了解数据的分布和特征间的关系。
- 统计分析:计算特征的均值、中位数、方差等,分析数据分布和异常点。
特征选择:
- 相关性分析:计算特征与目标变量之间的相关性,选择与目标变量关系密切的特征。
- 特征重要性:通过决策树、随机森林等模型评估特征的重要性。
- 降维:使用PCA(主成分分析)或LDA(线性判别分析)等降维方法减少特征维度,保留主要信息。
4. 你是如何做数据清洗的?举例说明
处理缺失值:
- 删除缺失值:当缺失值比例较大且不重要时,可直接删除。
- 填充缺失值:用均值、中位数、众数或插值法填充缺失值。
- 插值法:特别是时间序列数据,可以用前后值的平均值或趋势线填充。
处理异常值:
- 检测:通过箱线图、3σ原则等检测异常值。
- 处理:异常值可以被删除、替换,或用合适的方法修正。
重复数据:检查并删除重复记录,避免模型训练时产生偏差。
5. 如何发现数据中的异常值,你是如何处理?缺失值如何处理?
异常值处理:
- 发现方法:
- 箱线图(Box Plot):利用四分位数判断异常点。
- 3σ原则:对于正态分布数据,数据点偏离均值3个标准差以上的被视为异常值。
- Z-score:计算标准化后的Z分数,判断数据点的异常性。
- 处理方法:
- 删除:直接删除异常值,适用于数据集较大且异常值比例较小的情况。
- 修正:用中位数或其他合理值替换异常值。
- 变换:对异常值进行对数变换或平方根变换,使其更接近正常范围。
缺失值处理:
- 删除缺失值:适用于缺失比例较小的数据。
- 填充缺失值:
- 数值型数据:用均值、中位数、插值法填充。
- 分类型数据:用众数或“缺失”标签填充。
- 插值法:特别适用于时间序列数据,利用前后值或趋势线填充。
6. 对于数值类型数据,你会怎样处理?为什么要做归一化?归一化有哪些方法?离散化有哪些方法,离散化和归一化有哪些优缺点?
数值类型数据处理:
- 归一化(Normalization):使不同尺度的数据具有相同的范围,以提高模型训练的效率和稳定性,尤其在距离度量(如KNN)或梯度下降算法中非常重要。
- 线性函数归一化(Min-Max Scaling):将数据线性映射到[0, 1]范围。
- Z-score标准化:将数据转化为均值为0,方差为1的标准正态分布。
- 最大绝对值缩放(MaxAbs Scaling):将数据缩放到[-1, 1]范围,但保持稀疏矩阵的稀疏性。
- 离散化(Discretization):将连续变量转化为离散变量,特别是当特征和目标变量之间的关系是非线性时。
- 等宽分箱:将数据分为等宽的区间。
- 等频分箱:将数据分为频数相等的区间。
- 基于决策树的分箱:根据决策树分裂节点对数据进行分箱。
优缺点:
- 归一化:
- 优点:提高模型训练速度和稳定性,适用于距离度量敏感的模型。
- 缺点:可能丢失数据的绝对尺度信息。
- 离散化:
- 优点:能够捕捉非线性关系,简化模型的复杂性。
- 缺点:可能导致信息丢失,尤其是分箱策略不当时。
7. 标准化和归一化异同?
相同点:两者都是为了将特征数据进行缩放处理,以提升模型的训练效果。
不同点:标准化将数据转化为均值为0,标准差为1的分布,主要用于处理正态分布数据或需要保持原数据分布形状的场景,主要改变数据的分布;归一化将数据缩放到特定的范围(如[0, 1]或[-1, 1]),适用于距离度量敏感的算法或需要将特征放在同一尺度的场景,主要改变数据的范围。
8. 类别型数据你是如何处理的,比如游戏品类,地域,设备?序号编码、one-hot 编码、二进制编码都是什么?适合怎样的类别型数据?
- 序号编码(Label Encoding):将每个类别映射为一个唯一的整数。适用于有序类别(如教育水平:高中、大学、研究生)。
- One-Hot 编码:将每个类别转换为二进制向量,适合无序类别(如游戏品类、地域、设备)。例如,游戏品类“动作”、“冒险”分别编码为[1,0]和[0,1]。
- 二进制编码:将类别转换为二进制数,然后分解为多个二进制特征。适合类别数量较多的情况,可以减少维度。
9. 时间类型数据你的处理方法是什么?原因?
- 时间戳转换:将时间戳(通常是自1970年1月1日以来的秒数)转换为日期、小时、星期等特征。
- 周期性特征:使用正弦和余弦函数将周期性特征(如小时、月份)转换为数值,以保留其周期性。
- 时间差特征:计算时间差(如用户上次登录时间与当前时间的差)作为特征。
10. 你怎样理解组合特征?举个例子,并说明它和单特征有啥区别
组合特征是通过对两个或多个单独特征进行交互或组合,生成新的特征,用于捕捉不同特征间的相互作用。
例:电商场景中,用户年龄和购买商品的类别可以组合成新的特征,用于捕捉不同年龄段用户对某类商品的偏好。
区别:单特征只能反映一个维度的信息,而组合特征可以捕捉多个特征之间的复杂关系,通常能够更好地反映数据中的隐含模式。
11. 如何处理高维组合特征?比如用户 ID 和内容 ID?
哈希技巧:使用哈希函数将高维组合特征映射到低维空间。通过哈希技巧,可以将高维组合特征转化为一个或多个低维特征,从而减少特征维度。这样可以降低模型的计算复杂度,并且在一定程度上保留了原始特征的信息。
嵌入编码:使用嵌入编码(如Word2Vec、Embedding)将高维组合特征转换为低维连续向量。这种方法利用了嵌入模型的能力,将高维的离散特征转化为低维的连续特征表示。例如,可以使用经典的Word2Vec模型将用户ID和内容ID转换为固定长度的向量表示,然后将这些向量作为模型的输入。
统计特征:基于高维组合特征,提取一系列统计特征来代表其相关信息。例如,可以使用用户ID和内容ID的组合来计算用户对该内容的平均评分、观看次数、购买次数等统计信息,然后将这些统计特征作为模型的输入。
维度削减:使用降维技术(如主成分分析 PCA)将高维组合特征降低到较低的维度。这样可以减少模型的计算复杂度,并且在一定程度上保留了原始特征的信息。需要注意的是,在进行降维时,应该谨慎选择降维方法和降维后的维度,以避免信息损失过多。
12. 如何理解笛卡尔积、外积、内积?
笛卡尔积:给定两个集合,笛卡尔积是所有可能的有序对组合。常用于生成组合特征或跨产品推荐中。
外积:两个向量的外积生成一个矩阵,常用于在多维空间中捕捉特征交互。
内积:两个向量的内积生成一个标量,常用于衡量向量之间的相似度或关联性。
13. 文本数据你会如何处理?
文本清洗:去除停用词、标点符号、特殊字符等,确保文本数据干净且统一。
分词:将文本拆分为词语或短语,在中文处理中尤为重要。
词干提取和词形归并:提取单词的词干或词根,并将单词转换成其原始形式,如将"running"转换成"run"。
文本表示:将文本数据转化为模型可以处理的数值表示,如TF-IDF、Word2Vec、BERT等。
14. 文本特征表示有哪些模型?他们的优缺点都是什么?
Bag-of-Words (BoW,词袋模型):将文本转换为固定长度的向量表示,向量的每个维度代表一个词语在文本中的出现次数或者权重。优点是简单易懂,适合小规模文本;缺点是忽略了词语顺序和语义信息,容易导致维度过高。
TF-IDF:一种统计方法,用于评估词语对于一个文件集或一个语料库中的其中一份文件的重要程度。优点是考虑了词频和逆文档频率,能够凸显关键信息词语;缺点是仍然忽略了词语顺序,无法捕捉上下文信息。
Word2Vec:基于神经网络的词嵌入模型,通过学习词语的分布式表示,将每个词语映射为一个实数向量。优点是能捕捉词语之间的语义关系,生成低维稠密向量;缺点是忽略了词语的多义性,无法处理复杂的上下文。
BERT:一种双向编码器,使用了 Transformer 架构,能够捕捉词语在文本中的上下文信息。优点是双向编码器能够捕捉词语在上下文中的深层语义关系;缺点是模型复杂度高,训练和推理速度较慢。
15. 讲解 TF-IDF 原理,它有什么优点和缺点?针对它的缺点,你有什么优化思路?
TF-IDF是用来衡量词语在文档中的重要性的方法。它由词频(TF)和逆文档频率(IDF)组成:
- 词频(TF):一个词语在文档中出现的次数。
- 逆文档频率(IDF):衡量词语的普遍性。
。其中,N是文档总数,df(t) 是包含词语t的文档数量。
优点:通过TF-IDF,能够有效凸显出在某个文档中特有而不普遍的词语,提升了文本特征的质量。
缺点:忽略了词语顺序和上下文关系,无法捕捉到文本的深层语义信息;对于长文本,TF-IDF可能会因为过度强调某些高频词而导致噪声。
优化思路:
- 结合词嵌入:如将TF-IDF与Word2Vec、BERT等结合,捕捉语义信息。
- 降维处理:通过PCA等方法对TF-IDF矩阵进行降维,减少噪声。
- 改进权重:在IDF中引入文档长度等信息,平衡短文档与长文档之间的差异。
16. N-gram 算法是什么?有什么优缺点?
N-gram算法是一种用于文本分析和自然语言处理的统计方法。它是基于N个连续的词语或字符组合来建模文本的方法。N表示连续出现的词语或字符的数量,常见的有unigram(单个词语)、bigram(两个连续词语)和trigram(三个连续词语)。通过计算文本中不同N-gram的频率或概率,可以得到一个N-gram模型。
优点:能捕捉到词序信息,适用于文本分类、语言建模等任务;实现简单,易于理解和使用。
缺点:
- 数据稀疏性:随着N的增加,可能出现数据稀疏问题,难以覆盖所有可能的N-gram组合。
- 上下文局限性:仅能捕捉固定长度的局部上下文,无法处理长距离依赖关系。
17. 讲解一下 word2vec 工作原理?损失函数是什么?
Word2Vec是一种用于生成词向量的技术,通过学习词语的上下文关系,将词语映射到一个连续的向量空间中,使得语义相似的词语在向量空间中更接近,主要有两种架构:Skip-gram 和 CBOW。
- Skip-gram:给定一个词,预测其上下文词。
- CBOW:给定上下文词,预测中心词。
Word2Vec 使用的损失函数通常是负采样(Negative Sampling)或层次 Softmax,旨在最大化目标词与上下文词的相似度,同时最小化目标词与随机选择的负样本的相似度。
18. Skip-gram 和 CBOW有何异同?
相同点:两者都是 Word2Vec 的架构,均用于生成词向量,基于上下文信息进行学习。
不同点:
- Skip-gram:给定一个词,预测其上下文;适合稀疏数据,能捕捉稀有词的语义。
- CBOW:给定上下文,预测中心词;适合频繁词,训练速度较快。
19. 图像数据如何处理?有哪些常用的图像特征提取方法
处理图像数据通常包括以下步骤:预处理、特征提取和特征表示。
预处理是图像处理的第一步,目的是改善图像质量,使其更适合后续的处理。预处理可能包括:
- 灰度化:将彩色图像转换为灰度图像,减少计算量。
- 滤波:使用低通滤波器去除噪声,或使用高通滤波器突出图像中的边缘。
- 对比度调整:增强图像的对比度,使特征更明显。
特征提取是从图像中提取有用的信息,这些信息可以是颜色、纹理、形状等。以下是常用的图像特征提取方法:
- 颜色直方图:统计图像中每个颜色通道的像素分布情况,并以向量形式表示。
- 特点:简单直观,能够捕捉图像的整体颜色分布。
- 纹理特征:使用统计方法(如灰度共生矩阵、小波变换等)来描述图像中的纹理信息。
- 特点:能够捕捉到图像的细节和纹理结构。
- 边缘特征:使用边缘检测算法(如Canny边缘检测)来检测图像中的边界。
- 特点:能够捕捉到图像中的边界和轮廓。
- 角点特征:使用角点检测算法(如Harris角点检测)来检测图像中的关键点。
- 特点:能够捕捉到图像中的角点和兴趣点。
- 尺度不变特征变换:使用SIFT算法检测图像中的关键点,并提取与尺度无关的特征描述子。
- 特点:对旋转、缩放和平移具有鲁棒性。
- 主成分分析:使用PCA算法对图像进行降维,提取最重要的特征。
- 特点:能够捕捉到图像中的主要变化方向。
- 卷积神经网络(CNN):基于深度学习的方法,使用卷积神经网络自动提取图像特征。
- 特点:能够学习到图像的高级抽象特征。
特征表示将提取的特征转换为数值向量,这些向量可以被机器学习算法使用。
20. 你是怎样做特征选择的?卡方检验、信息值(IV)、VOE 都是如何计算?
特征选择是指从原始特征集合中选择出最有用的特征子集,以提高机器学习模型的性能和泛化能力。
特征选择方法:基于统计检验,如卡方检验、t检验,用于判断特征与目标变量之间的相关性。基于信息增益,如信息值(IV)、熵,用于衡量特征带来的信息增益。基于模型,如LASSO回归、决策树特征重要性,用于评估特征对模型性能的贡献。
卡方检验:卡方检验用于判断两个变量之间是否存在关联性,以此来选择相关性较高的特征。
- 计算:对于每个特征与目标变量之间的关联性,首先构建一个分组交叉表,计算实际观察频数和预期频数,然后使用卡方统计量(该行频次之和乘以该列频次之和再除以总人数)来衡量实际观察频数与预期频数之间的偏差。最后,通过计算卡方值(观测值与期望值之差的平方和除以期望值)和对应的p-value来确定特征的相关性。
- 优点:简单、直观,易于理解和实现;可以判断特征与目标变量之间是正相关还是负相关。
- 缺点:忽略了变量之间的线性关系;只能用于评估分类变量之间的关联性。
信息值(IV):衡量特征对目标变量的预测能力,IV值越高,特征越重要。
- 计算:首先将特征的不同取值进行分组,然后计算每个分组中的事件发生概率和非事件发生概率。接着,通过计算事件发生概率和非事件发生概率的对数差值(WOE),然后乘以权重(通常是事件发生概率和非事件发生概率之差),最后将所有分组的对数差值与权重相乘的结果求和,得到特征的IV值。
- 优点:可以评估分类变量的预测能力;能够处理缺失值。
- 缺点:对于连续变量的处理相对复杂;只能用于评估分类变量的相关性。
VOE(Voice of Employee):VOE是一种主观评价和关键性因素选择的特征选择方法,常用于人力资源领域。
- 计算:VOE的计算方式主要基于员工对不同特征的评分和重要性调查,通过将评分与重要性权重相乘并加总来计算特征的VOE值。
- 优点:能够考虑到人类主观评价的因素;可以捕捉到对目标变量有重要影响的特征。
- 缺点:结果可能受到不同参与者主观评价的影响;需要大量的调查和主观判断,开销较大。
21. 计算特征之间的相关性方法有哪些?有什么优缺点
皮尔逊相关系数:衡量两个连续变量之间线性关系强度和方向的常用方法,值范围[-1, 1],越接近1或-1相关性越强,表示负相关和正相关的程度。。适用于线性关系,但对异常值敏感。
斯皮尔曼相关系数:衡量两个变量之间任意关系的非参数方法,适用于连续变量和顺序变量。
(表示每一对数据点
等级之间的差值,n是数据点的数量)。对非线性关系有效,但不适用于连续数据。
三、KNN
1. KNN 建模流程是怎样的?
- 数据准备:收集并预处理数据,包括数据清洗、归一化或标准化,以保证不同特征的尺度一致。
- 选择K值:选择合适的K值,K值决定了每个预测点所考虑的最近邻居的数量。
- 距离度量选择:确定使用的距离度量(如欧氏距离、曼哈顿距离等)。
- 计算距离:对每个测试样本,计算它与所有训练样本之间的距离。
- 选择邻居:根据距离选择K个最近的邻居。
- 投票或平均:对于分类问题,KNN通过多数投票确定测试样本的类别;对于回归问题,通过取K个邻居的平均值来预测。
- 预测:根据投票或平均结果给出最终预测。
2. KNN优缺点是什么?
优点:
- 简单直观:算法原理简单,易于实现。
- 无需训练:KNN不需要显式的模型训练,直接基于数据进行预测。
- 适用性广:可以用于分类和回归任务,且对异常值和噪声具有一定的鲁棒性。
缺点:
- 计算开销大:随着数据量增大,计算距离的时间复杂度会显著增加。
- 空间开销大:需要保存所有训练样本,内存占用较大。
- 对不均衡数据敏感:KNN对类别不均衡数据的表现较差,容易被多数类数据所主导。
3. KNN适合什么样的场景和数据类型?
场景:适用于小规模数据集,尤其是当数据分布较为均匀时。常用于分类问题,如图像识别、推荐系统等。
数据类型:适合数值型、类别型和维度较低的数据,但在处理类别型数据时需谨慎选择距离度量。
4. 常用的距离衡量公式都有哪些?具体说明它们的计算流程,以及使用场景?
- 欧氏距离是计算两点间直线距离的常用方法,公式为
, 适用于连续数值型数据,计算直线距离。缺点是对尺度敏感,不同量纲的特征需要归一化;在高维空间中,距离差异变得不明显(维数灾难);计算成本随维度增加而增加。
- 曼哈顿距离:计算两点在各坐标轴上的绝对距离和,公式为
, 适用于在网格结构中移动的场景,如城市街道。缺点是它不是所有维度的度量,只考虑了相邻轴的移动;在非矩形空间中可能不是最短路径。
- 闵可夫斯基距离:是欧氏距离和曼哈顿距离的推广形式,公式为
, 当p=1时为曼哈顿距离,p=2时为欧氏距离,p值可以调节以适应不同场景。缺点是参数 p 的选择可能具有挑战性,不同的 p 值会产生不同的距离度量;在高维空间中可能不如欧氏距离直观。
- 切比雪夫距离:计算两点在各坐标轴上距离的最大值,公式为
, 适用于在二维或三维网格中寻路问题,任何方向的距离都视为相同。缺点是只考虑最大的单维度差异,可能无法准确反映整体差异;在非规则空间中可能不是最短路径。
5. 超参数 K 值过大或者过小对结果有什么影响,你是如何选择 K 值?
K 值过小模型容易过拟合,受噪声影响大。K 值过大模型可能欠拟合,忽略局部结构,导致分类不准确。
选择 K 值的方法:
- 交叉验证:通过交叉验证选择表现最佳的 K 值。
- 经验法则:通常选择 K 值为样本总数的平方根。
6. 介绍一下 KD 树?如何建树,以及如何搜索最近节点?
KD 树是一种用于对k维空间中的数据进行分割和组织的数据结构。它在很多应用中被用来进行高效的最近邻搜索。
建树过程:
- 选择一个维度(通常是循环选择各个维度)。
- 根据该维度将数据集分为两部分(通过中位数或其他方式),左子树包含小于中位数的点,右子树包含大于中位数的点。
- 递归地对每个子集重复上述过程,直到不能再划分为止。
搜索最近节点:
- 从根节点开始,递归地向下搜索
- 到达叶节点后,计算距离并更新最近邻
- 回溯时,检查其他分支是否可能包含更近的点
- 如果超球面与分割超平面相交,则搜索另一个分支
四、支持向量机
1. 简单讲解 SVM 模型原理?
支持向量机(SVM)是一种线性分类器,旨在找到最优的超平面以最大化两类数据之间的间隔(即支持向量的距离)。
SVM的核心思想是寻找一个能够最大化分类间隔的超平面。分类间隔是指离超平面最近的样本点到超平面的距离,也被称为间隔。SVM的目标是找到最大间隔的超平面,使得样本点尽可能地远离超平面,以提高分类的准确性和泛化能力。
在SVM中,可以使用不同的核函数来将非线性问题映射到高维空间中。常用的核函数有线性核、多项式核和高斯核(径向基核函数)。这样可以通过在高维空间中找到一个线性的超平面,来实现对原始空间中非线性问题的分类。
2. SVM 为什么会对缺失值敏感?实际应用时候你是如何处理?
因为SVM的训练过程中需要计算样本间的距离或相似性,而缺失值会导致距离的计算出现问题或者影响相似性的衡量。如果数据中存在缺失值,直接使用SVM模型可能会导致不准确的结果或产生错误的分类。
处理方法:
- 缺失值填充:使用均值、中位数或最邻近填充等方法补全缺失值。
- 删除样本:在缺失值比例较低的情况下,删除含缺失值的样本。
- 使用模型进行填充:用其他机器学习模型(如随机森林、K近邻)来预测缺失值,并将预测值作为填充值。
3. SVM 为什么可以分类非线性问题?
SVM 通过使用 核函数 将输入数据映射到高维空间,在高维空间中寻找线性可分的超平面。通过这种方式,SVM 可以有效处理非线性问题。
4. 常用的核函数有哪些?你是如何选择不同的核函数的?
线性核:线性核对应于原始的特征空间,它在原始特征空间中直接计算样本之间的内积,不进行维度的映射。线性核适用于线性可分的问题,并且计算速度较快。然而,对于非线性问题效果较差。
多项式核:多项式核将样本映射到更高维的特征空间中,通过多项式函数计算样本之间的相似性。多项式核可以处理一定程度的非线性问题,但对于复杂的非线性问题仍然可能不够有效。
高斯核:高斯核将样本映射到无限维的特征空间中,通过高斯函数来衡量样本之间的相似性。高斯核是SVM中最常用的核函数之一,可以有效应对复杂的非线性问题。然而,高斯核的计算复杂度较高,选择合适的核函数参数也比较困难。
选择方法:
- 数据特征:根据数据的特征和问题的性质选择合适的核函数。如果特征之间存在明显的线性关系,可以选择线性核;如果问题是非线性的,则可以考虑多项式核或高斯核。
- 计算复杂度:不同的核函数具有不同的计算复杂度。线性核的计算速度最快,而高斯核的计算复杂度较高。
- 超参数调节:不同的核函数有不同的超参数(如多项式核的阶数、高斯核的带宽等),需要通过交叉验证等方法选择合适的超参数。
5. RBF 核函数一定线性可分么?为什么
RBF核函数虽然能够将数据映射到高维空间,但这并不保证数据在高维空间中一定线性可分。线性可分与否还取决于数据本身的分布和结构。
6. SVM 属于线性模型还是非线性模型?为什么?
SVM可以是线性模型,也可以是非线性模型, 取决于核函数的选择。使用线性核函数时,是线性模型;使用非线性核函数(如RBF,多项式)时,是非线性模型。
7. 训练误差为 0 的 SVM 分类器一定存在吗?说明原因?
训练误差为0的SVM分类器不一定存在,这取决于数据集和分类问题的性质。
当数据集是线性可分且没有噪声时,SVM 可以找到一个超平面,使得所有训练样本都被正确分类,从而实现训练误差为 0。然而,这种情况在实际应用中较为少见。在现实世界的数据集中,通常会存在噪声和重叠样本,这使得完美分类几乎不可能。在这种情况下,SVM 可能无法实现训练误差为 0。为了处理噪声和重叠数据,SVM 引入了软间隔(Soft Margin)概念,允许一定程度的分类错误。这使得模型能够在不完美的情况下进行近似线性可分的分类。对于线性不可分的数据,即使使用核函数将数据映射到更高维的特征空间,仍然可能不存在完美分割数据的超平面。在这种情况下,训练误差为 0 是不可实现的。即使训练误差为 0,也不能保证模型在未见样本上的表现良好。过拟合是一个常见问题,模型可能在训练数据上表现优异,但在实际应用中缺乏泛化能力。
五、朴素贝叶斯模型
1. 讲解贝叶斯定理?
贝叶斯定理描述了在已知某一事件发生的条件下,计算另一事件发生概率的方法。其公式如下:
:事件B发生的条件下,事件A发生的概率,称为后验概率。
:事件A发生的条件下,事件B发生的概率,称为似然函数。
:事件A发生的概率,称为先验概率。
:事件B发生的概率,称为边缘概率。
2. 什么是条件概率、边缘概率、联合概率?
- 条件概率:在B发生的条件下A发生的概率,记为
- 边缘概率:某个事件独立发生的概率,记为
或
- 联合概率:A和B同时发生的概率,记为
3. 后验概率最大化的含义是什么?
后验概率最大化是指在给定观测数据的情况下,选择使得后验概率最大的参数θ。这是贝叶斯推断的核心,意味着我们选择最可能解释观测数据的模型参数。
4. 朴素贝叶斯模型如何学习的?训练过程是怎样?
朴素贝叶斯模型基于贝叶斯定理,并假设特征之间相互独立。训练过程包括以下步骤:
- 计算先验概率:根据训练数据计算每个类别的先验概率P(C)。
- 计算条件概率:对于每个特征,根据训练数据计算其在各个类别下的条件概率
。
- 应用贝叶斯定理:使用贝叶斯定理计算给定特征组合的后验概率,并选取概率最大的类别作为预测结果。
5. 你如何理解生成模型和判别模型?
生成模型和判别模型是概率模型中的两种常见类型,它们的理解可以从其对数据的建模方式入手。
生成模型是通过对数据的生成过程进行建模来学习数据的分布。它试图学习数据和标签之间的联合概率分布,即P(X, Y),其中X表示输入特征,Y表示对应的标签或类别。生成模型可以通过学习数据的潜在结构及其生成过程来生成新的数据样本,并且可以使用联合概率分布进行概率推断,包括生成样本、条件概率计算等。生成模型常见 是朴素贝叶斯模型。
判别模型则是直接对条件概率分布进行建模,即P(Y|X),它关注的是在给定输入特征X的情况下,预测对应的标签或类别Y的概率。判别模型更加关注预测和分类的任务,可以通过学习输入特征和标签之间的映射关系来进行决策和预测。判别模型通常具有更好的准确性和预测能力,并且在特定任务中常常优于生成模型。常见的判别模型包括逻辑回归、支持向量机和深度学习中的各种神经网络模型等。
6. 朴素贝叶斯模型“朴素”体现在哪里?存在什么问题?有哪些优化方向?
“朴素”体现在朴素贝叶斯假设所有特征在给定类别的条件下是相互独立的,这种假设使得朴素贝叶斯模型具有简单性和高效性,因为只需要估计每个特征的条件概率,而不需要估计整个特征组合的联合概率。
问题:
- 特征独立性假设不成立:在现实中,特征往往存在相关性,影响模型准确性。
- 数据稀疏性:当某些特征值在训练集中没有出现时,条件概率可能为零。
优化方向:
- 使用平滑技术:如拉普拉斯平滑(在每个类别的词频计数上加1,分母加类别数),解决数据稀疏问题。
- 选择特征:通过特征选择或降维技术减少特征之间的依赖性。
- 改进模型:如半朴素贝叶斯模型,允许部分特征间的依赖关系。
7. 什么是贝叶斯网络?它能解决什么问题?
贝叶斯网络是一种用于建模和推断概率关系的图模型。它使用有向无环图(DAG)来表示变量之间的条件依赖关系,并利用贝叶斯定理来描述变量之间的概率关系。在贝叶斯网络中,节点表示随机变量,边表示变量之间的依赖关系,边的方向表示依赖关系的方向性。每个节点表示一个随机变量,它依赖于其父节点,而与其非直接祖先节点是条件独立的。通过定义每个节点的条件概率表(CPT),可以描述变量之间的依赖关系和联合概率分布。
应用:
- 变量预测:根据已观测到的变量预测未观测变量的状态。
- 概率推断:给定一些观测到的变量,推断其他未观测变量的概率分布。
- 因果推理:贝叶斯网络能够帮助理解和推理变量之间的因果关系。
- 贝叶斯决策:根据已知条件和决策变量的目标,选择最佳决策。
8. 为什么说朴素贝叶斯也是线性模型而不是非线性模型呢?
朴素贝叶斯是一种线性模型,因为它通过线性函数(特征的加权和)来进行分类,尽管它在特征之间的独立性假设上进行了简化。这种特性使得朴素贝叶斯在处理高维数据时计算效率高且易于实现。朴素贝叶斯在对数概率空间中,决策函数变为特征的线性组合,,这个形式与线性分类器的决策函数相似。
六、 线性回归
1. 线性回归的基本思想是?
线性回归的基本思想是用一个线性函数来拟合输入特征x与输出变量y之间的关系,使其能最好地预测目标变量。数学表达式为。目标是调整权重
和偏置b,使预测值y与实际值之间的差距最小。
2. 什么是“广义线性模型”?
广义线性模型(GLM)是一种灵活的统计框架,它扩展了传统的线性回归模型,以适应各种不同类型的数据和概率分布。GLM 能够处理连续数据、二元数据、计数数据等多种数据类型,是统计分析中的重要工具。GLM的核心在于其能够适应响应变量Y的不同概率分布,从而为不同类型的数据提供了一种统一的建模框架。
GLM的一个关键特性是引入了“联系函数”,它将预测变量和响应变量之间的关系联系起来。这种联系函数的选择取决于响应变量的分布特性,它允许我们从线性组合中获得响应变量的合适表达形式。
GLM的基本形式可以表示为:,其中y是响应变量,
是预测变量,g()是联系函数。联系函数可以是恒等函数、对数函数、逻辑函数等,具体选择取决于数据的特性和分布。此外,GLM允许响应变量Y来自不同的分布族,如正态分布、伯努利分布、泊松分布或多项分布等。这种灵活性使得GLM能够应用于从生物统计学到金融分析的多种领域。
模型参数的估计通常采用最大似然估计方法,这是一种寻找最佳参数以最大化观测数据概率的过程。
3. 线性回归常用的损失函数有哪些?优化算法有哪些?
损失函数:均方误差(MSE)、平均绝对误差(MAE)、Huber损失
优化算法:
- 梯度下降(Gradient Descent):通过计算损失函数的梯度逐步更新参数,直到损失函数收敛到最小值。
- 随机梯度下降(SGD):每次更新只使用一个样本,适合大规模数据。
- 最小二乘法:直接求解损失函数的解析解,适用于简单线性回归。
4. 线性回归适用什么类型的问题?有哪些优缺点?
- 预测问题:线性回归可以用于预测目标变量的数值。例如,预测房屋价格、销售量等连续型变量。
- 关联分析:线性回归可以用于分析变量之间的关联关系。例如,分析广告投入与销售额之间的关系。
- 趋势分析:线性回归可以用于分析变量随时间的变化趋势。例如,分析气温随季节的变化趋势。
优点:
- 简单易懂:模型简单,易于解释和实现。
- 计算效率高:训练和预测速度快。
- 线性关系的可解释性:权重可以解释各特征对结果的影响。
缺点:
- 对异常值敏感:异常值可能对结果产生较大影响。
- 假设限制:假设特征和目标变量之间的关系是线性的,适用范围有限。
5. 请用最小二乘法推倒参数更新公式?
最小二乘法是一种常用的参数估计方法,最小二乘法通过计算观测值与预测值之间的差异,并求得其平方和的最小值,来确定最佳的拟合参数。具体而言,最小二乘法通过最小化误差平方和,将观测数据与一个线性模型相拟合,并找到使得拟合效果最好的参数值。

七、逻辑回归
1. 逻辑回归相比于线性回归有什么异同?
相同:
- 都是用于预测或建立一个连续因变量与一个或多个自变量之间的关系的统计模型。
- 都可以使用最小二乘法来估计模型参数。
区别:
- 模型形式:线性回归是一种直接预测连续数值的模型,它基于线性假设,使用直线或超平面来近似目标变量;而逻辑回归用于分类问题,它基于逻辑函数(如sigmoid函数)来将输入映射为概率值,并将概率值转化为类别标签。
- 因变量类型:线性回归用于预测连续的实数型因变量,如预测房价、销售额等;逻辑回归用于预测二分类或多分类的离散型因变量,如预测一个人是否患病、是否购买某个产品等。
- 模型输出:线性回归给出一个连续的数值作为预测结果,可以是负数、零或正数;逻辑回归给出的是一个概率值,通常在0和1之间,可以通过设定一个阈值将其转化为二分类或多分类的标签。
- 模型评估:对于线性回归,可以使用均方误差(MSE)等指标来评估模型拟合程度;对于逻辑回归,通常使用准确率、精确率、召回率等指标来评估分类性能。
2. 逻辑回归和广义线性模型有何关系?
逻辑回归是广义线性模型的一种特殊形式。广义线性模型是一种灵活的统计模型,将线性回归扩展到更广泛的应用领域,逻辑回归便是其中之一,其连接函数是逻辑函数或称为sigmoid函数,逻辑函数形式为:
在逻辑回归中,因变量是二分类或多分类的离散型变量,且用一个概率值来表示每个类别的发生概率。所以,逻辑回归使用逻辑函数将线性组合的结果映射到[0, 1]区间内的概率值,然后可以根据设定的阈值将概率转化为二分类或多分类的标签。
3. 逻辑回归如何处理多标签分类?
- 一对多:为每个类别训练一个二分类器,预测时选择概率最大的类别。
- Softmax回归(多项逻辑回归):直接扩展逻辑回归,通过Softmax函数
(
是线性预测结果的第 k 个输出)处理多类别问题。
4. 为什么逻辑回归需要进行归一化或者取对数?
- 归一化:防止特征值差异过大导致模型训练不稳定,尤其在梯度下降时,有助于更快地收敛。
- 取对数:将极值较大的特征压缩到相对小的范围,减小其对模型的影响,同时也将乘法关系转化为加法关系,简化计算;通过取对数变换,可以将非线性的关系转化为线性的关系,使得模型更容易拟合。
5. 为什么逻辑回归把特征离散化之后效果会提升?
离散化特征可以增强模型的非线性表达能力,使得逻辑回归可以处理复杂的数据模式,也可以减少数据中的噪声,提高模型的鲁棒性。
6. 类别不平衡问题你是如何处理的?什么是过采样,什么是欠采样?举例
类别不平衡:指样本中不同类别的数量差异较大,可能导致模型偏向多数类。
处理方法:
- 过采样(Oversampling):增加少数类样本的数量,如复制样本、合成新样本
- 欠采样(Undersampling):减少多数类样本的数量,如随机删除多数类样本。
举例:在一个二分类问题中,如果正类样本有100个,负类样本有1000个,可以通过过采样将正类样本增加到1000个,或者通过欠采样将负类样本减少到100个。
7. 讲解L1和L2正则,它们都有什么作用,解释为什么L1比L2更容易产生稀疏解,对于存在线性相关的一组特征,L1正则如何选择特征?
L1和L2正则化是机器学习中用于防止过拟合和提高模型泛化能力的技术。它们通过修改模型的损失函数来实现这一目的。
- L1正则化(也称为L1范数或Lasso回归)通过在损失函数中添加参数的绝对值之和,惩罚模型的复杂度。
。L1正则化鼓励模型参数稀疏化,即将一些特征的权重置为0,从而使得模型可以自动选择最重要的特征进行预测。
- L2正则化(也称为L2范数或岭回归)通过在损失函数中添加参数的平方和,惩罚模型的复杂度。
。L2正则化倾向于使所有特征的权重尽量都保留在模型中,但通过对高权重进行衰减,减少过拟合的风险。
L1正则化之所以能够产生稀疏解(在模型参数向量中,大部分元素为0的解),是因为L1正则的惩罚项在零点处不光滑,容易将参数直接压缩到零。
对于存在线性相关的一组特征,L1正则化可能会选择其中一个特征并将其权重置为较大值,将其他具有相似影响的特征的权重置为0。这是因为L1范数的几何形状是棱角状的,容易遇到向量空间的尖点,从而选择其中一个特征。这种特性使得L1正则化在特征选择和模型解释方面具有优势。
8. 逻辑回归为什么用交叉熵作为损失函数?使用交叉熵作为损失函数,梯度下降作为优化方法,推倒参数更新公式
逻辑回归使用交叉熵作为损失函数是由于其在最大似然估计下的合理性。交叉熵损失函数能够有效度量预测概率与实际标签之间的差异,特别适用于分类问题。

八、决策树
1. 讲解完成的决策树的建树过程
决策树的建树过程可以分为两个主要步骤:特征选择和树的生成。
特征选择:在决策树的建树过程中,选择最佳的特征来划分数据集是非常重要的。常用的特征选择方法有信息增益(Information Gain)、增益率(Gain Ratio)、基尼系数(Gini Index)等。这些方法都是通过计算特征的不纯度或分裂后的增益来评估特征的重要性。选择具有最大增益或最小不纯度的特征作为划分标准。
树的生成:树的生成是一个递归的过程。通过选定的划分特征,将当前节点的数据集划分成更小的子集。对每个子集,重复上述步骤,继续选择最佳的特征并划分数据,直到满足某个终止条件,例如数据集已完全划分,或数据集中的样本属于同一类别。在每个节点上,根据划分后的子集创建一个子节点,并将数据集分配给该子节点。
2. 你是如何理解熵?从数学原理上解释熵公式可以作为信息不确定性的度量?
熵是信息论中的概念,用来度量随机变量的不确定性或信息量。数学上,熵的定义为:
熵越大,表示随机变量的不确定性越高,信息越混乱;熵越小,表示系统的确定性越强,信息越集中。熵的公式将概率与信息量关联起来,是衡量系统不确定性的一种自然度量方式。
3. 联合熵、条件熵、KL 散度、信息增益、信息增益比、gini 系数都是什么?如何计算?
联合熵(Joint Entropy):两个变量X和Y的联合熵是两者的联合分布的熵,反映了两个变量的联合不确定性。
条件熵(Conditional Entropy):在已知X的条件下,Y的条件熵衡量的是Y在X给定时的不确定性。
KL散度:衡量两个概率分布P和Q之间的差异。
信息增益(Information Gain):通过某一特征将数据集分裂后,信息熵的减少量。越大越好
信息增益比(Information Gain Ratio):信息增益与属性熵之比,用于解决信息增益偏向取值较多的特征的问题,可以对特征取值较多的情况进行惩罚,用来衡量分裂属性的有效性。
基尼系数(Gini Index):衡量数据集的不纯度,值越小表示数据集越纯。
4. 常用的决策树有哪些?ID3、C4.5、CART 有啥异同?
ID3:使用信息增益作为特征选择的准则,根据特征的信息增益来划分数据,目标是构建出信息增益最大的决策树。ID3只能处理离散特征,对于连续特征需要进行离散化处理, 倾向于选择取值多的特征。
C4.5:ID3的改进版本,使用信息增益比选择特征,通过对信息增益进行归一化来解决特征取值较多时的偏好问题。C4.5可以处理连续特征,对于连续特征会先进行离散化处理。
CART:CART可以同时处理分类和回归问题。在分类问题中,CART使用基尼系数作为特征选择的准则,目标是构建出基尼系数最小的决策树。在回归问题中,CART使用平方误差最小化作为特征选择的准则,目标是构建出平方误差最小的决策树。CART也可以处理连续特征,通过尝试所有可能的划分点选择最优划分。
5. 决策树如何防止过拟合?前剪枝和后剪枝过程是怎样的?剪枝条件都是什么
决策树可以通过剪枝(pruning)来防止过拟合,减少模型在训练数据上的错误率。
前剪枝(Pre-Pruning):在构建决策树的过程中,在判断是否继续分裂某个节点之前,先进行一定的判断和限制,以防止过度拟合。前剪枝的剪枝条件通常包括以下几个:
- 最大深度限制:限制决策树的最大深度,避免过于复杂的树结构。
- 叶子节点样本数限制:限制叶子节点上的样本数,如果样本数低于设定值,停止分裂。
- 不纯度下降限制:限制节点划分后的不纯度下降值,如果下降值低于设定阈值,停止分裂。
后剪枝(Post-Pruning):先构造一棵完整的决策树,然后通过剪枝来进行模型的简化。后剪枝的剪枝条件通常使用基于验证集的损失函数进行评估,主要包括以下两个步骤:
- 自底向上剪枝:剪枝过程中需要计算剪枝后的决策树在验证集上的性能表现,如果剪枝后性能没有显著下降,就保留剪枝后的树。
- 剪枝终止条件:剪枝过程可以通过交叉验证确定终止条件。通常会将数据集划分为训练集和验证集,在验证集上评估剪枝后的模型性能,如果性能没有显著提升,就停止剪枝。
九、随机森林(RF)
1. 介绍 RF 原理和思想
RF(Random Forest)是一种集成学习(Ensemble Learning)方法,由多个决策树构成的分类器或回归器组成。 RF 的核心思想包括:
- 随机抽样: 从训练数据集中有放回地随机抽样,生成多个不同的子样本集。
- 随机特征选择:在构建每棵决策树时,并不是使用全部的特征进行划分,而是随机选择一部分特征进行决策,增强了模型的多样性和稳定性。
- 决策树集成:RF中的每棵决策树都是基于不同的训练子集和随机特征选择生成的。通过集成所有的决策树,将每棵树的预测结果结合起来,从而得到更准确、鲁棒性更强的预测。
- 投票表决: 分类任务通过多数投票确定最终分类结果,回归任务通过平均决策树的输出值作为预测结果。
2. RF 是如何处理缺失值?(两种)
插补处理:在建树之前对数据中的缺失值进行插补,如用均值或中位数填补。
分裂节点处理:在决策树分裂节点时,RF 可以根据现有数据进行分裂,保留缺失值对应的样本,并让它们参与后续的分裂,将该样本同时考虑在左子树和右子树中,从而处理数据中的缺失。
3. RF 如何衡量特征重要度?
在RF中,特征重要度是衡量每个特征对模型性能的贡献程度的一种指标。常用的衡量特征重要度的方法有两种:
基尼重要度:基尼重要度是通过计算每个特征在每个决策树中的相对重要性,并求平均值来得到的。对于每个特征,统计它在所有树中用于分裂节点时基尼指数的总减少量。将每个特征的总减少量求平均,得到该特征的基尼重要度。特征使用次数越多,并且每次划分能够显著地减少不确定性,那么该特征的基尼重要度就越高。
平均不纯度减少:计算每个特征在树中分裂时带来的纯度提升(如Gini系数或信息增益),并对所有树的结果进行平均。特征的平均不纯度减少越高,说明该特征对于划分数据的重要性越大。
4. RF“随机”主要体现在哪里?
- 随机样本选择(Bagging):从训练数据集中随机抽样(有放回),生成不同的子样本集。
- 随机特征选择:在每个节点分裂时,随机选择部分特征(无放回)而非全部特征用于构建决策树。
5. RF 有哪些优点和局限性?
优点:
- 高准确性:通过集成多棵决策树,减少单一决策树的偏差和方差。
- 防止过拟合:随机选择样本和特征,使得模型的鲁棒性较强,不容易过拟合。
- 特征重要性评估:RF 可以有效地衡量特征的重要性。
- 处理大规模数据:可以处理高维数据且对缺失值具有鲁棒性。
局限性:
- 训练时间较长:由于要训练多棵决策树,训练时间和资源消耗较大。
- 模型复杂性高:难以解释每个预测的细节,不如单棵决策树那样易于解释。
- 可解释性差:随机性因素使得模型的结果具有一定的不确定性,相较于单棵决策树,可解释性较差。
6. 为什么多个弱分类器组合效果会比单个要好?如何组合弱分类器可以获得更好的结果?原因是什么?
弱分类器通常指那些单独使用时只有相对较低预测准确率的模型。
集成学习可以通过对多个分类器的综合意见来减少分类误差。多个弱分类器的错误可以互相抵消,减少整体错误率。不同的弱分类器擅长处理不同的数据模式,组合后可以提高模型的泛化能力。
组合方法:
- Bagging:通过不同数据子集训练多个模型,并通过投票(分类)或平均(回归)结果组合。
- Boosting:通过迭代调整样本权重,训练多个模型, 每个新模型关注前一个模型的错误,并将错误率较低的模型权重提高。
- Stacking:使用另一个模型组合多个基模型的预测。
7. Bagging 的思想是什么?它是降低偏差还是方差,为什么?
Bagging的思想是通过对训练集进行有放回的采样,产生多个子样本,然后分别用这些子样本训练多个独立的分类器,最终通过对这些分类器的结果进行投票或平均,得到最终的预测结果。
Bagging 主要降低方差,因为它通过多个模型的平均来减少由于数据波动引起的预测不稳定性,而不会显著改变模型的偏差。
8. 可否将 RF 的基分类模型由决策树改成线性模型或者 KNN?为什么?
可以,但效果可能不如决策树。RF 的设计思想是基于决策树的随机性和多样性,线性模型或 KNN 可能无法充分利用这种随机性:
- 线性模型:由于线性模型本身的线性假设和对数据结构的敏感性,可能难以在随机采样和随机特征选择的情况下表现良好。
- KNN:KNN 是一种基于距离的模型,随机采样可能会破坏样本的空间分布,导致分类效果下降。
十、 k-means
1. 简述 k-means 建模过程?
- 选择K值:确定聚类的数量K。
- 初始化中心点:随机选择K个点作为初始聚类中心。
- 分配簇:将每个样本分配到距离(通常使用欧氏距离)其最近的聚类中心。
- 更新中心点:计算每个簇的均值,并将其作为新的聚类中心。
- 重复步骤3和4:直到聚类中心不再变化或达到最大迭代次数。
2. k-means 损失函数是如何定义?
k-means 的损失函数定义为所有样本点到其所属聚类中心的欧氏距离的平方和,公式如下:。其中,
表示第i个簇,
是该簇的中心。
3. 你是如何选择初始类族的中心点?
随机选择:随机从数据集中选择k个点作为初始中心。
k-means++:随机选择一个数据点作为第一个聚类中心,然后通过计算每个数据点与已有聚类中心的最短距离的累积和,选择下一个聚类中心,以提高聚类效果和收敛速度。
4. 如何提升 k-means 效率?
- 使用 k-means++ 初始化:通过合理选择初始中心,减少迭代次数。
- 使用 Mini-Batch k-means:对大规模数据,使用小批量数据进行更新,减少计算量。
- 并行化计算:利用并行计算技术提升效率。
5. k-means 对异常值是否敏感?为什么?
k-means对异常值敏感。k-means通过均值来更新聚类中心,而均值对极端值(异常值)非常敏感。异常值会导致聚类中心偏移,从而影响聚类效果。
6. 如何评估聚类效果?
- SSE(Sum of Squared Errors):计算所有样本到其所属聚类中心的距离平方和,越小表示聚类效果越好。
- 轮廓系数(Silhouette Coefficient):结合聚类内紧凑度和聚类间隔离度,值越大越好。
。
是样本点
与其同一聚类中所有其他样本点的平均距离;
是样本点
与最近聚类中所有样本点的平均距离。
- CH指标(Calinski-Harabasz Index):基于簇内方差和簇间方差比值,值越大越好。
。SSB 是簇间平方和,即所有聚类中心点和与数据集中心点的差的平方和;SSW 是簇内平方和,即所有样本点与各自聚类中心点差的平方和;N是样本总数;k是聚类的数量。
- DB指数(Davies-Bouldin Index):度量簇的可分性,即聚类内部的紧密度和聚类之间的距离,值越小越好。
。
是第i个聚类的半径,即聚类内样本点到聚类中心的平均距离。
是第i个聚类中心和第j个聚类中心之间的距离。
7. 超参数类的个数 k 如何选取?
经验法则:根据经验选择k的值。
肘部法则(Elbow Method):通过观察簇内误差平方和(SSE)与不同k值对应的变化趋势,选择一个使得SSE下降幅度明显减缓的k值。
轮廓系数(Silhouette Coefficient):计算不同k值下每个样本的轮廓系数,再取平均值。轮廓系数综合考虑了样本的类内相似度和类间相异度,数值范围在 -1 到 1 之间,接近1表示样本与同簇中的其他样本相似度高,与其他簇中的样本相似度低,反之亦然。选择具有最大平均轮廓系数的k值。
8. k-means 有哪些优缺点?是否有了解过改进的模型,举例说明?
优点:简单易实现,计算速度快;对高维数据处理较好;可解释性好
缺点:对异常值敏感;对初始中心选择敏感,可能陷入局部最优;需要预先指定K值
改进模型:
- k-means++:改进初始中心选择方法,提高收敛速度和效果。
- Mini-Batch k-means:适用于大规模数据,通过小批量更新提高效率。
十一、 PCA 降维
1. 为什么要对数据进行降维?它能解决什么问题?
降维 是通过减少数据的特征数量,将高维数据转换为低维,来保留数据的重要信息。它可以解决以下问题:
- 降低计算复杂度:减少数据维度,降低算法的计算开销,加快模型的训练和预测速度。
- 缓解维度灾难:高维数据往往稀疏,降维可以减少数据的稀疏性,提高模型的泛化能力。
- 去除冗余信息:减少不相关或相关性高的特征,提高模型的性能。
- 可视化:降维后可以将高维数据映射到低维空间,有助于数据的可视化和解释。
2. 你是如何理解维度灾难?
维度灾难是指在高维空间中,随着维度的增加,数据密度变得非常稀疏,导致在高维空间中进行数据分析和处理变得困难和费时。主要表现为:
- 计算复杂度急剧增加:高维空间中,计算距离、寻找最近邻、以及概率估计等操作的复杂度大幅增加。
- 样本稀疏:在高维空间中,样本点分布变得稀疏,导致模型难以学习到有效的模式。
- 过拟合风险增加:在高维数据下,模型容易记住训练数据的噪声,从而过拟合,降低泛化性能。
为了应对维度灾难,可以考虑以下策略:
- 特征选择:根据特征的相关性和重要性,选择最具代表性的特征,减少数据的维度,以保留最重要的信息。
- 特征提取:使用降维技术如主成分分析(PCA)或线性判别分析(LDA),将高维数据转换为低维空间,保留尽可能多的信息。
- 数据聚类:通过聚类算法将数据点组合成更高级别的数据组,减少数据点的个数,以减少维度的影响。
- 数据采样:当训练数据集受到维度灾难的影响时,可以使用一些采样方法如分层抽样或聚类抽样来减少数据集的维度。
3. PCA 主成分分析思想是什么?如何定义主成分?
主成分分析(PCA) 是一种降维技术,通过线性变换将原始数据投影到新的坐标系中,使得新坐标系的各个轴(即主成分)互相正交,并且按数据的方差大小排序。PCA 通过选择方差最大的几个主成分,保留数据的主要信息,实现降维。 主成分 是原始数据线性变换后的新变量,这些变量是按方差从大到小排序的正交向量。第一个主成分是方差最大的方向,第二个主成分是正交于第一个主成分且方差次大的方向,以此类推。 通常,可以通过计算数据的特征向量和特征值来找到主成分。特征向量表示了主成分的方向,特征值表示了主成分的方差。具体而言,主成分的定义是在降维后的坐标系中,数据在该方向上的投影方差最大。
4. 如何设计目标函数使得降维达到提取主成分的目的?
方差最大化:通过最大化投影后数据的方差,确保在降维后尽可能地保留原始数据的总体特征。
保持数据的结构和相关性:通过考虑协方差矩阵或相关矩阵,设计目标函数以最小化投影后数据间的相关性损失。
分类或聚类目标:如果我们的目标是在降维后更好地进行分类或聚类,可以设计目标函数以最大化类间差异和最小化类内差异。这样可以使得投影后的数据在不同类别或簇之间更加分离。

5. PCA 有哪些局限性?如何优化?
局限性:
- 线性假设:PCA 假设数据是线性可分的,对于非线性数据效果较差。
- 方差衡量:PCA 只关注方差大小,忽略了可能更重要的低方差信息。
- 鲁棒性差:对异常值敏感,异常值可能对主成分有较大影响。
优化方法:
- 核PCA:通过引入核函数,使得 PCA 能够处理非线性数据。
- 稀疏PCA:在主成分的基础上加入稀疏性约束(在优化目标中加入L1范数),增强模型的解释性。
- 稳健PCA:对异常值进行处理,提升模型的鲁棒性。
6. 线性判别分析和主成分分析在原理上有何异同?在目标函数上有何区别和联系?
异同点:
- 线性判别分析(LDA) 是一种有监督的降维方法,旨在最大化类间方差与类内方差的比值,从而使得不同类的样本在降维后尽可能分开。主要用于分类
- 主成分分析(PCA) 是一种无监督的降维方法,旨在最大化投影后的方差,不考虑类别信息。主要用于降维
目标函数区别:
- PCA目标函数:最大化数据在投影方向上的方差,
- LDA目标函数:最大化类间散布矩阵和类内散布矩阵的比值,
联系:
- 两者都是线性降维方法,但 LDA 关注的是类别区分,PCA 关注的是数据整体方差
- PCA可以看作是LDA的一种特殊情况,即当类别信息无法得到利用时,LDA退化为PCA
更多推荐



所有评论(0)