近年来由于对技术的高需求和进步机器学习的普及已大大增加。机器学习可以从数据中创造价值的潜力使其吸引了许多不同行业的企业。大多数机器学习产品都是使用现成的机器学习算法进行设计和实现的并且需要进行一些调整和细微更改。机器学习算法种类繁多可分为三大类监督学习算法在给定一组观察值的情况下对特征独立变量和标签目标之间的关系进行建模。然后使用该模型使用特征预测新观测的标签。根据目标变量的特性它可以是分类离散目标变量或回归连续目标变量任务。无监督学习算法试图在未标记的数据中找到结构。强化学习基于行动奖励原则。代理通过迭代计算其行为的报酬来学习达到目标。在本文中我将介绍前两类中最常见的算法。注意尽管深度学习是机器学习的一个子领域但我不会在本文中包含任何深度学习算法。我认为深度学习算法由于复杂性和动态性而应分开讨论。此外我会犹豫地使这篇文章过长使读者感到厌烦。开始吧。1、线性回归线性回归是一种有监督的学习算法它通过对数据拟合线性方程尝试对连续目标变量和一个或多个自变量之间的关系进行建模。为了使线性回归成为一个不错的选择自变量和目标变量之间必须存在线性关系。有许多工具可以探索变量之间的关系例如散点图和相关矩阵。例如下面的散点图显示了自变量x轴和因变量y轴之间的正相关。随着一个增加另一个也增加。线性回归模型试图使回归线适合最能表示关系或相关性的数据点。最常用的技术是普通最小二乘OLE。使用此方法可以通过最小化数据点和回归线之间距离的平方和来找到最佳回归线。对于上面的数据点使用OLE获得的回归线看起来像2、支持向量机支持向量机SVM是一种监督学习算法主要用于分类任务但也适用于回归任务。SVM通过绘制决策边界来区分类。如何绘制或确定决策边界是SVM算法中最关键的部分。在创建决策边界之前将每个观察值或数据点绘制在n维空间中。 n是所使用功能的数量。例如如果我们使用长度和宽度对不同的单元格进行分类则观察结果将绘制在二维空间中并且决策边界为一条线。如果我们使用3个要素则决策边界是3维空间中的平面。如果我们使用3个以上的特征则决策边界将变成一个很难可视化的超平面。 Decision boundary in 2D space is a line决策边界以与支持向量的距离最大的方式绘制。如果决策边界距离支持向量太近它将对噪声高度敏感并且不能很好地泛化。即使自变量的很小变化也可能导致分类错误。数据点并非总是如上图所示线性可分离。在这些情况下SVM使用内核技巧来测量较高维空间中数据点的相似性或接近度以使它们线性可分离。内核功能是一种相似性度量。输入是原始要素输出是新要素空间中的相似性度量。这里的相似度表示紧密度。实际上将数据点转换为高维特征空间是一项昂贵的操作。该算法实际上并未将数据点转换为新的高维特征空间。内核化SVM无需实际进行变换就可以根据高维特征空间中的相似性度量来计算决策边界。我认为这就是为什么它也称为内核技巧。在维数大于样本数的情况下SVM特别有效。找到决策边界时SVM使用训练点的子集而不是所有点从而提高了存储效率。另一方面大型数据集的训练时间会增加这会对性能产生负面影响。3、朴素贝叶斯朴素贝叶斯是一种用于分类任务的监督学习算法。因此它也被称为朴素贝叶斯分类器。朴素贝叶斯假设要素彼此独立要素之间没有关联。但是现实生活中并非如此。特征不相关的这种天真假设是将该算法称为天真的原因。朴素贝叶斯算法的直觉是贝叶斯定理pA | B给定事件B发生事件A的概率pB | A给定事件A事件B的概率pA事件A的概率pB事件B的概率朴素贝叶斯分类器在给定一组特征值即pyi | x1x2…xn的情况下计算类的概率。将其输入贝叶斯定理px1x2…xn | yi表示给定类别标签的特定特征组合数据集中的观察值/行的概率。我们需要非常大的数据集来估计特征值所有不同组合的概率分布。为了克服这个问题朴素贝叶斯算法假定所有特征彼此独立。此外可以删除分母px1x2…xn因为它仅对给定观测值pyi | x1x2…xn的一类条件概率的值进行归一化 。类pyi的概率很容易计算在特征是独立的假设下px1x2…xn | yi可以写成给定类别标签即px1 | yi的单个特征的条件概率可以从数据中轻松估算。该算法需要为每个类别独立存储特征的概率分布。例如如果有5个类别和10个特征则需要存储50个不同的概率分布。将所有这些加在一起对于朴素贝叶斯算法来说计算给定特征值pyi | x1x2…xn观察类的概率变得容易。与复杂算法相比所有特征都是独立的这一假设使朴素贝叶斯算法非常快。在某些情况下速度比精度更高。另一方面相同的假设使朴素贝叶斯算法不如复杂算法准确。速度是有代价的4、Logistic回归逻辑回归是一种监督学习算法主要用于二进制分类问题。尽管回归与分类相矛盾但是这里的重点是逻辑一词指的是在该算法中执行分类任务的逻辑函数。逻辑回归是一种简单但非常有效的分类算法因此通常用于许多二进制分类任务。客户流失垃圾邮件网站或广告点击预测是逻辑回归提供强大解决方案的一些示例。逻辑回归的基础是逻辑函数也称为Sigmoid函数该函数可以接受任何实数值并将其映射到0到1之间的一个值。考虑我们有以下线性方程式可以解决Logistic回归模型将线性方程式作为输入并使用logistic函数和对数赔率执行二进制分类任务。然后我们将得到著名的逻辑回归形图我们可以按原样使用计算出的概率。例如输出可以是此电子邮件为垃圾邮件的概率为95或客户点击此广告的概率为70。但是在大多数情况下概率用于对数据点进行分类。例如如果概率大于50则预测为肯定类别1。否则预测为否定等级0。对于所有高于50的概率值并不总是希望选择肯定的类别。关于垃圾邮件案例我们几乎必须确定要将电子邮件归类为垃圾邮件。由于检测为垃圾邮件的电子邮件直接进入垃圾邮件文件夹因此我们不希望用户错过重要的电子邮件。除非我们几乎确定否则电子邮件不会被归类为垃圾邮件。另一方面在与健康相关的问题中进行分类时要求我们更加敏感。即使我们有点怀疑细胞是恶性的我们也不想错过它。因此用作正面和负面类别之间阈值的值取决于问题。很好的是逻辑回归使我们可以调整此阈值。5、K最近邻居kNNK最近邻kNN是一种监督学习算法可用于解决分类和回归任务。kNN背后的主要思想是数据点的值或类由其周围的数据点确定。kNN分类器通过多数投票原则确定数据点的类别。例如如果k设置为5则检查5个最接近点的类别。根据多数类别进行预测。同样kNN回归采用5个最接近点的平均值。让我们来看一个例子。考虑以下属于4个不同类别的数据点让我们看看预测的类别如何根据k值变化确定最佳k值非常重要。如果k太低则模型太具体不能很好地概括。它还倾向于对噪声敏感。该模型在火车上实现了很高的准确性但是对于新的以前看不见的数据点而言它的预测能力很差。因此我们很可能最终会得出过拟合模型。另一方面如果k太大则模型过于笼统在训练集和测试集上都不是很好的预测指标。这种情况称为欠拟合。kNN简单易懂。它没有做任何假设因此可以在非线性任务中实现。随着数据点数量的增加kNN变得非常慢因为模型需要存储所有数据点。因此它也不是有效的存储器。kNN的另一个缺点是它对异常值敏感。6、决策树决策树建立在反复询问问题以对数据进行分区的基础上。使用决策树的可视化表示来更容易地概念化分区数据这代表了预测客户流失的决策树。第一次划分是基于每月的费用金额。然后算法不断询问问题以分离类标签。随着树的深入问题变得更加具体。决策树算法的目的是在每个分区尽可能多地提高预测性以便模型不断获取有关数据集的信息。随机分割要素通常不能使我们深入了解数据集。增加节点纯度的拆分更具参考价值。节点的纯度与该节点中不同类别的分布成反比。要提出的问题以提高纯度或减少杂质的方式选择。我们问多少个问题我们什么时候停止我们的树什么时候足以解决我们的分类问题对所有这些问题的答案使我们想到了机器学习中最重要的概念之一过度拟合。该模型可以一直询问问题直到所有节点都纯为止。但是这将是一个过于具体的模型不能很好地推广。它通过训练集可以达到很高的精度但是在新的以前看不见的数据点上表现不佳这表明过拟合。scikit-learn中决策树算法的树深度由max_depth参数控制。决策树算法通常不需要规范化或缩放特征。它还适用于混合特征数据类型连续分类二进制。不利的一面是它很容易过度拟合因此必须进行汇总才能很好地概括。7、随机森林随机森林是许多决策树的集合。随机森林是使用称为装袋的方法构建的其中决策树用作并行估计器。如果用于分类问题则结果基于从每个决策树收到的结果的多数票。对于回归叶节点的预测是该叶中目标值的平均值。随机森林回归采用决策树结果的平均值。随机森林减少了过度拟合的风险准确性比单个决策树高得多。此外随机森林中的决策树并行运行因此时间不会成为瓶颈。随机森林的成功很大程度上取决于使用不相关的决策树。如果我们使用相同或非常相似的树则总体结果将与单个决策树的结果相差无几。随机森林通过自举和特征随机性来实现具有不相关的决策树。自举是从训练数据中随机选择样本进行替换。它们称为引导程序样本。 Bootstrap samples (Figure source)通过为随机森林中的每个决策树随机选择特征来实现特征随机性。可以使用max_features参数控制随机森林中每棵树使用的特征数量。 Feature randomness随机森林是针对许多不同问题的高度精确的模型不需要规范化或缩放。但是与快速线性模型即朴素贝叶斯相比对于高维数据集即文本分类而言这不是一个好选择。8、梯度提升决策树GBDTGBDT是一种集成算法使用提升方法来组合各个决策树。提升意味着将一系列学习算法串联起来以从许多顺序连接的弱学习者那里获得一个强学习者。对于GBDT弱学习者是决策树。每棵树都试图最小化前一棵树的错误。Boosting中的树是学习能力较弱的树但是连续添加许多树每棵树都专注于前一棵树的错误因此可以构建一个高效且准确的模型。与装袋不同加强不涉及自举采样。每次添加新树时它都适合初始数据集的修改版本。由于树是顺序添加的因此增强算法学习缓慢。在统计学习中学习缓慢的模型表现更好。损失函数用于检测残差。例如均方误差MSE可用于回归任务对数损失对数损失可用于分类任务。值得注意的是添加新树后模型中的现有树不会更改。添加的决策树适合当前模型的残差。学习速率和n_estimator是用于梯度提升决策树的两个关键超参数。学习率表示为α仅表示模型学习的速度。每棵新树都会修改整个模型。修改的大小由学习率控制。n_estimator是模型中使用的树数。如果学习率低我们需要更多的树来训练模型。但是我们在选择树数时需要非常小心。使用过多树木会产生过度拟合的高风险。与随机森林相比GBDT在分类和回归任务上都非常有效并且提供了更准确的预测。它可以处理混合类型的功能不需要预处理。GBDT需要仔细调整超参数以防止模型过度拟合。GBDT算法是如此强大以至于已经实现了许多升级版本例如XGBOOSTLightGBMCatBoost。关于过度拟合的注意事项随机森林和梯度增强决策树之间的一个关键区别是模型中使用的树数。增加随机森林中的树木数量不会导致过度拟合。在某一点之后模型的准确性不会因添加更多树而增加但也不会因添加过多树而受到负面影响。由于计算原因您仍然不想添加不必要的树但是不存在与随机森林中的树数相关联的过拟合风险。但是就过度拟合而言梯度增强决策树中的树数非常关键。添加过多的树会导致过拟合因此一定要停止添加树这一点很重要。9、K-均值聚类聚类是一种将一组数据点组合在一起的方式即将相似的数据点组合在一起。因此聚类算法在数据点之间寻找相似性或相异性。聚类是一种无监督的学习方法因此没有与数据点相关的标签。聚类算法试图找到数据的底层结构。聚类不是分类。分类任务中的观测值或数据点具有标签。每个观察结果根据一些测量结果进行分类。分类算法尝试对观测值的度量特征与其指定的类别之间的关系建模。然后模型预测新观测的类别。K-均值聚类旨在将数据分为k个聚类以使同一聚类中的数据点相似而不同聚类中的数据点相距更远。因此这是一种基于分区的群集技术。两个点的相似性取决于它们之间的距离。K-均值聚类试图使聚类内的距离最小化并使不同聚类之间的距离最大化。K-均值算法无法确定簇数。创建KMeans对象时我们需要对其进行定义这可能是一项艰巨的任务。考虑以下数据集的2D可视化可以将其划分为4个不同的群集如下所示现实生活中的数据集要复杂得多在这些数据集中聚类没有明显分开。但是该算法以相同的方式工作。K均值是一个迭代过程。它基于期望最大化算法。确定群集数量后它可以通过执行以下步骤来工作为每个群集随机选择形心群集的中心。计算所有数据点到质心的距离。将数据点分配给最近的群集。通过获取群集中所有数据点的平均值找到每个群集的新质心。重复步骤23和4直到所有点收敛并且聚类中心停止移动。K-Means聚类相对快速且易于解释。它还能够以智能方式选择初始质心的位置从而加快收敛速度。k均值的挑战之一是必须预先确定簇的数量。K-means算法无法猜测数据中存在多少个簇。如果存在将数据中的组分开的非线性结构则k均值将不是一个好的选择。10、层次聚类分层聚类意味着通过迭代分组或分离数据点来创建聚类树。有两种类型的层次结构聚类聚集聚类分裂聚类分层聚类的优点之一是我们不必指定聚类的数量但可以。聚集聚类是一种自下而上的方法。首先假定每个数据点都是一个单独的群集。然后将相似的群集进行迭代组合。上图称为树状图该图表示基于树的方法。在分层聚类中树状图用于可视化聚类之间的关系。分层聚类的优点之一是我们不必预先指定聚类的数量。但是将所有数据点组合到一个群集中是不明智的。我们应该在某个时候停止合并集群。Scikit-learn为此提供了两个选项在达到多个群集后停止n_clusters设置链接的阈值distance_threshold。如果两个群集之间的距离高于阈值则这些群集将不会合并。分裂聚类在现实生活中并不常用因此我将简要介绍一下。简单而清晰的解释是分裂聚类与聚集聚类相反。我们从一个包含所有数据点的巨型群集开始。然后将数据点分为不同的群集。这是自下而上的方法。层次集群总是生成相同的集群。K-均值聚类可能会导致不同的聚类具体取决于质心聚类中心的启动方式。但是与k均值相比它是一种较慢的算法。分层群集需要很长时间才能运行尤其是对于大型数据集。11、DBSCAN集群基于分区的分层聚类技术对于标准形状的聚类非常高效。但是当涉及到任意形状的聚类或检测离群值时基于密度的技术更为有效。 Arbitrary shaped clusters Arbitrary shaped clustersDBSCAN代表带噪声的应用程序的基于密度的空间聚类。它能够找到任意形状的聚类和带有噪声的聚类即离群值。DBSCAN的主要思想是如果某个点与该簇中的许多点接近则该点属于该簇。DBSCAN有两个关键参数eps指定邻域的距离。如果两个点之间的距离小于或等于eps则将其视为邻居。minPts定义集群的最小数据点数。根据这两个参数将点分为核心点边界点或离群值核心点如果在其半径为eps的周围区域中至少有minPts个点包括该点本身则该点为核心点。边界点如果一个点可以从核心点到达并且在其周围区域内的点数少于minPts则它是边界点。离群值如果一个点不是核心点并且无法从任何核心点到达则该点就是离群值。DBSCAN不需要预先指定群集数。它对异常值具有鲁棒性并且能够检测到异常值。在某些情况下确定适当的邻域eps距离并不容易并且需要领域知识。12、主成分分析PCAPCA是降维算法它基本上从现有特征中衍生出新特征同时保留了尽可能多的信息。PCA是一种无监督的学习算法但它也广泛用作有监督的学习算法的预处理步骤。PCA通过查找数据集中要素之间的关系来推导新要素。注意PCA是线性降维算法。也有非线性方法可用。PCA的目的是通过使用较少的特征或列来尽可能多地解释原始数据集中的方差。新派生的功能称为主成分。主成分的顺序是根据它们解释的原始数据集的方差分数确定的。主要成分是原始数据集特征的线性组合。PCA的优势在于使用比原始数据集少得多的特征可以保留大量原始数据集。主成分根据其解释的差异量进行排序。CSDN粉丝独家福利这份完整版的 AI系统资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取 【保证100%免费】
12种最常见的机器学习算法简介
发布时间:2026/5/31 4:40:37
近年来由于对技术的高需求和进步机器学习的普及已大大增加。机器学习可以从数据中创造价值的潜力使其吸引了许多不同行业的企业。大多数机器学习产品都是使用现成的机器学习算法进行设计和实现的并且需要进行一些调整和细微更改。机器学习算法种类繁多可分为三大类监督学习算法在给定一组观察值的情况下对特征独立变量和标签目标之间的关系进行建模。然后使用该模型使用特征预测新观测的标签。根据目标变量的特性它可以是分类离散目标变量或回归连续目标变量任务。无监督学习算法试图在未标记的数据中找到结构。强化学习基于行动奖励原则。代理通过迭代计算其行为的报酬来学习达到目标。在本文中我将介绍前两类中最常见的算法。注意尽管深度学习是机器学习的一个子领域但我不会在本文中包含任何深度学习算法。我认为深度学习算法由于复杂性和动态性而应分开讨论。此外我会犹豫地使这篇文章过长使读者感到厌烦。开始吧。1、线性回归线性回归是一种有监督的学习算法它通过对数据拟合线性方程尝试对连续目标变量和一个或多个自变量之间的关系进行建模。为了使线性回归成为一个不错的选择自变量和目标变量之间必须存在线性关系。有许多工具可以探索变量之间的关系例如散点图和相关矩阵。例如下面的散点图显示了自变量x轴和因变量y轴之间的正相关。随着一个增加另一个也增加。线性回归模型试图使回归线适合最能表示关系或相关性的数据点。最常用的技术是普通最小二乘OLE。使用此方法可以通过最小化数据点和回归线之间距离的平方和来找到最佳回归线。对于上面的数据点使用OLE获得的回归线看起来像2、支持向量机支持向量机SVM是一种监督学习算法主要用于分类任务但也适用于回归任务。SVM通过绘制决策边界来区分类。如何绘制或确定决策边界是SVM算法中最关键的部分。在创建决策边界之前将每个观察值或数据点绘制在n维空间中。 n是所使用功能的数量。例如如果我们使用长度和宽度对不同的单元格进行分类则观察结果将绘制在二维空间中并且决策边界为一条线。如果我们使用3个要素则决策边界是3维空间中的平面。如果我们使用3个以上的特征则决策边界将变成一个很难可视化的超平面。 Decision boundary in 2D space is a line决策边界以与支持向量的距离最大的方式绘制。如果决策边界距离支持向量太近它将对噪声高度敏感并且不能很好地泛化。即使自变量的很小变化也可能导致分类错误。数据点并非总是如上图所示线性可分离。在这些情况下SVM使用内核技巧来测量较高维空间中数据点的相似性或接近度以使它们线性可分离。内核功能是一种相似性度量。输入是原始要素输出是新要素空间中的相似性度量。这里的相似度表示紧密度。实际上将数据点转换为高维特征空间是一项昂贵的操作。该算法实际上并未将数据点转换为新的高维特征空间。内核化SVM无需实际进行变换就可以根据高维特征空间中的相似性度量来计算决策边界。我认为这就是为什么它也称为内核技巧。在维数大于样本数的情况下SVM特别有效。找到决策边界时SVM使用训练点的子集而不是所有点从而提高了存储效率。另一方面大型数据集的训练时间会增加这会对性能产生负面影响。3、朴素贝叶斯朴素贝叶斯是一种用于分类任务的监督学习算法。因此它也被称为朴素贝叶斯分类器。朴素贝叶斯假设要素彼此独立要素之间没有关联。但是现实生活中并非如此。特征不相关的这种天真假设是将该算法称为天真的原因。朴素贝叶斯算法的直觉是贝叶斯定理pA | B给定事件B发生事件A的概率pB | A给定事件A事件B的概率pA事件A的概率pB事件B的概率朴素贝叶斯分类器在给定一组特征值即pyi | x1x2…xn的情况下计算类的概率。将其输入贝叶斯定理px1x2…xn | yi表示给定类别标签的特定特征组合数据集中的观察值/行的概率。我们需要非常大的数据集来估计特征值所有不同组合的概率分布。为了克服这个问题朴素贝叶斯算法假定所有特征彼此独立。此外可以删除分母px1x2…xn因为它仅对给定观测值pyi | x1x2…xn的一类条件概率的值进行归一化 。类pyi的概率很容易计算在特征是独立的假设下px1x2…xn | yi可以写成给定类别标签即px1 | yi的单个特征的条件概率可以从数据中轻松估算。该算法需要为每个类别独立存储特征的概率分布。例如如果有5个类别和10个特征则需要存储50个不同的概率分布。将所有这些加在一起对于朴素贝叶斯算法来说计算给定特征值pyi | x1x2…xn观察类的概率变得容易。与复杂算法相比所有特征都是独立的这一假设使朴素贝叶斯算法非常快。在某些情况下速度比精度更高。另一方面相同的假设使朴素贝叶斯算法不如复杂算法准确。速度是有代价的4、Logistic回归逻辑回归是一种监督学习算法主要用于二进制分类问题。尽管回归与分类相矛盾但是这里的重点是逻辑一词指的是在该算法中执行分类任务的逻辑函数。逻辑回归是一种简单但非常有效的分类算法因此通常用于许多二进制分类任务。客户流失垃圾邮件网站或广告点击预测是逻辑回归提供强大解决方案的一些示例。逻辑回归的基础是逻辑函数也称为Sigmoid函数该函数可以接受任何实数值并将其映射到0到1之间的一个值。考虑我们有以下线性方程式可以解决Logistic回归模型将线性方程式作为输入并使用logistic函数和对数赔率执行二进制分类任务。然后我们将得到著名的逻辑回归形图我们可以按原样使用计算出的概率。例如输出可以是此电子邮件为垃圾邮件的概率为95或客户点击此广告的概率为70。但是在大多数情况下概率用于对数据点进行分类。例如如果概率大于50则预测为肯定类别1。否则预测为否定等级0。对于所有高于50的概率值并不总是希望选择肯定的类别。关于垃圾邮件案例我们几乎必须确定要将电子邮件归类为垃圾邮件。由于检测为垃圾邮件的电子邮件直接进入垃圾邮件文件夹因此我们不希望用户错过重要的电子邮件。除非我们几乎确定否则电子邮件不会被归类为垃圾邮件。另一方面在与健康相关的问题中进行分类时要求我们更加敏感。即使我们有点怀疑细胞是恶性的我们也不想错过它。因此用作正面和负面类别之间阈值的值取决于问题。很好的是逻辑回归使我们可以调整此阈值。5、K最近邻居kNNK最近邻kNN是一种监督学习算法可用于解决分类和回归任务。kNN背后的主要思想是数据点的值或类由其周围的数据点确定。kNN分类器通过多数投票原则确定数据点的类别。例如如果k设置为5则检查5个最接近点的类别。根据多数类别进行预测。同样kNN回归采用5个最接近点的平均值。让我们来看一个例子。考虑以下属于4个不同类别的数据点让我们看看预测的类别如何根据k值变化确定最佳k值非常重要。如果k太低则模型太具体不能很好地概括。它还倾向于对噪声敏感。该模型在火车上实现了很高的准确性但是对于新的以前看不见的数据点而言它的预测能力很差。因此我们很可能最终会得出过拟合模型。另一方面如果k太大则模型过于笼统在训练集和测试集上都不是很好的预测指标。这种情况称为欠拟合。kNN简单易懂。它没有做任何假设因此可以在非线性任务中实现。随着数据点数量的增加kNN变得非常慢因为模型需要存储所有数据点。因此它也不是有效的存储器。kNN的另一个缺点是它对异常值敏感。6、决策树决策树建立在反复询问问题以对数据进行分区的基础上。使用决策树的可视化表示来更容易地概念化分区数据这代表了预测客户流失的决策树。第一次划分是基于每月的费用金额。然后算法不断询问问题以分离类标签。随着树的深入问题变得更加具体。决策树算法的目的是在每个分区尽可能多地提高预测性以便模型不断获取有关数据集的信息。随机分割要素通常不能使我们深入了解数据集。增加节点纯度的拆分更具参考价值。节点的纯度与该节点中不同类别的分布成反比。要提出的问题以提高纯度或减少杂质的方式选择。我们问多少个问题我们什么时候停止我们的树什么时候足以解决我们的分类问题对所有这些问题的答案使我们想到了机器学习中最重要的概念之一过度拟合。该模型可以一直询问问题直到所有节点都纯为止。但是这将是一个过于具体的模型不能很好地推广。它通过训练集可以达到很高的精度但是在新的以前看不见的数据点上表现不佳这表明过拟合。scikit-learn中决策树算法的树深度由max_depth参数控制。决策树算法通常不需要规范化或缩放特征。它还适用于混合特征数据类型连续分类二进制。不利的一面是它很容易过度拟合因此必须进行汇总才能很好地概括。7、随机森林随机森林是许多决策树的集合。随机森林是使用称为装袋的方法构建的其中决策树用作并行估计器。如果用于分类问题则结果基于从每个决策树收到的结果的多数票。对于回归叶节点的预测是该叶中目标值的平均值。随机森林回归采用决策树结果的平均值。随机森林减少了过度拟合的风险准确性比单个决策树高得多。此外随机森林中的决策树并行运行因此时间不会成为瓶颈。随机森林的成功很大程度上取决于使用不相关的决策树。如果我们使用相同或非常相似的树则总体结果将与单个决策树的结果相差无几。随机森林通过自举和特征随机性来实现具有不相关的决策树。自举是从训练数据中随机选择样本进行替换。它们称为引导程序样本。 Bootstrap samples (Figure source)通过为随机森林中的每个决策树随机选择特征来实现特征随机性。可以使用max_features参数控制随机森林中每棵树使用的特征数量。 Feature randomness随机森林是针对许多不同问题的高度精确的模型不需要规范化或缩放。但是与快速线性模型即朴素贝叶斯相比对于高维数据集即文本分类而言这不是一个好选择。8、梯度提升决策树GBDTGBDT是一种集成算法使用提升方法来组合各个决策树。提升意味着将一系列学习算法串联起来以从许多顺序连接的弱学习者那里获得一个强学习者。对于GBDT弱学习者是决策树。每棵树都试图最小化前一棵树的错误。Boosting中的树是学习能力较弱的树但是连续添加许多树每棵树都专注于前一棵树的错误因此可以构建一个高效且准确的模型。与装袋不同加强不涉及自举采样。每次添加新树时它都适合初始数据集的修改版本。由于树是顺序添加的因此增强算法学习缓慢。在统计学习中学习缓慢的模型表现更好。损失函数用于检测残差。例如均方误差MSE可用于回归任务对数损失对数损失可用于分类任务。值得注意的是添加新树后模型中的现有树不会更改。添加的决策树适合当前模型的残差。学习速率和n_estimator是用于梯度提升决策树的两个关键超参数。学习率表示为α仅表示模型学习的速度。每棵新树都会修改整个模型。修改的大小由学习率控制。n_estimator是模型中使用的树数。如果学习率低我们需要更多的树来训练模型。但是我们在选择树数时需要非常小心。使用过多树木会产生过度拟合的高风险。与随机森林相比GBDT在分类和回归任务上都非常有效并且提供了更准确的预测。它可以处理混合类型的功能不需要预处理。GBDT需要仔细调整超参数以防止模型过度拟合。GBDT算法是如此强大以至于已经实现了许多升级版本例如XGBOOSTLightGBMCatBoost。关于过度拟合的注意事项随机森林和梯度增强决策树之间的一个关键区别是模型中使用的树数。增加随机森林中的树木数量不会导致过度拟合。在某一点之后模型的准确性不会因添加更多树而增加但也不会因添加过多树而受到负面影响。由于计算原因您仍然不想添加不必要的树但是不存在与随机森林中的树数相关联的过拟合风险。但是就过度拟合而言梯度增强决策树中的树数非常关键。添加过多的树会导致过拟合因此一定要停止添加树这一点很重要。9、K-均值聚类聚类是一种将一组数据点组合在一起的方式即将相似的数据点组合在一起。因此聚类算法在数据点之间寻找相似性或相异性。聚类是一种无监督的学习方法因此没有与数据点相关的标签。聚类算法试图找到数据的底层结构。聚类不是分类。分类任务中的观测值或数据点具有标签。每个观察结果根据一些测量结果进行分类。分类算法尝试对观测值的度量特征与其指定的类别之间的关系建模。然后模型预测新观测的类别。K-均值聚类旨在将数据分为k个聚类以使同一聚类中的数据点相似而不同聚类中的数据点相距更远。因此这是一种基于分区的群集技术。两个点的相似性取决于它们之间的距离。K-均值聚类试图使聚类内的距离最小化并使不同聚类之间的距离最大化。K-均值算法无法确定簇数。创建KMeans对象时我们需要对其进行定义这可能是一项艰巨的任务。考虑以下数据集的2D可视化可以将其划分为4个不同的群集如下所示现实生活中的数据集要复杂得多在这些数据集中聚类没有明显分开。但是该算法以相同的方式工作。K均值是一个迭代过程。它基于期望最大化算法。确定群集数量后它可以通过执行以下步骤来工作为每个群集随机选择形心群集的中心。计算所有数据点到质心的距离。将数据点分配给最近的群集。通过获取群集中所有数据点的平均值找到每个群集的新质心。重复步骤23和4直到所有点收敛并且聚类中心停止移动。K-Means聚类相对快速且易于解释。它还能够以智能方式选择初始质心的位置从而加快收敛速度。k均值的挑战之一是必须预先确定簇的数量。K-means算法无法猜测数据中存在多少个簇。如果存在将数据中的组分开的非线性结构则k均值将不是一个好的选择。10、层次聚类分层聚类意味着通过迭代分组或分离数据点来创建聚类树。有两种类型的层次结构聚类聚集聚类分裂聚类分层聚类的优点之一是我们不必指定聚类的数量但可以。聚集聚类是一种自下而上的方法。首先假定每个数据点都是一个单独的群集。然后将相似的群集进行迭代组合。上图称为树状图该图表示基于树的方法。在分层聚类中树状图用于可视化聚类之间的关系。分层聚类的优点之一是我们不必预先指定聚类的数量。但是将所有数据点组合到一个群集中是不明智的。我们应该在某个时候停止合并集群。Scikit-learn为此提供了两个选项在达到多个群集后停止n_clusters设置链接的阈值distance_threshold。如果两个群集之间的距离高于阈值则这些群集将不会合并。分裂聚类在现实生活中并不常用因此我将简要介绍一下。简单而清晰的解释是分裂聚类与聚集聚类相反。我们从一个包含所有数据点的巨型群集开始。然后将数据点分为不同的群集。这是自下而上的方法。层次集群总是生成相同的集群。K-均值聚类可能会导致不同的聚类具体取决于质心聚类中心的启动方式。但是与k均值相比它是一种较慢的算法。分层群集需要很长时间才能运行尤其是对于大型数据集。11、DBSCAN集群基于分区的分层聚类技术对于标准形状的聚类非常高效。但是当涉及到任意形状的聚类或检测离群值时基于密度的技术更为有效。 Arbitrary shaped clusters Arbitrary shaped clustersDBSCAN代表带噪声的应用程序的基于密度的空间聚类。它能够找到任意形状的聚类和带有噪声的聚类即离群值。DBSCAN的主要思想是如果某个点与该簇中的许多点接近则该点属于该簇。DBSCAN有两个关键参数eps指定邻域的距离。如果两个点之间的距离小于或等于eps则将其视为邻居。minPts定义集群的最小数据点数。根据这两个参数将点分为核心点边界点或离群值核心点如果在其半径为eps的周围区域中至少有minPts个点包括该点本身则该点为核心点。边界点如果一个点可以从核心点到达并且在其周围区域内的点数少于minPts则它是边界点。离群值如果一个点不是核心点并且无法从任何核心点到达则该点就是离群值。DBSCAN不需要预先指定群集数。它对异常值具有鲁棒性并且能够检测到异常值。在某些情况下确定适当的邻域eps距离并不容易并且需要领域知识。12、主成分分析PCAPCA是降维算法它基本上从现有特征中衍生出新特征同时保留了尽可能多的信息。PCA是一种无监督的学习算法但它也广泛用作有监督的学习算法的预处理步骤。PCA通过查找数据集中要素之间的关系来推导新要素。注意PCA是线性降维算法。也有非线性方法可用。PCA的目的是通过使用较少的特征或列来尽可能多地解释原始数据集中的方差。新派生的功能称为主成分。主成分的顺序是根据它们解释的原始数据集的方差分数确定的。主要成分是原始数据集特征的线性组合。PCA的优势在于使用比原始数据集少得多的特征可以保留大量原始数据集。主成分根据其解释的差异量进行排序。CSDN粉丝独家福利这份完整版的 AI系统资料已经上传CSDN朋友们如果需要可以扫描下方二维码点击下方CSDN官方认证链接免费领取 【保证100%免费】