数据分析基础知识——机器学习(3)
1. 线性回归普通最小二乘法运用的经典基本假设有哪些?
在线性回归中,普通最小二乘法是一种常用的参数估计方法,用于拟合线性模型。其经典基本假设包括:
①线性关系假设:假设自变量和因变量之间存在线性关系。
②独立性假设:假设每个观测值之间是相互独立的。
③常态性假设:假设误差项服从正态分布。这是为了进行统计推断和构造置信区间、假设检验等。
④同方差性假设:也称为方差齐性假设,假设误差项具有恒定的方差。
⑤无多重共线性假设:假设在自变量之间不存在严重的多重共线性。
2.多重共线性是什么?如何解决多重共线性问题。
多重共线性是指在回归分析中,自变量之间存在高度相关性,导致模型中的自变量不独立,从而影响回归系数的稳定性和解释性。解决多重共线性问题的方法包括:
①特征选择:选择对因变量具有较高解释性的自变量。
②岭回归/Lasso回归等正则化方法:通过在损失函数加入正则项来限制回归系数大小,从而减少多重共线性的影响。
③主成分分析降维:将原始的高度相关的自变量转换为不相关的主成分,从而减少多重共线性的影响。
3.什么是异方差性?如何克服异方差性?
异方差性指回归分析中,误差项的方差不恒定,可能会导致回归模型的参数估计不准确,导致标准误差、置信区间和假设检验都变得不可靠。克服异方差性的方法包括:
①加权最小二乘(WLS):赋予不同观测点不同的权重,以减少异方差的影响。权重通常是与方差成反比的函数。
②稳健标准误差:一些统计软件提供了计算稳健标准误差的方法,这些标准误差对异方差不敏感。
③数据转换:通过数学变换,可以减小异方差的影响。例如对数变换或Box-Cox变换。
4.什么是内生变量问题?如何解决?
内生变量问题指自变量与误差项存在相关性,导致回归系数估计的不准确性。
解决方法如下:
①工具变量法:寻找与内生变量相关但与误差项无关的外部变量作为工具变量。
②差分法:基于时间或空间维度的差异,减少内生性问题的影响。
③前向因果检验:通过检验因变量对自变量的影响是否存在,来判断是否存在反向因果关系,从而避免内生性问题。
④固定效应模型或随机效应模型,特别是在面板数据分析中。
5.简述有监督学习和无监督学习的差异。
有监督学习和无监督学习是机器学习中两种基本的学习范式,它们在处理数据和解决问题的方式上存在明显差异:(主要从定义、任务、训练过程三方面分析)
①有监督学习:是指从已标记的训练数据中学习模型,然后将模型应用于未标记的数据进行预测。每个训练样本都有对应的输入和标签,模型的目标是学习输入和标签之间的映射关系。有监督学习主要用于分类和回归任务。在分类任务中,模型预测输入属于哪个类别。在回归任务中,模型预测一个连续值输出。在训练过程中,算法通过最小化预测值和实际标签之间的误差来调整模型参数。常用的算法包括决策树、支持向量机、神经网络、线性回归等。
②无监督学习:是指从未标记的训练数据中寻找模式和结构,而非事先的标签信息。模型通过发现数据内在的关系和相似性来进行学习。无监督学习的主要任务包括聚类、降维、异常检测等。在聚类中,算法试图将相似的样本分组到一起。在降维中,算法试图减少数据的维度,保留重要信息的同时减少噪声。无监督的训练过程更加自由,通常不涉及预测值与标签的比较。常用方法包括K均值聚类、主成分分析等等。
6.常用的有监督学习的基础算法有哪些?
①线性回归:用于建立线性关系模型,预测连续值输出。通过最小化预测值与实际值之间的误差平方和来训练模型。
②逻辑回归:用于分类任务,将输入特征映射到一个概率输出,常用于二分类问题。
③决策树:通过一系列的分割条件将数据分成不同的类别或值,适用于分类和回归任务。可以形成树状结构,易于解释。
④支持向量机:寻找一个最优的超平面来讲不同类别的数据分隔开,适用于分类和回归。
⑤朴素贝叶斯:用于分类,基于贝叶斯定理,假设各个特征之间是独立的。
⑥K近邻算法:根据输入数据和训练数据之间的距离,找出K个最近的邻居来进行分类或回归。
⑦随机森林:由多个决策树组成,通过集成多个树的结果来提高预测准确性。
⑧梯度提升树:通过迭代的方式逐步提升模型的准确性,将多个弱分类器组合成强分类器。
⑨人工神经网络:模仿人脑的神经网络结构,适用于复杂的非线性模型。
这些基础算法在不同类型的问题和数据集上都有应用,每种算法都有其特定的优势和限制。要具体问题具体分析,尝试多种算法进行比较是一个好的做法。
7.简述一下参数模型和非参数模型的区别。
参数模型和非参数模型是机器学习中两种不同的建模方法,它们在对数据的假设和处理方式上存在明显差异:
①参数模型:假设模型有固定量的参数,例如线性回归和逻辑回归。参数模型在训练时需要通过最大化似然函数或最小化损失函数估计这些参数。参数模型通常更简单,易于解释,但在面对复杂的数据时可能存在欠拟合问题。
②非参数模型:没有固定参数数量的假设,如决策树和KNN。非参数模型的复杂度随着数据量的增加而增加,因此能更好的捕捉复杂的数据结构。但非参数模型可能存在过拟合问题,且计算成本较高。
8.逻辑回归详解:
①逻辑回归模型虽然包含“回归”二字,但它事实上是一个分类模型,主要用于处理二分类问题。
②用一句话概述:它是一种用于解决二分类问题的有监督学习算法,通过对线性回归输出进行sigmoid函数映射来预测某个样本属于某个类的概率。
③python实现:
from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score,confusion_matrix,classification_report # 准备数据:X,y --Numpy or Dataframe # 划分数据集 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2) # 建模 model=LogisticRegression() model.fit(X_train,y_train) # 预测 y_pred = model.predict(X_test) acc = accuracy_score(y_test,y_pred) report = classification_report(y_test,y_pred)
9.感知机模型和SVM模型的差别:
感知机模型和SVM模型都是用于解决分类问题的有监督学习方法,但它们在算法思想、决策边界和训练测量的选择上存在一些差别:
①算法思想:感知机模型基于神经网络的思想,它通过不断调整权重,使误分类的样本逐步被正确分类。支持向量机是一种更加复杂且强大的分类算法,基于寻找能够使两个类别的样本间隔最大化的超平面。
②决策边界:感知机在高维空间中,其决策边界也是一个超平面,不过它不关心决策边界的宽度。SVM要使得超平面到样本点的间隔最大。
③训练策略:感知机使用随机梯度下降算法进行训练,而SVM使用凸优化算法进行训练,寻找最大间隔超平面的参数。
④处理问题能力:感知机模型对线性可分数据有效,对于非线性可分数据无法收敛;而SVM可以通过核技巧解决非线性可分问题,通常具有更好的泛化性能。
python实现
# 感知机模型X,y ... # pre-defined X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2) #建立模型 from sklearn.linear_model import Perceptron perceptron_model = Perceptron(eta=0.1,max_iter=1000) perceptron_model.fit(X_yrain,y_train) y_pred = perceptron_model.predict(X_test) acc = accuracy_score(y_test,y_pred) report = classification_report(y_test,y_pred) # SVM from sklearn.svm import SVC svm_model = SVC(kernel='linear') # linear:线性核;rbf:高斯核函数 svm_model.fit(X_train,y_train)...
10. 决策树模型的优缺点?
决策树是一种基于树形结构的分类和回归模型,用于对数据进行预测和决策。决策树模型基于一系列的决策规则来将数据划分成不同的类别或预测一个连续值。每个决策规则对应树中的一个节点,而每个节点都有相应的条件和分支,最终导致一个叶节点,叶节点表示模型的预测结果。
①决策树的优点:
a.易于理解和解释,决策过程非常直观。
b.决策树不要对数据进行预处理。
c.能够处理数值型和类别型特征。
d.决策树适用于多分类问题。
②决策树的缺点:
a.容易产生过拟合问题,尤其是在复杂的决策树结构中。
b.对于某些类型的问题,决策树可能不稳定,即小的数据变化可能导致完全不同的树结构。
c.优化决策树可能是一个NP难问题,因此实际应用中使用的是启发式算法,如贪婪算法。
11.决策树算法计算信息增益的衡量标准有哪些?
决策树算法在特征选择时通常会使用一些衡量标准来计算不同特征的重要性,最常见的衡量标准如下:
①信息增益:信息增益是决策树中最常用的特征选择标准。它基于信息熵的概念,通过计算划分前后信息熵的减少来衡量特征的重要性。信息增益越大,表示使用该特征划分数据可能获得更多的信息量。
②基尼系数:基尼系数是另一种常用的特征选择标准。它衡量在随机选择一个样本的情况下错误分类的概率。基尼系数越小,表示划分后各个子集的类别越纯净。
12.决策树ID3,C4.5,CART三种算法之间有什么区别?
决策树算法中的ID3、C4.5和CART都是用来构建决策树的经典算法,它们在构建过程、特征选择、树的类型等方面存在一些区别:
①ID3:使用信息增益作为特征选择标准。它只能处理类别型特征、不支持连续型特征;
②C4.5:对ID3进行了改进,使用信息增益比作为特征选择标准,可以处理连续型特征。
③CART:使用基尼系数作为特征选择标准。通过选择分类树和回归树。
13.预剪枝和剪枝有什么区别?
预剪枝是在构建决策树的过程中,在划分节点之前进行的剪枝操作。它意味着在决策树的构建过程中,判断是否应该继续分裂节点的决策是基于预定义的一些规则或条件。
而剪枝是在构建完整的决策树后,对已有的树进行修剪,去除一些分支或子树,以减小模型的复杂度,避免过拟合。
14.决策树算法如何降低过拟合的程度?
①剪枝:包括预剪枝和剪枝,通过减小树的深度或去除部分子树来降低模型的复杂度。
②设置停止条件:例如叶节点上所需最小的样本数或最大树深度。
③随机森林:通过集成多个决策树模型,平均预测结果以降低过拟合。
15.决策树算法在sklearn当中有哪些关键的超参数?
sklearn中决策树的关键超参数包括:
①citerion:分裂标准,'gini'或'entropy';
②max_depth:树的最大深度;
③min_samples_split:分裂内部节点所需的最小样本数;
④min_samples_leaf:叶节点上所需的最小样本数;
⑤max_features:在寻找最佳分裂时考虑的最大特征数量;
⑥max_leaf_nodes:最大叶节点数量。
python实现:
from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score X,y # predefined X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3) # 建立模型 clf = DecisionTreeClassifier() clf.fit(X_train,y_train) p_pred = clf.predict(X_test) acc = accuracy_score(y_test,y_pred)
16.什么是超参数?
超参数是机器学习算法中需要在模型训练之前手动设置的参数,超参数的选择可以影响模型的性能和训练过程,因此在实际应用中需要经过试验和调整。
一些常见的超参数包括:
①学习率:用于控制梯度下降等优化算法中参数更新的步幅大小。
②正则化参数:用于控制正则化项在损失函数中的权重,以防止过拟合。
③批量大小:在训练神经网络时,每次迭代中使用的训练样本数量。
④迭代次数:训练算法执行的迭代次数。
⑤决策树深度:决定决策树的最大层数。
...很多
17. KNN算法的超参数有哪些?
k近邻算法是一种常见的监督学习算法,用于分类和回归。基于以下思想:与某个样本最相似的k个邻居的类别或值可以用于预测该样本的类别或值。KNN算法没有显式地学习模型,而是根据训练数据集中的实例进行决策。
①K值:KNN算法中的K表示要考虑的最近邻居数量。选择合适的K值对于模型的性能至关重要,过小的K值可能导致噪声影响,过大的K值可能导致模型过于平滑。
②距离度量:KNN使用距离度量样本之间的相似性,常见的距离度量包括欧几里得距离、曼哈顿距离等等。(闵可夫斯基距离是前两个距离的一般形式,闵可夫斯基距离的p如果等于1就是曼哈顿距离,p如果等于2就是欧几里得距离)
③权重:在计算最近邻居时,可以为不同的邻居分配不同的权重。常见的权重包括uniform(每个邻居权重相等)或distance(权重与距离成反比)。
python实现:
from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score X,y ... # predefined X_train,X_test,y_train,y_test = train_test_Split(X,y,test_size=0.2) # 建立模型 clf = KNeighborClassifier(n_neighbors=3) # 还有参数weights:权重,值有uniform,distance;metric:距离度量,Minkowski,manhatten,euclidean clf.fit(X,y) y_pred = clf.predict(X,y) acc = accuracy_score(y_test,y_pred)
18.bagging和boosting的区别是什么?
bagging和boosting都是集成学习方法,但它们的核心区别在于样本的处理和模型的训练方式。
①bagging:有放回地从原始数据集中随机抽取创建多个子样本。每个子样本独立地使用相同的基模型进行训练,最后将预测结果进行平均或投票。随机森林是典型的bagging方法。bagging的目标是减小模型的方差,提高稳定性。
②Boosting:使用权重来调整训练样本的重要性,每次迭代都会关注之前错误分类的样本。在每次迭代中,一个弱学习器会被训练,然后根据其性能来调整样本权重。这使得模型逐步集中于错误分类的样本,提升整体性能。
19.介绍一下常见的集成算法。
①bagging方法:随机森林
随机森林使用决策树作为基模型,每个决策树都是弱学习器,通过组合它们的结果,可以获得强大的整体预测能力。随机森林引入了两种随机性:样本随机性和特征随机性。样本随机性体现在:每棵决策树有放回地随机选择样本进行训练,即boostrap sampling;特征随机性体现在:每棵决策树在节点分裂过程中,随机选择一部分特征。
②boosting方法:AdaBoost , GBDT , XGBoost , LightGBM
AdaBoost是boosting方法中的经典代表,最早的版本之一。每次迭代,它会为错误分类的样本分配更高的权重,从而关注模型之前错误分类的地方。每个弱学习器的权重由其准确性决定,越准确的学习器权重越高。但它可能容易受到噪声样本的影响,对异常值敏感。
GBDT也是boosting算法的一种,它采用梯度下降的方式来调整每个弱学习器的权重。GBDT通常使用决策树作为基础学习器,可以更好地处理非线性关系。它对异常值和噪声数据处理较为稳健。
XGBoost是GBDT的扩展,它通过更精细的正则化、特征重要性评估和并行计算等技术来提高性能。它使用二阶泰勒展开来近似损失函数,提高训练效率。此外,它有内置的交叉验证和缺失值处理机制,在大规模数据集上具有很好的性能和可扩展性。
LightGBM是另一个GBDT的扩展,专注于更轻量级和更快速的训练。使用基于直方图的算法来加速特征分裂和寻找最佳分裂点。对于大规模数据集和高维数据集具有出色的性能,适用于分布式计算。它可以处理类别特征,不需要进行显式的特征转换。
③stacking:它是一种更高级的集成方法,结合多种不同类型的基础学习器,通过训练一个元学习器来组合它们的预测结果。基础学习器的预测结果称为元学习器的输入,从而生成最终的预测结果。
④voting:投票法是一种简单的集成方法,它根据多个基础学习器的预测结果来进行投票,最终选择获得最多投票的类别作为预测结果。可以分为硬投票(每个基础学习器都投一票)和软投票(基于预测的概率进行加权投票)。
20.集成学习相比普通基础算法的优势体现在哪里?
集成学习相对于单一的基础算法具有多方面的优势,这些优势使得集成学习在许多问题中能够提供更好的性能和泛化能力。其优势体现在以下方面:
①降低过拟合风险:集成学习通过结合多个学习器的预测结果,可以减少单一模型的过拟合。
②提高预测性能:可以将多个弱学习器的预测结果综合起来,从而形成一个更强大的整体模型。
③减少偏差和方差:Bagging通过平均多个学习器的结果来降低方差,而Boosting通过关注错误分类的样本来减小偏差。
④结合不同算法:集成学习允许将不同类型的基础算法结合在一起,从而充分利用它们的优势。
21.常见的模型评价指标。
①分类问题:
准确率:预测正确的样本数占总样本数的比例。
精确率:预测正确的正样本数占预测为正样本数的比例。
召回率:预测正确的正样本数占实际为正样本数的比例。
F1值:精确率和召回率的调和平均值。
ROC曲线和AUC:ROC是以假正例率为横坐标,真正例率为纵坐标的曲线,AUC是ROC曲线下的面积,用于衡量分类器的整体性能。
②回归问题:
均方误差:预测值与真实值差的平方的平均值。
均方根误差:均方误差的平方根。
平均绝对误差:预测值与真实值差的绝对值的平均值。
R平方:衡量模型对因变量的解释程度,越接近1表示模型拟合的越好。
22.处理样本不平衡的方法。
①重采样:
过采样:增加少数类别的样本数量,可以通过复制样本或生成新样本的方式。常见的方法有随机复制、SMOTE等。
欠采样:减少多数类别的样本数量,以平衡类别分布。但可能会丢失一些重要信息,因此需要谨慎使用。
②迁移学习:将一个问题上训练好的模型应用于另一个问题,可以利用原始问题中的大多数类别的知识来帮助少数类别的分类。
③类别权重调整:在训练过程中,赋予不同类别的样本不同的权重,以使模型关注少数类别。
23.为什么会发生过拟合和欠拟合?如何解决模型的过拟合和欠拟合问题?
过拟合和欠拟合是机器学习中常见的问题。当模型在训练集上表现非常好,但在未见过的新数据上表现较差时,就发生了过拟合。过拟合可能可能是因为模型过于复杂,导致在训练数据中捕捉了噪声和细节。当模型在训练集和新数据上都表现不好时,就发生了欠拟合。欠拟合可能是因为模型过于简单,无法捕捉数据中的复杂关系。
解决过拟合问题的方法:正则化、增加训练数据、简化模型结构、使用集成学习等;
解决欠拟合问题的方法:减少正则化、增加特征、增加模型复杂度、优化模型参数等。
24.什么是偏差、方差和泛化误差?
偏差:指预测值与真实值间的平均差异,用于描述模型的拟合能力;
方差:指模型预测结果的变化程度,用于描述模型的稳定性;
泛化误差:模型在新数据上的预测误差,用于描述模型的泛化能力。
关于偏差、方差和泛化误差之间的关系,通常可以用“偏差-方差权衡”来说明:
复杂度较低的模型(高偏差、低方差)倾向于欠拟合,泛化误差可能较高。
复杂度较高的模型(低偏差、高方差)倾向于过拟合,泛化误差可能较高。
适度复杂的模型在平衡偏差和方差后,可能能够获得较低的泛化误差。
25.常见的聚类模型。
K-Means聚类、层次聚类、DBSCAN(Density-Based Spatial Clustering of Applications with Noise)、高斯混合模型GMM、谱聚类等。
K-Means聚类:将数据集划分为K个簇,每个簇由其均值代表。它试图将数据点分为具有相似特征的簇。确定K值的方法有很多,常见方法包括:
①手肘法:通过观察不同k值下的误差平方和与k值的关系图,选择拐点作为k值。
②轮廓系数:计算不同k值下的轮廓系数,选择最大轮廓系数对应的k值。
③跨验证:将数据集分为训练集和测试集,通过对训练集进行聚类并在测试集上计算相应的评估指标,选择表现最佳的k值。
K-Means聚类的优缺点:
优点:简单高效、易于理解,收敛速度快;在数据具有规则的簇形状和相对均匀分布时,K-Means表现良好。
缺点:对初始中心点敏感;需要预先确定聚类的数量k;对异常值和噪声敏感;当簇的形状非常不规则或大小差异很大时,K-Means的性能可能下降。
优化:
多次随机初始化;K-Means++初始化;……
层次聚类:
层次聚类是一种树状结构的聚类方法,不需要预先确定簇的数量,可以通过截断树状结构得到不同数量的簇。层次聚类包括自底向上的凝聚聚类和自顶向下的分裂聚类。
①凝聚聚类:从单个数据点开始,逐步将相似性最高的数据点或簇合并在一起,形成更大的簇,直到所有数据点合并为一个簇或达到预定的簇数。
②分裂聚类:与凝聚层次聚类相反,分裂层次聚类从所有数据点或一个整体簇开始,然后逐步将簇分割成更小的簇,直到每个簇只包含一个数据点或达到预定的簇数。
密度聚类:
优点:不需要预先设定簇数量;能够处理各种形状、大小和密度的簇;能够识别并剔除噪声点。
缺点:需要设定合适的密度阈值和距离阈值,这对于不同的数据集可能需要调整;对密度不均匀的数据集表现较差;对高维数据的聚类效果较差。
26.降维的方法。
降维是指在保留尽可能多信息的前提下,将高维数据转换为低维表示的过程。降维可以帮助减少数据的复杂性、计算成本以及去除数据中的冗余信息。常见的降维方法如下:
主成分分析(PCA):一种线性降维方法,通过将原始高维数据投影到低维空间以实现降维。主成分是原始特征的线性组合,按照方差递减的顺序排列。
线性判别分析(LDA):一种监督降维方法,主要用于分类问题。它寻找能够最大化不同类别之间距离同时最小化同一类别内部距离的投影方向。
自编码器(AE):一种神经网络结构,可以学习数据的紧凑表示,包括一个编码器和一个解码器,通过最小化输入与解码后输出的重构误差来学习特征。
27.如何确定PCA保留几个主成分?
①解释方差比:指每个主成分解释的数据方差所占比例。选择解释方差比达到合适水平的主成分数量。
②交叉验证:在某些情况下,可以使用交叉验证评估模型在不同主成分数量下的表现,来选择合适的主成分数量。
③手肘法:通过观察主成分的累计方差解释率曲线,选择拐点作为保留主成分的数量。
28.PCA一般在什么场景下使用?
①数据降维:当数据维度很高时,可能存在冗余信息或噪声,降维可以减少数据的复杂性,加速计算,并有助于提高模型的性能。
②特征选择:通过PCA将数据转换为新的特征空间,只保留主要的特征,从而进行特征选择。
③数据可视化:PCA可以将高维数据投影到低维空间,使得数据在图形上更易于展示。
29.LDA和PCA的差异?
①目标:LDA——有监督降维,主要用于分类。旨在找到一个投影,使得不同类别之间距离最大化,同类距离最小化;PCA,无监督——旨在找到数据中最主要的方差方向,将数据投影到这些主成分上,以捕捉数据的主要变异。
②应用:LDA广泛应用于模式识别、图像处理、生物信息学等领域,特别适用于需要进行分类的问题;PCA广泛应用于降维、可视化、去噪和数据预处理等信息,适用于没有标签信息的数据。
③原理:LDA通过计算类别之间的散度矩阵和类别内部的散度矩阵,然后计算这两个矩阵的特征值和特征向量,将数据投影到具有最大特征值的特征向量所构成的线性子空间;PCA通过计算数据的协方差矩阵的特征值和特征向量,选择具有最大特征值的特征向量作为主成分。将数据投影到这些主成分上,可以实现降维的目的。