在线性回归中, 多重共线性是指⾃变量之间存在⾼度相关性或线性依赖关系的情况。
多重共线性可能会导致以下问题:
为了检测和处理多重共线性,可以采取以下⽅法:
处理多重共线性是线性回归建模中的⼀个重要挑战,因为它可以显著影响模型的可靠性和解释性。选择合适的⽅法来检测和处理多重共线性取决于数据和领域背景
岭回归(Ridge Regression)是⼀种线性回归的正则化⽅法,⽤于处理多重共线性问题。它通过在目标函数中引⼊L2正则化项来限制模型的系数⼤⼩,以减⼩过拟合⻛险。
Lasso回归(Least Absolute Shrinkage and Selection Operator Regression)是⼀种线性回归的正则化⽅法,⽤于处理多重共线性问题并进⾏特征选择。它通过在⽬标函数中引⼊L1正则化项来约束模型的系数,并促使⼀些系数变为零,从⽽实现自动特征选择。
逻辑回归(Logistic Regression)与线性回归(Linear Regression)是两种不同的回归⽅法,主要⽤于不同类型的
问题,具有不同的模型和目标。
它们之间的主要区别,这里通过概念和公式进⾏对比:
1.应用领域:
2.输出:
3.目标
逻辑回归的⽬标函数,通常也称为损失函数或代价函数,⽤于衡量模型的预测与实际观测值之间的差异。逻辑回归通常⽤于⼆分类问题,其⽬标是最⼤化观测数据属于正类别或负类别的概率,从⽽能够进⾏分类。逻辑回归的⽬标函数通常使⽤交叉熵损失函数(Cross-Entropy Loss Function)或对数损失函数(Log Loss Function),这两者通常是等价的。
这个损失函数的⽬标是最⼩化观测数据的负对数似然(negative log-likelihood),从⽽最⼤化观测数据属于正类别或负类别的概率。对于多分类问题,逻辑回归的损失函数可以使⽤多分类的交叉熵损失函数,如softmax交叉熵损失函数。通常采用梯度下降(Gradient Descent)或其变种来最⼩化损失函数并更新模型的参数(权重和截距)。
核心方法包括三种,分别是OvO(one vs one)、OvR(one vs rest)和MvM(multi vs multi)。其中OvO具备性能优势,而MvM则具备判断效力优势。
还有一种Softmax回归方法,将多个类别之间的关系建模为⼀个多类别概率分布。它使⽤Softmax函数来将线性组合的输⼊映射到K个类别的概率分布,其中K是类别的数量。训练Softmax回归模型时,通常使⽤交叉熵损失函数。
L1正则化通过向损失函数添加参数的绝对值之和来惩罚模型中的⼤参数,从⽽促使⼀些参数变为零。
这实现了特征选择,可以使模型更加稀疏,剔除不重要的特征,提⾼模型的泛化能⼒。
L2正则化通过向损失函数添加参数的平⽅和来惩罚模型中的⼤参数,但不会使参数变为零,它只是压
缩参数的值。 L2正则化有助于减轻多重共线性问题,稳定模型的估计。
总的来说, L1和L2正则化都有助于控制模型的复杂度,防⽌过拟合。它们的主要区别在于:
ROC曲线是⼀种图形化⼯具,⽤于可视化⼆分类模型的性能。它以假正例率(False Positive Rate)(FP/(FP+TN))为横轴,以真正例率(True Positive Rate,也称为召回率)(TP/(TP+FN))为纵轴,绘制出模型在不同阈值下的性能表现。ROC曲线图中的每个点对应于不同的分类阈值,根据阈值的变化(从大到小),计算真正例率和假正例率,然后绘制出曲线。 ROC曲线越靠近左上⻆,模型性能越好。ROC曲线的优点是不受类别不平衡问题的影响,能够展示模型在各种不同阈值下的性能表现。
AUC是ROC曲线下⽅的⾯积,被称为"Area Under the ROC Curve"。 AUC值的范围通常在0.5和1之间,其中
0.5表示模型的性能等同于随机猜测, 1表示完美分类器。
决策树(Decision Tree)是⼀种⽤于分类和回归问题的机器学习模型。它是⼀个树状结构,其中每个节点代表⼀个特征,每个分⽀代表⼀个特征值,每个叶⼦节点代表⼀个类别或回归值(该节点中所有训练样本的⽬标变量值的平均值)。决策树的基本原理是根据输⼊特征逐步分割数据集,以便最终能够根据特征的值来预测⽬标变量的类别或值。
基本⼯作原理:
决策树的优点包括易于理解和解释,能够处理数值和分类特征,对异常值不敏感。然⽽,它也容易过拟合,因此需要进⾏剪枝等正则化操作以提⾼泛化能⼒。
决策树的构建过程中常⽤的划分准则有三种:
为了选择最佳特征和划分,决策树算法会尝试所有可能的特征和取值组合,并选择最优的划分⽅式,这个过程通常称为"贪心"⽅法。需要注意的是,在决策树构建过程中,还可以应⽤剪枝(pruning)等技术来避免过拟合,提⾼模型的泛化性能。选择合适的划分准则和适当的剪枝策略对于构建⾼性能的决策树模型⾮常重要。
在决策树中避免过拟合的⽅法:
避免过拟合是决策树模型中的⼀个关键问题,需要根据具体问题和数据集选择适当的⽅法来控制模型的复杂度。通常,通过组合多种策略,可以有效地减轻过拟合问题,使决策树模型更加稳健。
随机森林(Random Forest)是⼀种集成学习算法,⽤于解决分类和回归问题。它基于决策树(Decision Trees)构建,并通过组合多个决策树来提⾼模型的性能和稳定性。随机森林的主要思想是通过随机选择样本和特征来构建多棵决策树,然后综合它们的预测结果来进⾏分类或回归。
随机森林的⼯作原理:
这种随机性和多棵树的组合使随机森林具有很强的泛化能⼒和抗过拟合能⼒,因此通常表现出⾊于单个决策树。
袋外误差是随机森林中⼀种重要的性能评估指标,主要有3⽅⾯作⽤:
随机森林可以通过不同⽅法来评估特征的重要性,它们通常基于每个特征在模型中的使⽤频率和重要性来计算。
以下是评估随机森林中特征重要性的两种常⻅⽅法:
1.基于基尼不纯度或熵的特征重要性
在每棵决策树的构建过程中,随机森林可以测量每个特征对于减少不纯度(例如,基尼不纯度或熵)的贡献。这个贡献可以⽤来估计特征的重要性。
特征重要性的计算通常遵循以下步骤:
这种⽅法衡量了每个特征在模型中的贡献,对于减少不纯度的特征具有较⾼的重要性分数。
2.基于Out-of-Bag (OOB)误差的特征重要性
随机森林可以利⽤Out-of-Bag(OOB)样本来估计特征重要性。 OOB样本是在Bootstrap抽样过程中未被选择的样本。特征重要性的计算步骤如下:
这两种⽅法都可以⽤来估计特征的相对重要性,但它们的计算⽅式略有不同。
⽀持向量机(Support Vector Machine, SVM)是⼀种强⼤的监督学习算法,主要⽤于分类和回归问题。 SVM的核⼼思想是寻找⼀个最优的超平⾯或决策边界,以最⼤化不同类别数据点之间的间隔,并尽量避免误分类。
⽀持向量是训练数据中距离超平⾯最近的数据点。它们是⽤于定义分类间隔(Margin)的关键元素。分类间隔是指超平⾯与最近的⽀持向量之间的距离,SVM 的关键⽬标是找到⼀个超平⾯,使得分类间隔最⼤化。
SVM也可以应⽤于⾮线性分类问题,通过引⼊核函数来将数据映射到⾼维特征空间,从⽽在⾼维空间中找到线性可分的超平⾯。常⻅的核函数包括线性核、多项式核和径向基函数(RBF)核。
在回归任务中
在SVM中处理⾮线性可分的数据时,通常使⽤核函数(Kernel Function)来将数据映射到⼀个⾼维特征空间,使得数据在这个⾼维空间中变得线性可分。
核函数的作⽤是计算两个数据点之间的相似度或内积,⽽不需要显式地将数据映射到⾼维空间。以下是⼀些常⽤的核函数及其作⽤:
相似之处:
差异:
3. 损失函数:逻辑回归使⽤对数损失函数,⽽SVM使⽤合⻚损失函数(Hinge Loss)。这导致了它们在优化和预测时的不同⾏为。
4. 决策边界:SVM的⽬标是找到离决策边界最近的数据点(⽀持向量),⽽逻辑回归的⽬标是找到最⼤似然估计下的决策边界。因此, SVM更加关注⽀持向量,⽽逻辑回归更加关注整体数据点的概率分布。
5. 鲁棒性:SVM通常对异常值更加鲁棒,因为它最⼤化了离决策边界最近的数据点的间隔。逻辑回归对异常值更加敏感,因为它使⽤了对数损失函数。
6. 参数调整:SVM的性能⾼度依赖于核函数的选择,⽽逻辑回归相对较少需要参数调整。
朴素⻉叶斯(Naive Bayes)是⼀种基于⻉叶斯定理的概率统计分类算法,常⽤于⽂本分类和多类别分类问题。它的基本原理是基于特征之间的条件独⽴性假设,因此称为"朴素"⻉叶斯。该算法通过计算给定类别的特征条件概率来进⾏分类。下⾯是朴素⻉叶斯的基本原理:
给定⼀个分类任务,我们希望找到⼀个类别标签(或类别的概率分布),使得给定特征数据集X的条件下,该类别标签的概率最⼤。
该方法忽略了特征相关性,且不适用于回归问题。
K近邻(K-Nearest Neighbors,简称KNN)算法是⼀种基本的机器学习算法,常⽤于分类和回归问题。⼯作原理很简单,概括为以下步骤:
计算距离的方法通常有欧⽒距离、曼哈顿距离等。KNN算法需要计算新样本与所有训练样本之间的距离,随着训练集的规模增加,计算成本会显著增加。
K均值聚类(K-means clustering)是⼀种常⽤的⽆监督学习算法,⽤于将数据集划分为K个不同的簇。该算法通过最⼩化簇内样本之间的平⽅误差和最⼤化簇间的距离来确定簇的位置。K均值聚类的步骤如下:
K均值聚类是一种常用的无监督学习算法,用于将数据集划分为K个不同的簇。它具有以下优点和缺点:
优点:
缺点:
区别:
相似之处:
4. 距离度量: K均值聚类和层次聚类都使⽤距离度量来度量数据点之间的相似性或距离,例如欧⽒距离、曼哈顿距离等。
5. ⽆监督学习: 它们都是⽆监督学习⽅法,不需要事先标记的类别信息。
适⽤场景:
6. K均值聚类适⽤于:数据点分布近似均匀,簇的形状⼤致相似,簇内的数据点具有相似的⼤⼩和⽅差。你事先知道要分成多少个簇。对计算资源要求有限的情况,因为K均值计算较快。
7. 层次聚类适⽤于:数据点的分布具有层次性或嵌套结构,可以使⽤不同的聚类级别。不确定需要分成多少个簇,希望通过可视化和剪枝选择聚类数。对计算资源要求相对较⾼,因为构建层次结构可能需要更多的计算资源。
K均值聚类更适⽤于简单的聚类问题,⽽层次聚类更适⽤于复杂的聚类问题,尤其是当你希望获得层次性聚类结果时。选择哪种⽅法应该取决于数据的特性以及问题的需求。
集成学习(Ensemble Learning)是⼀种机器学习⽅法,其基本思想是通过组合多个学习算法或模型的预测来提⾼整体性能和泛化能⼒。它的核⼼思想是通过汇总多个模型的意⻅,以减⼩单个模型的偏差和⽅差,从⽽提⾼模型的鲁棒性和准确性。
Bagging(Bootstrap Aggregating):
Boosting:
4. ⼯作原理: Boosting通过迭代地训练⼀系列基本模型,每个基本模型都试图修正前⼀个模型的错误。它会给每个样本分配⼀个权重,使前⼀个模型错误分类的样本在下⼀轮训练中获得更⾼的权重。
5. 模型训练: Boosting的基本模型是依次训练的,每个模型都在前⼀个模型的基础上进⾏学习,尝试减⼩前⼀个模型的错误。
6. 集成策略: Boosting的集成策略是通过加权平均基本模型的预测结果来获得最终的集成模型。权重通常是根据模型性能分配的,性能更好的模型通常有更⾼的权重。
总之, Bagging的基本思想是通过并⾏训练多个相对独⽴的基本模型,然后将它们的预测结果平均化,以减⼩⽅差;⽽Boosting的基本思想是通过迭代训练⼀系列基本模型,每个模型都试图纠正前⼀个模型的错误,以提⾼整体性能。 Boosting通常在模型性能上更强⼤,但也更容易过拟合。
Stacking(堆叠)方法:
Blending(混合)方法:
主要差别:
总的来说,Stacking和Blending的差异在于数据划分方式、基本学习器预测数据来源和元学习器的训练数据。Stacking使用K-fold交叉验证来训练基本学习器并生成预测数据,而Blending只使用训练集和验证集来训练基本学习器并生成预测数据。
AdaBoost(Adaptive Boosting)是⼀种集成学习⽅法,旨在通过组合多个弱分类器来提⾼整体性能。它的基本原理是通过逐步改进训练样本的权重分布,使得难以分类的样本逐渐得到更多的关注。下⾯是AdaBoost算法的基本原理:
通过这种迭代的⽅式, AdaBoost能够逐步提⾼整体分类准确度。它善于处理复杂问题,尤其适⽤于⼆元分类任务。弱分类器可以是任何具有略优于随机猜测性能的分类器,如决策树桩(仅有⼀个分裂节点的决策树)。
梯度提升方法(Gradient Boosting)是一种集成学习算法,通过串行训练一系列弱学习器(通常是决策树),逐步减小损失函数的梯度来提升整体模型的性能。
梯度提升方法的基本原理是以迭代的方式构建一个强大的预测模型,每一轮迭代都会训练一个新的弱学习器,并将其加入到模型中,以减小之前模型的预测误差。在每一轮迭代中,梯度提升方法会计算损失函数相对于当前模型的负梯度,然后用这个负梯度拟合一个新的弱学习器,使得新学习器能够更好地拟合损失函数的残差。
具体来说,梯度提升方法的步骤如下:
梯度提升方法的一个重要特点是可以通过优化不同的损失函数来适应不同的问题,比如平方损失函数用于回归问题,交叉熵损失函数用于分类问题。另外,梯度提升方法还可以通过正则化技术(如学习率、子采样)来提高模型的泛化能力,防止过拟合。
两者都是在每一轮迭代中,利用损失函数相对于模型的负梯度方向的信息来对当前模型进行更新,只不过在梯度下降中,模型是以参数化形式表示,从而模型的更新等价于参数的更新。而在梯度提升中,模型并不需要进行参数化表示,而是直接定义在函数空间中,从而大大扩展了可以使用的模型种类。
梯度提升树(Gradient Boosting Trees):梯度提升树是最早和最经典的基于Gradient Boosting的方法之一。它使用决策树作为弱学习器,通过迭代地拟合损失函数的负梯度来逐步提升模型性能。每一棵树都是在之前所有树的预测值的基础上构建的,以减小模型的残差。梯度提升树的核心思想是通过不断添加树来逼近真实的梯度值,从而逐步减小模型的偏差和方差。
XGBoost(eXtreme Gradient Boosting):XGBoost是梯度提升树的一种优化实现,它在梯度提升树的基础上引入了一些创新的技术,如自定义损失函数、正则化项、列抽样等,以提高模型的性能和泛化能力。XGBoost的主要原理是通过近似的贪婪算法来构建树模型,同时利用二阶梯度信息进行分裂点的选择,从而更准确地拟合目标函数。
LightGBM(Light Gradient Boosting Machine):LightGBM是另一种基于梯度提升树的算法,它在XGBoost的基础上进行了改进。LightGBM采用了基于直方图的决策树算法,通过对特征值进行离散化处理,以加快训练速度。此外,LightGBM还引入了互斥特征捆绑技术和直方图偏差修正方法,以进一步提高性能。
CatBoost(Categorical Boosting):CatBoost是一种专门针对具有类别特征的数据集的梯度提升方法,无需手动进行特征编码。它通过使用特殊的处理技术来处理类别特征,并利用对称树和排序算法来提高模型性能。CatBoost还具有自动处理缺失值和稀疏数据的能力,并且支持多种损失函数和评估指标。
袋外误差(Out-of-Bag Error)和交叉验证(Cross-Validation)是⽤于评估集成学习模型性能和选择最佳参数的重要⼯具。
袋外误差和交叉验证都是集成学习中常⽤的评估⼿段,它们提供了⼀种⽆偏估计模型性能的⽅法,有助于选择合适的模型和优化集成模型的参数。
集成学习在许多领域和任务中都表现出⾊,特别适⽤于以下情况:
然⽽,集成学习也有⼀些局限性:
尽管存在⼀些局限性,但集成学习仍然是⼀种强⼤的机器学习技术,在很多实际应⽤中取得了显著的成功。
Batch Normalization(BN)是在每个特征上单独做标准化。假设我们有10行3列的数据,即batchsize = 10,每一行数据有三个特征,假设这三个特征是身高、体重、年龄,那么BN是针对每一列(特征)进行缩放。相反Layer Normalization(LN)是在每个样本上做标准化,即针对每一行(样本)进行缩放。
BN是为了克服神经网络加深导致难以训练而诞生的,随着神经网络深度加深,训练起来就会越来越困难,收敛速度回很慢,常常会导致梯度弥散问题(Vanishing Gradient Problem)。BN一般用在非线性映射(激活函数)之前,让每一层的输入有一个稳定的分布会有利于网络的训练。
BN的优点:
BN的缺点:
然而在NLP领域中LN更合适,这是因为BN的操作方向是对每个位置的词在batch维度进行操作。但语言文本的复杂性是很高的,任何一个词都有可能放在初始位置,而且每个句子长度不一,且词序可能并不影响我们对句子的理解。而BN是针对每个位置进行缩放,这不符合NLP的规律。而LN则是针对一句话进行缩放的,且LN一般用在第三维度,如[batchsize, seq_len, dims]中的dims,一般为词向量的维度,或者是RNN的输出维度等等,这一维度各个特征的量纲应该相同,因此也不会遇到上面因为特征的量纲不同而导致的缩放问题。
LN的优点:
LN的缺点:
BN 和 LN 都可以比较好的抑制梯度消失和梯度爆炸的情况。BN不适合RNN、transformer等序列网络,不适合文本长度不定和batchsize较小的情况,适合于CV中的CNN等网络;而LN适合用于NLP中的RNN、transformer等网络,因为sequence的长度可能是不一致的。
当前神经网络依靠反向传播来更新参数,反向传播算法可以说是梯度下降在链式法则中的应用,而链式法则是一个连乘的形式,所以当层数越深的时候,梯度将以指数形式传播。梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。在根据损失函数计算的误差通过梯度反向传播的方式对深度网络权值进行更新时,得到的梯度值接近0或特别大,也就是梯度消失或爆炸。梯度消失或梯度爆炸在本质原理上其实是一样的。
【梯度消失】产生的原因有:一是在深层网络中,二是采用了不合适的损失函数,比如sigmoid。当梯度消失发生时,接近于输出层的隐藏层由于其梯度相对正常,所以权值更新时也就相对正常,但是当越靠近输入层时,由于梯度消失现象,会导致靠近输入层的隐藏层权值更新缓慢或者更新停滞。这就导致在训练时,只等价于后面几层的浅层网络的学习。
【梯度爆炸】一般出现在深层网络和权值初始化值太大的情况下。在深层神经网络或循环神经网络中,误差的梯度可在更新中累积相乘。如果网络层之间的梯度值大于 1.0,那么重复相乘会导致梯度呈指数级增长,梯度变的非常大,然后导致网络权重的大幅更新,并因此使网络变得不稳定。
解决办法:
RNN(循环神经网络),LSTM(长短期记忆网络)和GRU(门控循环单元)是用于处理序列数据的神经网络模型,它们在结构和功能上有一些区别:
RNN(循环神经网络):
LSTM(长短期记忆网络):
GRU(门控循环单元):
总的来说,LSTM和GRU是对标准RNN进行改进的模型,解决了梯度消失和梯度爆炸的问题。LSTM通过引入记忆细胞和门控机制,而GRU通过合并门控单元来简化网络结构。选择使用哪种模型取决于具体的任务需求和性能要求。
互信息(Mutual Information)是⼀种⽤于度量两个随机变量之间的相关性或依赖关系的概念。互信息衡量了⼀个随机变量中的信息对另⼀个随机变量的预测能力,即⼀个随机变量中的信息是否提供了关于另⼀个随机变量的额外信息。
其中, 是p(x,y)联合概率分布,p(x)和p(y)分别是边缘概率分布。互信息可以⽤于特征选择和降维问题:
注意,互信息在计算特征之间的相关性时不考虑它们的线性关系。在某些情况下,互信息可能⽆法捕捉到⾮线性相关性。因此,在实际应⽤中,需要结合其他⽅法和技术来综合考虑特征选择和降维的需求。
⼀般来说,如果特征值的分布范围未知,或者特征值分布接近正态分布,标准化是⼀个不错的选择。如果特征有已知的上下界或者需要将特征映射到⼀定范围内,那么归⼀化可能更合适。有时候,也可以同时使⽤两者,根据具体情况对不同特征进⾏不同的处理。
特征选择(Feature Selection):
特征抽取(Feature Extraction):
区别:
在实际应⽤中,选择特征选择还是特征抽取取决于问题的性质、数据的维度和机器学习模型的要求。在某些情况下,这两种⽅法也可以结合使⽤,先进⾏特征抽取,然后再进⾏特征选择,以达到更好的特征⼯程效果。
⽆监督学习(Unsupervised Learning)是机器学习的⼀种分⽀,其特点是在训练数据中没有明确的标签或⽬标输出。在⽆监督学习中,模型的任务是从数据中发现隐藏的结构、模式或关系,⽽不需要预先知道⽬标变量或标签。⽆监督学习任务通常可以分为两类:
⽆监督学习通常⽤于发现数据的内在结构和关联,因此在数据挖掘、特征⼯程和可视化等领域有⼴泛的应⽤。与监督学习不同,⽆监督学习不需要事先标记的训练数据,因此更适⽤于探索性分析和数据探索。
常用的激活函数有以下几种:
Sigmoid函数:
双曲正切函数(Tanh函数):
ReLU函数:
Leaky ReLU函数:
Softmax函数:
每种激活函数都有其适用的场景和局限性,选择适合特定任务和网络结构的激活函数是神经网络设计中的重要考虑因素。
正则化可以增加模型的泛化能力,主要基于以下两个原因:
减少过拟合:正则化通过限制模型的复杂性,防止模型对训练数据的过拟合。过拟合指的是模型过度拟合训练数据,导致在新的未见过的数据上表现不佳。正则化方法(如L1正则化、L2正则化)通过在损失函数中引入正则化项,惩罚模型的复杂性,使得模型倾向于选择简单的解决方案。这样可以防止模型过于依赖于训练数据中的噪声或不相关的特征,从而提高在新数据上的泛化能力。
特征选择和权重衰减:正则化方法可以促使模型选择重要的特征并减少对不相关或冗余特征的依赖。例如,L1正则化倾向于产生稀疏权重向量,将一些特征的权重推向零,相当于进行特征选择,只保留对目标变量有更强预测能力的特征。而L2正则化通过权重衰减减小权重的幅度,使得每个特征对模型的影响更加均衡。这样可以提高模型对特征的鲁棒性,减少对特定样本的过度敏感性,进而提高泛化能力。
通过正则化方法,模型能够在学习过程中在准确性和复杂性之间进行权衡,更好地适应未见过的数据。正则化可以看作是一种对模型的约束,帮助模型学习到更一般化的规律,减少对训练数据的过度拟合,从而提高模型的泛化能力。