一文了解11种最常见的机器学习算法应用场景AI.xAIGC专属社区

近年来,机器学习的普及率急剧上升。机器学习从数据中创造价值的潜力使其对许多不同行业的企业都具有吸引力。大多数机器学习产品都是使用现成的机器学习算法设计和实现的,并进行了一些调整和微小的改动。

机器学习算法种类繁多,可分为三大类:

线性回归是一种监督学习算法,它试图通过对数据拟合线性方程来模拟连续目标变量与一个或多个自变量之间的关系。

支持向量机(SVM)是一种监督学习算法,主要用于分类任务,但也适用于回归任务。

SVM通过绘制决策边界来区分类别。如何绘制或确定决策边界是支持向量机算法中最关键的部分。在创建决策边界之前,每个观察值(或数据点)都绘制在n维空间中。“n”是使用的特征数。例如,如果我们使用“长度”和“宽度”对不同的“细胞”进行分类,则观察结果绘制在二维空间中,决策边界是一条线。如果我们使用3个特征,则决策边界是3维空间中的一个平面。如果我们使用超过3个特征,决策边界就会变成一个很难可视化的超平面。

决策边界以支持向量的距离最大化的方式绘制。如果决策边界太靠近支持向量,它将对噪声高度敏感并且不能很好地泛化。自变量即使非常小的变化也可能导致错误分类。

数据点并不总是像上图那样线性可分。在这些情况下,支持向量机使用内核技巧来测量高维空间中数据点的相似性(或接近度),以使它们线性可分。

核函数是一种相似性度量。输入是原始特征,输出是新特征空间中的相似性度量。这里的相似意味着某种程度的接近。将数据点实际转换到高维特征空间是一项代价高昂的操作。该算法实际上并没有将数据点转换到一个新的高维特征空间。核化SVM根据高维特征空间中的相似性度量计算决策边界,而无需实际进行转换。我认为这就是为什么它也被称为kerneltrick的原因。

朴素贝叶斯是一种用于分类任务的监督学习算法。因此,它也被称为朴素贝叶斯分类器。

朴素贝叶斯算法背后的直觉是贝叶斯定理:

p(A|B):事件A给定事件B已经发生的概率

p(B|A):给定事件A已经发生的事件B的概率

p(A):事件A的概率

p(B):事件B的概率

朴素贝叶斯分类器计算给定一组特征值(即p(yi|x1,x2,…,xn))的类的概率。将其输入贝叶斯定理:

p(x1,x2,…,xn|yi)表示给定类别标签的特定特征组合(数据集中的观察/行)的概率。我们需要非常大的数据集来估计所有不同特征值组合的概率分布。为了克服这个问题,朴素贝叶斯算法假设所有特征都是相互独立的。此外,可以删除分母(p(x1,x2,…,xn))以简化等式,因为它仅归一化给定观察值的类的条件概率值(p(yi|x1,x2,…,xn)).

类别的概率(p(yi))计算起来非常简单:

在特征独立的假设下,p(x1,x2,…,xn|yi)可以写成:

给定类标签(即p(x1|yi))的单个特征的条件概率可以更容易地从数据中估计。该算法需要独立存储每个类别的特征概率分布。例如,如果有5个类别和10个特征,则需要存储50个不同的概率分布。

将所有这些加起来,对于朴素贝叶斯算法来说,计算观察给定特征值的类的概率成为一项简单的任务(p(yi|x1,x2,...,xn))

所有特征都是独立的假设使得朴素贝叶斯算法与复杂算法相比非常快。在某些情况下,速度比更高的精度更受欢迎。另一方面,同样的假设使得朴素贝叶斯算法不如复杂算法准确。速度是有代价的!

逻辑回归的基础是逻辑函数,也称为sigmoid函数,它接受任何实数值并将其映射到0到1之间的值。

考虑我们要求解以下线性方程:

逻辑回归模型以线性方程为输入,使用逻辑函数和对数概率来执行二元分类任务。然后,我们将得到著名的逻辑回归s形图:

K最近邻(kNN)是一种监督学习算法,可用于解决分类和回归任务。kNN背后的主要思想是数据点的值或类别由它周围的数据点决定。

kNN分类器通过多数表决原则确定数据点的类别。例如,如果k设置为5,则检查5个最近点的类别。预测是根据多数类进行的。同样,kNN回归取5个最近点的平均值。让我们来看一个例子。考虑以下属于4个不同类别的数据点:

让我们看看预测的类别如何根据k值变化:

确定最佳k值非常重要。如果k太低,则模型太具体并且不能很好地泛化。它也往往对噪音敏感。该模型在训练集上实现了高精度,但对新的、以前未见过的数据点的预测效果不佳。因此,我们很可能会得到一个过度拟合的模型。另一方面,如果k太大,则模型过于泛化,在训练集和测试集上都不是一个好的预测器。这种情况称为欠拟合。

kNN简单易懂。它不做任何假设,因此可以在非线性任务中实现。随着数据点数量的增加,kNN变得非常慢,因为模型需要存储所有数据点。因此,它的内存效率也不高。kNN的另一个缺点是它对异常值很敏感。

决策树建立在反复提出问题以划分数据的基础上。使用决策树的可视化表示更容易概念化分区数据:

这表示用于预测客户流失的决策树。第一个拆分是基于每月的费用金额。然后该算法不断提出问题以分离类别标签。随着树变得更深,问题变得更加具体。

决策树算法的目的是在每次分区时尽可能增加预测能力,以便模型不断获取有关数据集的信息。随机拆分特征通常不会给我们提供对数据集有价值的洞察力。增加节点纯度的拆分提供更多信息。节点的纯度与该节点中不同类别的分布成反比。以增加纯度或减少杂质的方式选择要问的问题。

我们问了多少问题?我们什么时候停止?我们的树什么时候足以解决我们的分类问题?所有这些问题的答案将我们引向机器学习中最重要的概念之一:过度拟合。该模型可以不断遍历,直到所有节点都是纯节点。但是,这将是一个过于具体的模型,并且不能很好地概括。它通过训练集实现了高精度,但在新的、以前未见过的数据点上表现不佳,这表明过度拟合。树的深度由scikit-learn中决策树算法的max_depth参数控制。

决策树算法通常不需要对特征进行归一化或缩放。它也适用于混合特征数据类型(连续、分类、二进制)。不好的地方是,它容易过度拟合,需要进行模型集成才能很好地泛化。

随机森林是许多决策树的集合。随机森林是使用称为bagging的方法构建的,其中决策树用作并行估计器。如果用于分类问题,则结果基于从每个决策树收到的结果的多数投票。对于回归,叶节点的预测是该叶中目标值的平均值。随机森林回归取决策树结果的平均值。

Bootsrapping是从训练数据中随机选择有放回的样本。它们被称为引导样本。

特征随机性是通过为随机森林中的每个决策树随机选择特征来实现的。可以使用max_features参数控制随机森林中每棵树使用的特征数量。

随机森林是针对许多不同问题的高度准确的模型,不需要归一化或缩放。然而,与快速线性模型(即朴素贝叶斯)相比,它对于高维数据集(即文本分类)并不是一个好的选择。

GBDT是一种集成算法,它使用boosting方法来组合单个决策树。

Boosting意味着将一个学习算法串联起来,从许多顺序连接的弱学习器中获得一个强学习器。在GBDT的情况下,弱学习器是决策树。

由于树是按顺序添加的,因此提升算法学习缓慢。在统计学习中,学习缓慢的模型表现更好。

损失函数用于检测残差。例如,均方误差(MSE)可用于回归任务,对数损失(对数损失)可用于分类任务。值得注意的是,当添加新树时,模型中的现有树不会改变。添加的决策树适合当前模型的残差。

学习率和n_estimators是梯度提升决策树的两个关键超参数。学习率,表示为α,仅表示模型学习的速度。每棵新树都会修改整个模型。修改的幅度由学习率控制。n_estimator是模型中使用的树的数量。如果学习率低,我们需要更多的树来训练模型。但是,我们在选择树的数量时需要非常小心。使用过多的树会产生过度拟合的高风险。

GBDT在分类和回归任务上都非常有效,并且与随机森林相比提供了更准确的预测。它可以处理混合类型的特征,不需要预处理。GBDT需要仔细调整超参数,以防止模型过拟合。

GBDT算法非常强大,已经实现了很多升级版本,如XGBOOST、LightGBM、CatBoost。

关于过拟合的注意事项

然而,梯度提升决策树中树的数量在过度拟合方面非常关键。添加太多树会导致过度拟合,因此在某个时候停止添加树很重要。

聚类是一种以类似数据点分组在一起的方式对一组数据点进行分组的方法。因此,聚类算法会寻找数据点之间的相似点或不同点。聚类是一种无监督学习方法,因此没有与数据点关联的标签。聚类算法试图找到数据的底层结构。

分类任务中的观察(或数据点)有标签。每个观察结果都根据一些测量结果进行分类。分类算法试图模拟观测值(特征)与它们分配的类别之间的关系。然后模型预测新观察的类别。

K均值聚类旨在将数据划分为k个簇,使得同一簇中的数据点相似,不同簇中的数据点相距较远。因此,它是一种基于分区的聚类技术。两点的相似性由它们之间的距离决定。

K均值聚类试图最小化集群内的距离并最大化不同集群之间的距离。K-means算法无法确定聚类的数量。我们需要在创建KMeans对象时定义它,这可能是一项具有挑战性的任务。

考虑以下数据集的二维可视化:

它可以分为4个不同的集群,如下所示:

现实生活中的数据集要复杂得多,其中的集群没有明确分开。但是,该算法以相同的方式工作。K-means是一个迭代过程。它建立在期望最大化算法之上。确定集群数量后,它通过执行以下步骤来工作:

K-Means聚类相对较快且易于解释。它还能够以一种智能方式选择初始质心的位置,从而加快收敛速度。

k-means的一个挑战是必须预先确定集群的数量。K-means算法无法猜测数据中存在多少簇。如果数据中存在分离组的非线性结构,则k-means将不是一个好的选择。

层次聚类意味着通过迭代分组或分离数据点来创建聚类树。有两种类型的层次聚类:

层次聚类的优点之一是我们不必指定聚类的数量。

凝聚聚类是一种自下而上的方法。首先假定每个数据点是一个单独的集群。然后相似的簇被迭代组合。

上图称为树状图,它是表示基于树的方法的图。在层次聚类中,树状图用于可视化聚类之间的关系。

层次聚类的优点之一是我们不必事先指定聚类的数量。但是,将所有数据点合并到一个集群中并不明智。我们应该在某个时候停止合并集群。Scikit-learn为此提供了两个选项:

分裂聚类在现实生活中并不常用,所以我会简单地提一下。简单而明确的解释是分裂聚类与凝聚聚类相反。我们从一个包含所有数据点的巨型集群开始。然后数据点被分成不同的集群。这是一种自上而下的方法。

基于分区和层次聚类技术对于正常形状的聚类非常有效。然而,当涉及到任意形状的簇或检测异常值时,基于密度的技术更有效。

DBSCAN代表具有噪声的基于密度的空间聚类。它能够找到任意形状的簇和带有噪声的簇(即异常值)。

DBSCAN背后的主要思想是,如果一个点靠近该集群中的许多点,则该点属于该集群。

DBSCAN有两个关键参数:

基于这两个参数,点被分类为核心点、边界点或离群点:

DBSCAN不需要事先指定簇数。它对异常值具有鲁棒性并且能够检测异常值。

在某些情况下,确定适当的邻域距离(eps)并不容易,它需要领域知识。

PCA是一种降维算法,它基本上从现有特征中导出新特征,同时保留尽可能多的信息。PCA是一种无监督学习算法,但它也被广泛用作监督学习算法的预处理步骤。

PCA通过查找数据集中特征之间的关系来导出新特征。

注意:PCA是一种线性降维算法。也有可用的非线性方法。

PCA的目的是通过使用较少的特征(或列)尽可能多地解释原始数据集中的方差。新的派生特征称为主成分。主成分的顺序是根据它们解释的原始数据集的方差分数来确定的。

主成分是原始数据集特征的线性组合。

PCA的优点是使用比原始数据集少得多的特征保留了原始数据集的大量方差。主成分根据它们解释的方差量排序。

THE END
1.算法一种算法分类方式及其应用算法应用在计算机科学领域,算法是解决问题的有效方法,而对算法进行分类有助于理解它们的特性、优劣以及在不同场景下的应用。常见的算法分类方法,包括按设计思想、问题类型、数据结构和应用领域等,每一类算法会对应有其典型和实际应用。 算法的出现是为了解决问题和简化复杂的任务。它们提供了一种系统的方法来执行特定的计算或操https://blog.csdn.net/wnm23/article/details/138451523
2.算法的应用嘲范文算法的应用场景范文 算法在各个领域中都有广泛的应用。以下是一些常见的应用场景: 1.数据分析与机器学习:算法被广泛应用于数据分析和机器学习领域。在数据分析方面,算法可以帮助处理和分析大量的数据,从中提取有用的信息和模式。在机器学习方面,算法用于训练模型,预测和分类数据,以及进行无监督学习和强化学习等任务。 https://wenku.baidu.com/view/dd3325293f1ec5da50e2524de518964bcf84d2e9.html
3.90%的算法都基于这六个算法思想递归算法、贪心算法、回溯算法、分治算法、动态规划和枚举算法是常见的算法思想,各自具有不同的特点和适用场景。通过示例问题的介绍,我们可以更好地理解这些算法思想的应用。在实际应用中,我们需要根据问题的特点选择合适的算法思想来解决问题,并综合考虑时间复杂度、空间复杂度和算法的可行性等因素。通过深入理解和掌握这https://m.w3cschool.cn/article/96194468.html