常见机器学习的原理及优略势

news2024/11/26 9:54:44

有监督

一、线性回归(Linear Regression)

1. 算法原理

线性回归(Linear Regression)是一种基本的回归算法,它通过拟合一个线性模型来预测连续型目标变量。线性回归模型的基本形式是:y = w1 * x1 + w2 * x2 + … + wn * xn + b,其中y是目标变量,x1到xn是特征,w1到wn是模型参数(权重),b是截距项。线性回归的目标是找到一组权重和截距,使得预测值与实际值之间的误差最小。为了实现这一目标,线性回归使用了最小二乘法(Least Squares Method)来最小化预测值与实际值之间的平方误差。

2.优缺点

优点:
a) 算法简单,容易理解和实现。
b) 计算复杂度低,训练速度快。
c) 可解释性强,模型参数有直观的物理意义。
d) 可以通过正则化方法(如Lasso和Ridge)来避免过拟合。

3.缺点:

a) 线性回归假设特征与目标之间存在线性关系,对于非线性关系的数据拟合效果较差。
b) 对异常值(outliers)敏感,异常值可能导致模型拟合效果较差。
c) 对多重共线性问题(特征间高度相关)敏感,可能导致模型不稳定。
3.适用场景

4.适用场景:

a) 预测连续型目标变量,如房价、销售额等。
b) 数据特征与目标变量之间存在线性关系或近似线性关系。
c) 数据量较大,需要快速训练模型时。
d) 需要对模型进行解释时,例如分析各个特征对目标变量的贡献程度。
总之,线性回归是一种简单有效的回归算法,在实际应用中具有较广泛的适用性。然而,当数据之间存在非线性关系或者特征之间存在多重共线性时,线性回归的表现可能会受到影响。在这种情况下,可以考虑使用其他更复杂的回归方法。

二、逻辑回归(Logistic Regression)

1. 算法原理

逻辑回归(Logistic Regression)是一种广泛应用于分类问题的线性模型。虽然它的名字中包含“回归”,但实际上它是一种分类算法。逻辑回归通过sigmoid函数(S型函数)将线性模型的输出转换为概率值,用于表示数据属于某一类的概率。sigmoid函数的公式为:f(z) = 1 / (1 + exp(-z))。逻辑回归模型的目标是找到一组权重和截距,使得预测的概率与实际标签之间的误差最小。为了实现这一目标,逻辑回归使用了极大似然估计(Maximum Likelihood Estimation,MLE)来最大化观测数据的对数似然。
2.优缺点

2.优缺点

优点:
a) 算法简单,容易理解和实现。
b) 输出结果具有概率意义,方便进行概率估计和置信度分析。
c) 可以通过正则化方法(如L1和L2正则化)来避免过拟合。
d) 可解释性强,模型参数有直观的物理意义。
缺点:
a) 逻辑回归假设特征与目标之间存在线性关系,对于非线性关系的数据分类效果较差。
b) 对异常值敏感,异常值可能导致模型拟合效果较差。
c) 只能处理二分类问题,对于多分类问题需要进行扩展(如one-vs-rest或one-vs-one方法)。

3.适用场景

逻辑回归适用于以下场景:
a) 二分类问题,如垃圾邮件分类、客户流失预测等。
b) 数据特征与目标变量之间存在线性关系或近似线性关系。
c) 需要对模型进行解释时,例如分析各个特征对目标变量的贡献程度。
逻辑回归虽然简单,但在许多实际问题中表现出良好的分类性能。然而,当数据之间存在非线性关系时,可以考虑使用其他更复杂的分类方法。

三、支持向量机(svn)

1. 算法原理

支持向量机(Support Vector Machine,SVM)是一种广泛应用于分类和回归问题的机器学习算法。在分类问题中,SVM的目标是找到一个超平面,使得两个类别之间的间隔最大化。这个间隔被称为“最大间隔”,而支持向量机的名称来源于构成这个最大间隔边界的数据点,被称为“支持向量”。
为了解决非线性问题,支持向量机引入了核函数(Kernel Function)。核函数可以将原始特征空间映射到一个更高维度的特征空间,使得原本线性不可分的数据在新的特征空间中变得线性可分。常用的核函数包括:线性核、多项式核、高斯径向基核(Radial Basis Function,RBF)等。

2.优缺点

优点:
a) 在高维数据和小样本数据上表现良好。
b) 可以处理非线性问题,通过选择合适的核函数可以提高分类性能。
c) 具有稀疏性,只有支持向量对模型产生影响,降低了计算复杂度。
缺点:
a) 对于大规模数据集和高维数据,训练速度较慢。
b) 需要选择合适的核函数和调整核函数参数,对参数敏感。
c) 对于多分类问题需要进行扩展,如one-vs-rest或one-vs-one方法。

3.适用场景

支持向量机适用于以下场景:
a) 二分类问题,如手写数字识别、人脸识别等。
b) 数据量较小或中等规模的数据集。
c) 数据具有非线性关系或需要在高维空间进行分类。
支持向量机在许多实际问题中表现出良好的分类性能,尤其是在高维数据和小样本数据上。然而,在大规模数据集和高维数据上,训练速度较慢,可能需要考虑使用其他更高效的分类方法。

四、决策树(Decision Tree)

1. 算法原理

决策树(Decision Tree)是一种常见的机器学习算法,用于解决分类和回归问题。决策树以树状结构表示决策过程,通过递归地将数据集划分为不同的子集,每个子集对应于一个树节点。在每个节点上,根据特征值选择一个最佳的划分方式。常用的划分方式包括信息增益、信息增益比、基尼指数等。划分过程一直进行到达到预先设定的停止条件,如节点内的数据数量小于某个阈值或树的深度达到限制等。

2.优缺点

优点:
a) 模型具有良好的可解释性,容易理解和实现。 b) 可以处理缺失值和异常值,对数据的预处理要求较低。 c) 适用于多种数据类型,包括离散型和连续型特征。
缺点:
a) 容易产生过拟合现象,需要采用剪枝策略来防止过拟合。 b) 对于非线性关系的数据建模能力有限。 c) 决策树的构建过程可能受到局部最优解的影响,导致全局最优解无法达到。

3.适用场景

决策树适用于以下场景:
a) 数据具有混合类型的特征,如离散型和连续型。
b) 需要解释模型的决策过程,如信贷审批、医疗诊断等。
c) 数据集中存在缺失值或异常值。
决策树在很多实际应用中表现出较好的性能,尤其是在具有混合数据类型特征的问题中。然而,决策树容易过拟合,需要采用剪枝策略来防止过拟合,同时对非线性关系建模能力有限。在这种情况下,可以考虑使用随机森林等基于决策树的集成方法。
在这里插入图片描述
三大经典决策树算法最主要的区别是其特征选择的准则不同。ID3算法选择特征的依据是信息增益、C4.5是信息增益比,而CART则是基尼指数。作为一种基础的分类和回归方法,决策树可以有以下两种理解方法:可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
在这里插入图片描述

4.ID3算法

ID3 算法是建立在奥卡姆剃刀(用较少的东西,同样可以做好事情)的基础上:越是小型的决策树越优于大的决策树。

思想

从信息论的知识中我们知道:期望信息越小,信息熵越大,从而样本纯度越低。ID3 算法的核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。算法采用自顶向下的贪婪搜索遍历可能的决策树空间(C4.5 也是贪婪搜索)。

具体方法是:
1)从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征。
2)由该特征的不同取值建立子节点,再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止;
3)最后得到一个决策树。
算法步骤:
在这里插入图片描述

缺点

ID3 没有剪枝策略,容易过拟合;
ID3采用信息增益大的特征优先建立决策树的节点,信息增益准则对可取值数目较多的特征有所偏好
只能用于处理离散分布的特征,没有考虑连续特征
没有考虑缺失值。

5.C4.5算法

ID3算法有四个主要的不足,一是不能处理连续特征,第二个就是用信息增益作为标准容易偏向于取值较多的特征,最后两个是缺失值处理的问和过拟合问题。昆兰在C4.5算法中改进了上述4个问题:
在这里插入图片描述
在这里插入图片描述

决策树C4.5算法的局限性

C4.5虽然改进或者改善了ID3算法的几个主要的问题,仍然有优化的空间。
1)由于决策树算法非常容易过拟合,因此对于生成的决策树必须要进行剪枝。剪枝的算法有非常多,C4.5的剪枝方法有优化的空间。思路主要是两种,一种是预剪枝,即在生成决策树的时候就决定是否剪枝。另一个是后剪枝,即先生成决策树,再通过交叉验证来剪枝。
2)C4.5生成的是多叉树,即一个父节点可以有多个节点。很多时候,在计算机中二叉树模型会比多叉树运算效率高。如果采用二叉树,可以提高效率。
3)C4.5只能用于分类,如果能将决策树用于回归的话可以扩大它的使用范围。
4)C4.5由于使用了熵模型,里面有大量的耗时的对数运算,如果是连续值还有大量的排序运算。如果能够加以模型简化可以减少运算强度但又不牺牲太多准确性的话,那就更好了。

6.CART

在ID3算法中我们使用了信息增益来选择特征,信息增益大的优先选择。在C4.5算法中,采用了信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的问题。但是无论是ID3还是C4.5,都是基于信息论的熵模型的,这里面会涉及大量的对数运算。能不能简化模型同时也不至于完全丢失熵模型的优点呢?有!CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好。这和信息增益(比)是相反的。
ID3 和 C4.5 虽然在对训练样本集的学习中可以尽可能多地挖掘信息,但是其生成的决策树分支、规模都比较大,CART 算法的二分法可以简化决策树的规模,提高生成决策树的效率。

思想

CART 包含的基本过程有分裂,剪枝和树选择。
分裂:分裂过程是一个二叉递归划分过程,其输入和预测特征既可以是连续型的也可以是离散型的,CART 没有停止准则,会一直生长下去;
剪枝:采用代价复杂度剪枝,从最大树开始,每次选择训练数据熵对整体性能贡献最小的那个分裂节点作为下一个剪枝对象,直到只剩下根节点。CART 会产生一系列嵌套的剪枝树,需要从中选出一颗最优的决策树;
树选择:用单独的测试集评估每棵剪枝树的预测性能(也可以用交叉验证)。

CART 在 C4.5 的基础上进行了很多提升。

C4.5 为多叉树,运算速度慢,CART 为二叉树,运算速度快;
C4.5 只能分类,CART 既可以分类也可以回归;
CART 使用 Gini 系数作为变量的不纯度量,减少了大量的对数运算;
CART 采用代理测试来估计缺失值,而 C4.5 以不同概率划分到不同节点中;
CART 采用“基于代价复杂度剪枝”方法进行剪枝,而 C4.5 采用悲观剪枝方法。

对于CART分类树连续值的处理问题,其思想和C4.5是相同的,都是将连续的特征离散化。 唯一的区别在于在选择划分点时的度量方式不同,C4.5使用的是信息增益比,则CART分类树使用的是基尼系数。
在这里插入图片描述
  对于CART分类树离散值的处理问题,采用的思路是不停的二分离散特征。
    ID3或者C4.5,如果某个特征A被选取建立决策树节点,如果它有A1,A2,A3三种类别,我们会在决策树上一下建立一个三叉的节点。这样导致决策树是多叉树。但是CART分类树使用的方法不同,他采用的是不停的二分,还是这个例子,CART分类树会考虑把A分成{A1}和{A2,A3}, {A2}和{A1,A3}, {A3}和{A1,A2}三种情况,找到基尼系数最小的组合,比如{A2}和{A1,A3},然后建立二叉树节点,一个节点是A2对应的样本,另一个节点是{A1,A3}对应的节点。同时,由于这次没有把特征A的取值完全分开,后面我们还有机会在子节点继续选择到特征A来划分A1和A3。这和ID3或者C4.5不同,在ID3或者C4.5的一棵子树中,离散特征只会参与一次节点的建立。

CART分类树建立算法的具体流程

算法输入是训练集D,基尼系数的阈值,样本个数阈值。
    输出是决策树T。
    我们的算法从根节点开始,用训练集递归的建立CART树。

对于当前节点的数据集为D,如果样本个数小于阈值或者没有特征,则返回决策子树,当前节点停止递归。
计算样本集D的基尼系数,如果基尼系数小于阈值,则返回决策树子树,当前节点停止递归。
计算当前节点现有的各个特征的各个特征值对数据集D的基尼系数,对于离散值和连续值的处理方法和基尼系数的计算见第二节。缺失值的处理方法和上篇的C4.5算法里描述的相同。
在计算出来的各个特征的各个特征值对数据集D的基尼系数中,选择基尼系数最小的特征A和对应的特征值a。根据这个最优特征和最优特征值,把数据集划分成两部分D1和D2,同时建立当前节点的左右节点,做节点的数据集D为D1,右节点的数据集D为D2.
对左右的子节点递归的调用1-4步,生成决策树。
    对于生成的决策树做预测的时候,假如测试集里的样本A落到了某个叶子节点,而节点里有多个训练样本。则对于A的类别预测采用的是这个叶子节点里概率最大的类别。

CART回归树建立算法

CART回归树和CART分类树的建立算法大部分是类似的,所以这里我们只讨论CART回归树和CART分类树的建立算法不同的地方。

首先,我们要明白,什么是回归树,什么是分类树。两者的区别在于样本输出,如果样本输出是离散值,那么这是一颗分类树。如果样本输出是连续值,那么那么这是一颗回归树。

除了概念的不同,CART回归树和CART分类树的建立和预测的区别主要有下面两点:

连续值的处理方法不同
决策树建立后做预测的方式不同。

对于连续值的处理,我们知道CART分类树采用的是用基尼系数的大小来度量特征的各个划分点的优劣情况。这比较适合分类模型,但是对于回归模型,我们使用了常见的和方差的度量方式,CART回归树的度量目标是,对于任意划分特征A,对应的任意划分点s两边划分成的数据集D1和D2,求出使D1和D2各自集合的均方差最小,同时D1和D2的均方差之和最小所对应的特征和特征值划分点。表达式为:
在这里插入图片描述
 其中,c1为D1数据集的样本输出均值,c2为D2数据集的样本输出均值。

对于决策树建立后做预测的方式,上面讲到了CART分类树采用叶子节点里概率最大的类别作为当前节点的预测类别。而回归树输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果。

除了上面提到了以外,CART回归树和CART分类树的建立算法和预测没有什么区别。

五、K近邻算法( KNN)

1. 算法原理

K近邻(K-Nearest Neighbors, KNN)算法是一种基于实例的学习方法,用于分类和回归任务。对于一个给定的输入样本,KNN算法首先找到训练集中与之最接近的K个样本(即K个邻居),然后根据这K个邻居的标签(或输出值)来预测输入样本的类别(或输出值)。
对于分类任务,通常采用投票法,将K个邻居中出现次数最多的类别作为预测结果;对于回归任务,通常采用平均法,将K个邻居的输出值求平均作为预测结果。

2.优缺点

优点:
a) 算法简单,易于实现。
b) 无需训练过程,适应性强。
c) 对于非线性数据具有较好的分类性能。
d) 可用于多分类问题。
缺点:
a) 计算量大,特别是当训练集较大时。
b) 对噪声数据和异常值敏感。
c) 需要事先确定合适的K值和距离度量方法。
d) 没有考虑特征权重,可能影响预测性能。

3.适用场景

K近邻算法适用于以下场景:
a) 数据集规模较小,计算资源充足。
b) 数据集的类别边界不规则,呈现非线性分布。
c) 特征之间的相关性较弱。
d) 对实时性要求较高的场景。
KNN在图像识别、文本分类、推荐系统等领域有广泛应用。

六、朴素贝叶斯分类器(Naive Bayes)

1. 算法原理

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的概率分类器,它假设特征之间相互独立。朴素贝叶斯分类器首先计算给定样本属于每个类别的后验概率,然后将后验概率最大的类别作为预测结果。

2.优缺点

优点:
a) 算法简单,易于实现。
b) 训练速度快,可在线更新模型。
c) 对于特征维度较高的数据具有较好的性能。
d) 可以处理多分类问题。
缺点:
a) 假设特征之间相互独立,实际应用中这个假设可能不成立。
b) 对于连续型特征需要离散化处理。
c) 需要平滑处理来避免概率为0的情况。
d) 当特征关联性较强时,分类性能可能会受到影响。

3.适用场景

朴素贝叶斯分类器适用于以下场景:
a) 数据集特征维度较高,且特征之间关联性较弱。
b) 对训练时间和模型实时更新有较高要求的场景。
c) 数据集中有缺失值的情况。
朴素贝叶斯分类器在自然语言处理、文本分类、垃圾邮件过滤、情感分析等领域有广泛应用。

七、神经网络(neural networks,NN)

1. 算法原理

神经网络是一种模仿生物神经系统的计算模型,由多个相互连接的神经元组成。神经网络的基本结构包括输入层、隐藏层和输出层。神经网络通过前向传播计算预测值,利用反向传播算法调整权重,以最小化损失函数。

2.优缺点

a) 优点: i. 神经网络具有较强的表达能力,能够逼近复杂的非线性函数。 ii. 可以自动学习特征表示,减少特征工程的工作量。 iii. 可以通过多层结构和大量神经元实现深度学习,提高模型性能。
b) 缺点: i. 训练过程可能较慢,需要大量计算资源。 ii. 对超参数的选择敏感,需要进行调优。 iii. 可解释性相对较差。

3.适用场景

神经网络适用于以下场景:
a) 需要学习复杂模式和高维数据表示的问题。
b) 在计算资源充足的情况下,需要较高预测性能的场景。
神经网络在计算机视觉、自然语言处理、语音识别、推荐系统等领域有广泛应用。

八、Lasso回归与Ridge回归

1. 算法原理

Lasso回归(Least Absolute Shrinkage and Selection Operator)和Ridge回归(岭回归)都是线性回归的正则化版本。Lasso回归在损失函数中加入了L1正则化项,促使部分系数变为0,实现特征选择;Ridge回归在损失函数中加入了L2正则化项,减小系数的大小,防止过拟合。

2.优缺点

优点:
i. 降低过拟合风险。
ii. Lasso回归可以实现特征选择。
缺点:
i. 对于高度相关的特征,Lasso回归可能选择其中一些而完全忽略其他特征。
ii. Ridge回归不能实现特征选择。

3.适用场景

Lasso回归和Ridge回归适用于以下场景:
a) 存在多重共线性的数据。
b) 需要进行特征选择的场景(Lasso回归)。
Lasso回归和Ridge回归在金融、医疗、生物信息学等领域有广泛应用。

九、集成学习

Bagging

核心思想:并行地训练一系列各自独立的同类模型,然后再将各个模型的输出结果按照某种策略进行聚合。例如,分类中可以采用投票策略,回归中可以采用平均策略;
步骤:

  • Boostrap阶段,即采用有放回的采样方式,将训练集分为n个子样本集;并用基学习器对每组样本分布进行训练,得到n个基模型;
  • Aggregating阶段,将上一个阶段训练得到的n个基模型组合起来,共同做决策。在分类任务中,可采用投票法,比如相对多数投票法,将结果预测为得票最多的类别。而在回归任务中可采用平均法,即将每个基模型预测得到的结果进行简单平均或加权平均来获得最终的预测结果。

Bagging就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的variance.;Bagging 比如Random Forest 这种先天并行的算法都有这个效果

随机森林(Random Forest)
1. 算法原理

随机森林(Random Forest)是一种基于决策树的集成学习方法。它通过构建多个决策树,并将它们的预测结果进行投票(分类问题)或平均(回归问题),以获得最终的预测结果。随机森林的构建过程包括两个关键步骤:自助采样(bootstrap sampling)和特征随机选择。自助采样用于生成不同的训练数据子集,每个子集用于构建一个决策树。特征随机选择则在每个决策树节点上随机选择一部分特征进行划分,以增加决策树的多样性。这两个步骤共同提高了随机森林的泛化能力和鲁棒性。

2.优缺点

优点:
a) 随机森林具有较高的预测准确性,通常比单个决策树的性能要好。
b) 能够有效地处理高维数据和大量特征。
c) 对噪声和异常值具有较强的鲁棒性。
d) 可以进行特征重要性评估,有助于特征选择。
e) 并行化能力强,易于实现并行计算。
缺点:
a) 相比单个决策树,随机森林的模型可解释性较差。
b) 训练和预测时间可能较长,尤其是在大数据集上。
c) 对于某些不平衡的数据集,随机森林的性能可能不尽如人意。

3.适用场景

随机森林适用于以下场景:
a) 需要提高预测准确性的分类和回归问题。
b) 数据集具有高维特征或特征数量较多。
c) 数据集中存在噪声和异常值。
随机森林在许多实际应用中表现出较好的性能,尤其是在提高预测准确性方面。然而,随机森林的可解释性较差,且在大数据集上训练和预测时间可能较长。在面临这些问题时,可以考虑使用其他集成方法,如梯度提升树(Gradient Boosting Trees)等。

Boosting

AdaBoost

核心思想:串行地训练一系列前后依赖的同类模型,即后一个模型用来对前一个模型的输出结果进行纠正。Boosting算法是可以将弱学习器提升为强学习器的学习算法。

步骤:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行。直至基学习器数目达到实现指定的值n,最终将这n个基学习器进行结合。

Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低。这种算法无法并行,如Adaptive Boosting;

1. 算法原理

AdaBoost(Adaptive Boosting)是一种集成学习方法,通过多次迭代训练一系列弱学习器并加权组合,以提高分类性能。在每次迭代过程中,对错误分类的样本增加权重,使得后续的弱学习器更关注这些样本。最后,将所有弱学习器的预测结果进行加权投票,得到最终分类结果。

2.优缺点

a) 优点:
i. 可以提高模型的准确性和泛化能力。
ii. 算法简单易于实现。 iii. 不容易过拟合。
b) 缺点:
i. 对异常值和噪声敏感,可能导致性能下降。
ii. 训练过程需要依次进行,较难并行化。

3.适用场景

AdaBoost适用于以下场景:
a) 当基学习器性能较弱时,可以通过集成提高性能。
b) 适用于二分类问题,尤其是需要提高分类性能的场景。
AdaBoost在人脸检测、文本分类、客户流失预测等领域有广泛应用。

梯度提升树(Gradient Boosting Trees)
1. 算法原理

梯度提升树(GBT)是一种集成学习方法,通过多次迭代训练一系列决策树并加权组合,以提高模型性能。GBT的核心思想是在每轮迭代中拟合前一轮模型的残差,并将新拟合的树的预测结果与前一轮的预测结果相加,以逐步减小损失函数。GBT可以用于回归和分类问题。

2.优缺点

a) 优点: i. 模型性能高,可以处理高维度、非线性、复杂关系的数据。
ii. 可以自动处理缺失值,减少数据预处理工作。
iii. 可以通过特征重要性分析进行特征选择。
b) 缺点: i. 训练过程较慢,需要依次进行,较难并行化。
ii. 对超参数的选择敏感,需要进行调优。
iii. 可能产生过拟合,需要使用正则化方法和早停策略。

3.适用场景

梯度提升树适用于以下场景:
a) 需要处理高维度、非线性、复杂关系的数据。
b) 需要较高预测性能的场景。
梯度提升树在金融风控、广告点击率预测、销售预测等领域有广泛应用。

GBDT
核心思想

梯度提升决策树(Gradient Boosting Decision Tree,GBDT) 是将多个弱学习器(通常是决策树)组合成一个强大的预测模型。具体而言,GBDT的定义如下:
初始化:首先,GBDT使用一个常数(通常是目标变量的平均值)作为初始预测值。这个初始预测值代表了我们对目标变量的初始猜测。
迭代训练:GBDT是一个迭代算法,通过多轮迭代来逐步改进模型。在每一轮迭代中,GBDT都会训练一棵新的决策树,目标是减少前一轮模型的残差(或误差)。残差是实际观测值与当前模型预测值之间的差异,新的树将学习如何纠正这些残差。
集成:最终,GBDT将所有决策树的预测结果相加,得到最终的集成预测结果。这个过程使得模型能够捕捉数据中的复杂关系,从而提高了预测精度。
GBDT的核心原理在于不断迭代,每一轮迭代都尝试修正前一轮模型的错误,逐渐提高模型的预测性能。

优缺点

优点:

  1. 可以灵活处理各种类型的数据,包括连续值和离散值。
  2. 在相对少的调参时间情况下,预测的准备率也可以比较高。这个是相对SVM来说的。
    3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
  3. 很好的利用了弱分类器进行级联。
  4. 充分考虑的每个分类器的权重。
    6)不需要归一化。树模型都不需要,梯度下降算法才需要
    6)处理非线性关系

缺点:
1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
2)不适合高维稀疏特征

适用场景

GBDT 可以适用于回归问题(线性和非线性);
GBDT 也可用于二分类问题(设定阈值,大于为正,否则为负)和多分类问题。

XGBoost
1. 算法原理

XGBoost(eXtreme Gradient Boosting)是基于梯度提升(Gradient Boosting)的决策树集成学习方法。XGBoost通过加入正则化项,降低模型复杂度,提高泛化能力。同时,XGBoost采用了并行计算和近似算法,显著提高了训练速度。
XGBoost是基于GBDT 的一种改进算法;

2.优缺点

优点:
i. 高效的训练速度,支持并行计算。
ii. 高准确率,通过正则化降低过拟合风险。
iii. 支持自定义损失函数和评估指标。
iv. 内置特征重要性排序功能。
缺点:
i. 超参数调优较为复杂。
ii. 需要较多的计算资源。

3.适用场景

XGBoost在以下场景表现优异:
a) 大规模数据集。
b) 需要高准确率的分类和回归任务。
c) 特征选择。
XGBoost在Kaggle竞赛中广泛应用,获得了多次胜利。

LightGBM

LightGBM是一种基于梯度提升树的机器学习算法,它通过使用基于直方图的算法和带有按叶子节点分割的决策树来提高训练和预测的效率。

算法原理

基于直方图的算法:LightGBM使用了一种基于直方图的算法来处理数据。它将数据按特征值进行离散化,构建直方图并对其进行优化,从而减少了内存消耗和计算时间。
基于按叶子节点分割的决策树:传统的梯度提升树算法在每个节点上都尝试所有特征的切分点,而LightGBM在构建决策树时采用了按叶子节点分割的策略。这样可以减少计算量,并且更容易处理高维稀疏特征。
LightGBM也是基于GBDT的改进算法;

优缺点

优点:
高效性:LightGBM具有高效的训练和预测速度,尤其在处理大规模数据集时表现出色。
低内存消耗:由于使用了基于直方图的算法和按叶子节点分割的决策树,LightGBM能够减少内存消耗,适用于内存有限的环境。
高准确性:LightGBM通过优化算法和特征选择等方法提高了模型的准确性。
缺点:
对噪声敏感:LightGBM在处理噪声较大的数据时可能会过拟合,需要进行适当的正则化。
参数调优:LightGBM有一些需要调优的参数,不同的参数组合可能会导致不同的效果,需要进行合适的参数调优。

注意事项:
数据预处理:对数据进行清洗、缺失值处理和特征工程等预处理步骤,以提高模型的泛化能力。
参数调优:通过交叉验证等方法选择合适的参数组合,以获得更好的模型性能。
提前停止:在训练过程中使用早期停止法,避免模型过拟合。
特征重要性评估:通过分析模型输出的特征重要性,可以帮助理解数据和模型之间的关系,指导特征选择和特征工程。

总体而言,LightGBM是一种高效、低内存消耗且具有准确性的机器学习算法,在处理大规模数据集和高维稀疏特征方面具有优势。但需要注意参数调优和模型过拟合问题。

无监督

一、K-均值聚类

1. 算法原理

K-均值聚类(K-means clustering)是一种迭代的无监督学习算法,用于将数据集划分为K个簇。算法的主要思想是最小化各个簇内样本与其质心的距离之和,以达到数据聚类的目的。K-均值聚类的具体步骤如下:
a) 随机选择K个初始质心。
b) 将每个样本分配到距离其最近的质心所在的簇。
c) 更新每个簇的质心,即计算每个簇内所有样本的均值。
d) 重复步骤b和c,直到质心不再发生变化或达到最大迭代次数。

2.优缺点

优点:
a) 算法简单,易于实现和理解。
b) 计算复杂度较低,适用于大数据集。
c) 可以处理数值型数据。
缺点:
a) 需要预先指定K值,且对K值的选择敏感。
b) 对初始质心的选择敏感,可能陷入局部最优解。
c) 对噪声和异常值敏感。
d) 对于非球形簇或簇大小差异较大的情况,效果可能不佳。
e) 仅适用于数值型数据,不能直接处理离散型数据。

3.适用场景

K-均值聚类适用于以下场景:
a) 数据集中存在一定程度的自然分组,且数据分布较为均匀。
b) 数据集中的特征为数值型。
c) 需要一种简单且计算复杂度较低的聚类方法。
K-均值聚类在许多实际应用中表现出较好的性能,如市场细分、文档聚类、图像压缩等。然而,K-均值聚类对K值的选择、初始质心选择以及噪声和异常值敏感。在面临这些问题时,可以考虑使用其他聚类方法,如DBSCAN、谱聚类等。

二、主成分分析(PCA)

1. 算法原理

主成分分析(PCA,Principal Component Analysis)是一种常用的无监督线性降维方法,旨在通过线性投影将原始高维特征空间映射到低维空间,同时保留数据集中的最大方差。PCA 的主要步骤如下:
a) 对数据集进行中心化,即使数据的均值为零。
b) 计算数据集的协方差矩阵。
c) 对协方差矩阵进行特征值分解,得到特征值和特征向量。
d) 按照特征值的大小降序排列特征向量,选择前 k 个特征向量组成投影矩阵。
e) 将原始数据集乘以投影矩阵,得到降维后的数据。

2.优缺点

优点:
a) 能够减少数据的维度,降低计算复杂度。
b) 能够消除特征之间的相关性,简化模型。
c) 在降维过程中尽量保留原始数据的信息。
d) 适用于处理连续型特征。
缺点:
a) 假设数据的主要成分是线性组合,对非线性数据降维效果可能不佳。
b) 对异常值敏感,可能影响主成分的计算。
c) 仅考虑方差最大化,可能忽略其他有用的信息。
d) 不能处理离散型特征。

3.适用场景

主成分分析适用于以下场景:
a) 数据集具有较高的维度,需要降低计算复杂度。 b) 特征之间存在较强的相关性。 c) 需要简化模型,减少过拟合风险。 d) 数据集的特征为连续型。
PCA 在许多实际应用中表现出较好的性能,如图像识别、股票市场分析等。然而,PCA 对非线性数据的降维效果可能不佳,此时可以考虑使用其他降维方法,如核主成分分析(KPCA)、t-分布邻域嵌入算法(t-SNE)等。

三、密度聚类(DBSCAN)

DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。

通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,则我们就得到了最终的所有聚类类别结果。
在这里插入图片描述
在这里插入图片描述
故DBSCAN算法将簇定义为:由密度可达关系导出的最大密度相连的集合。于是,DBSCAN算法先任选数据集中的一个核心对象为种子,由此出发确定相应的聚类簇,其算法流程图如下所示:
在这里插入图片描述

优缺点

DBSCAN算法优点:
不需要事先指定聚类个数,且可以发现任意形状的聚类;
对异常点不敏感,在聚类过程中能自动识别出异常点;
聚类结果不依赖于节点的遍历顺序;

DBSCAN缺点:
对于密度不均匀,聚类间分布差异大的数据集,聚类质量变差;
样本集较大时,算法收敛时间较长;
调参较复杂,要同时考虑两个参数;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在python中关于元组的操作

创建元组 如上图所示,a()和b tuple(),,这两种方式都可以创建出元组。 在创建元组的时候,指定初始值 如上图所示,也可以在创建元组的时候,指定初始值。 同列表一样元组中的元素也可以是任意类型的。 同列…

Map深度学习

Map Map是一个键值对的集合,和object类似,Map作为构造函数,可以通过全局对象获取到。需要通过new操作创建实例对象,直接调用会报错。Map构造函数接受一个iterable类型的函数,用来初始化Map。 var m new Map([[1, &qu…

pyrouge(ROUGE-1.5.5)的安装步骤和使用说明(适用于Linux 系统)

摘要:本文讲解了如何配置和使用文本摘要的评价指标ROUGE(linux 系统)。 ✅ NLP 研 1 选手的学习笔记 简介:小王,NPU,2023级,计算机技术 研究方向:摘要生成、大语言模型生成 文章目录 一、为啥要写这篇博客&…

Redis 双写一致原理篇

前言 我们都知道,redis一般的作用是顶在mysql前面做一个"带刀侍卫"的角色,可以缓解mysql的服务压力,但是我们如何保证数据库的数据和redis缓存中的数据的双写一致呢,我们这里先说一遍流程,然后以流程为切入点来谈谈redis和mysql的双写一致性是如何保证的吧 流程 首先…

flink源码系列:RPC通信

这里写目录标题 1. 本节课目的2.开始本节内容2.1.RPC概念3.2.大数据组件常见的RPC实现技术3.3.Pekko(Akka)3.3.1. Akka、Pekko基本概念3.3.2.Pekko Demo事例3.3.2.1.PekkoData 类3.3.2.2.PekkoRpcReceiverActor类3.3.2.3.PekkoRpcSenderActor 类3.3.2.4.…

传感器展会|2024厦门传感器与应用技术展览会

传感器展会|2024厦门传感器与应用技术展览会 时间:2024年11月1-3日 地点:厦门国际会展中心 XISE EXPO展会介绍: 2024中国(厦门)国际传感器与应用技术展览会将于2024年11月1-3日在厦门国际会展中心举行&#xf…

基于标定数据将3D LiDAR点云与相机图像对齐(含C++版本代码)

这段C代码演示了如何将Velodyne激光雷达的点云数据投影到相机图像上。该过程涉及以下主要步骤: 读取并解析来自文件的标定数据,包括P2矩阵、R0_rect矩阵和Tr_velo_to_cam矩阵。这些矩阵用于将激光雷达点云从Velodyne坐标系转换到相机坐标系。从二进制文件中读取Velo…

10.1 Go Goroutine

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

解密Spring Boot:深入理解条件装配与条件注解

文章目录 一、条件装配概述1.1 条件装配的基本原理1.2 条件装配的作用 二、常用注解2.1 ConditionalOnClass2.2 ConditionalOnBean2.3 ConditionalOnProperty2.4 ConditionalOnExpression2.5 ConditionalOnMissingBean 三、条件装配的实现原理四、实际案例 一、条件装配概述 1…

SpringBoot中实现一个通用Excel导出功能

SpringBoot中实现一个通用Excel导出功能 文章目录 SpringBoot中实现一个通用Excel导出功能这个导出功能的特色看效果代码解析1、依赖2、Excel 入参(ExcelExportRequest)3、Excel 出参(ExcelExportResponse)4、ExcelExportField5、ExcelExportUtils 工具类6、ExcelHead 头部…

LeetCode1318或运算的最小翻转次数

题目描述 给你三个正整数 a、b 和 c。你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b c 成立的最小翻转次数。「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。 解析 这一题就按位依次比较就行了。取这…

【SQLAlChemy】Query函数可传入的参数有哪些?

Query 函数的使用 参数种类 一般可以传递的参数有如下三种: 模型名。指定查找这个模型的全部属性(对应于数据库查询中的全表查询)。模型中的属性。可以用来指定只查询某个模型的几个属性值。使用聚合函数。 func.count():统计行的数量。fu…

【机器学习】GPT-4中的机器学习如何塑造人类与AI的新对话

🚀时空传送门 🔍引言📕GPT-4概述🌹机器学习在GPT-4中的应用🚆文本生成与摘要🎈文献综述与知识图谱构建🚲情感分析与文本分类🚀搜索引擎优化💴智能客服与虚拟助手&#x1…

打造智慧校园信息系统,提升学校科技实力

在如今数字化的时代,打造智慧校园信息系统已成为提升学校科技实力的关键。随着科技的迅猛发展,学校需要跟上时代步伐,利用先进技术建设一个高效、智能的信息系统,为学生、教师和管理人员提供更好的学习和工作环境。 智慧校园信息系…

企业官网:过时了,但又没完全过时

作为一名互联网冲浪级选手,我经常会看到一些有趣的产品。 这两年比较让我感兴趣的产品有「飞聊」、「即刻」及其旗下的「橙 App」等等,然后我就想上它们的官网看看。 虽然现在 app 是主流,但我非常不喜欢下载 app,一是麻烦&…

数据结构与算法笔记:基础篇 - 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?

概述 上篇文章,我们学习了树、二叉树及二叉树的遍历,本章来学习一种特殊的二叉树,二叉查找树。二叉查找树最大的特点就是,支持动态数据集合的快速插入、删除、查找操作。 之前说过,散列表也是支持这些操作的&#xf…

RAG:如何从0到1搭建一个RAG应用

通过本文你可以了解到: 什么是RAG?如何搭建一个RAG应用?目前开源的RAG应用有哪些? 大模型学习参考: 1.大模型学习资料整理:大模型学习资料整理:如何从0到1学习大模型,搭建个人或企业…

67. UE5 RPG 创建法师敌人角色

我们设置的敌人类型分三种,分别时战士类型,远程射手,和法师类型。在前面,我们创建了战士和射手类型的,还没有法师类型的,在这一篇文章中,我们创建一个法师类型的角色。 在64. UE5 RPG 创建新的双…

矩阵杯2024 Re wp 前两题

1. packpy UPX壳,但不能直接脱,应该是修改了头文件(l_info) 改一下就能脱了 脱完是个elf文件 进IDA看一眼 明显的Py打包标志,用pyinstxtractor解包出来(最好用对应的python3.8) 可以得到packpy.pyc文件&a…

ROS学习记录:C++节点发布自定义地图

前言 ROS栅格地图格式 在了解了ROS地图消息包的数据结构后(链接在上),本文将编写一个节点,发布地图消息包,看看在RViz中显示是什么效果。 一、准备 1、为了简单起见,发布一个两行四列的地图 2、为了便于观测,只对地…