在去年夏天我开始正确学习机器学习之前,我已经在 Udemy 上购买了几门机器学习课程。这些课程中最基本的是机器学习 A-Z:AI、Python 和 R,因此,它成为了我的起点。本课程是对该领域的完美介绍,涵盖了广泛的经典机器学习技术和一些深度学习。
通常,作为程序员,我们使用结构化数据。然而,世界本质上是混乱的。事实证明,机器学习是处理非结构化信息的宝贵工具。这门课程给我留下了深刻的印象,因为它引入了一个全新的方法世界,感觉就像获得了超能力。
本课程逐步解释机器学习过程。该过程的初始关键阶段是数据预处理,这甚至发生在应用任何算法之前。
预处理的最开始是数据分割。通常将数据集分为三部分:训练、验证和测试集。 训练集用于模型的训练,验证集帮助评估训练过程中的过度拟合,测试集用于评估模型训练后的性能训练。
处理丢失的数据是另一个关键方面。根据情况和丢失的数据量,有两个主要选项:
此外,执行特征缩放通常很重要,因为某些机器学习算法对输入数据的规模很敏感。例如,如果不调整数据来补偿这一点,计算数据点之间距离的算法(例如 K 最近邻算法 (K-NN))将偏向于规模较大的变量。特征缩放有助于确保自变量的范围对分析有同等的贡献。这可以通过标准化或标准化等方法来完成。归一化将特征重新调整到固定范围,通常从 0 到 1。标准化将所有特征调整为均值 0 和标准差 1。
这些预处理步骤对于创建在现实场景中表现良好的强大机器学习模型是必要的。
回归模型是一种统计工具,用于根据一个或多个输入变量预测连续结果。它们对于预测和确定变量之间关系的强度至关重要。这些模型的工作原理是创建最适合观测数据的方程。我已经在回归模型方面有了一些经验,尤其是从我几年前参加的统计课程中获得的线性回归。
多项式回归通过添加幂大于一的项来扩展线性回归。这使得模型能够适应更广泛的数据形状,捕获变量之间更复杂的关系。然而,较高次数的多项式可能会导致过度拟合,即模型与训练数据拟合得太紧密,并且在未见过的数据上表现不佳。发生这种情况是因为模型从训练数据中学习噪声,将其误认为是实际关系。
接下来,课程介绍支持向量回归(SVR),这是一个强大的模型,可以封装非线性关系,降低过度拟合的风险,并可以建模指数关系。 SVR 的主要目标是创建一条尽可能接近地拟合大多数数据点的预测线,同时尽量保持该线尽可能平滑和平坦。换句话说,SVR 试图在密切跟踪训练数据和避免过于复杂的模型之间取得平衡,这些模型可能不适用于新的、未见过的数据。它通过允许较小的误差范围来实现这一点,在该误差范围内偏差是可以接受的。这使得 SVR 成为预测连续值的可靠选择,尤其是当数据复杂或具有很大的可变性时。
之后引入了决策树和随机森林。这些技术通常以分类而闻名,它们也适用于回归设置。本课程解释了这些模型如何根据从数据特征推断出的决策规则来预测输出。 决策树和随机森林根据数据集中的特征创建基于一系列二元决策的模型。这种方法可以产生非常适合训练数据的模型,但无法推广到新数据,因为决策过程是任意的,并且不一定捕获变量之间的潜在数学关系。
另一方面,SVR 和 多项式回归 等方法旨在识别数据中固有的数学关系。例如,SVR 尝试在一定的误差范围内拟合最佳可能的曲线,而多项式回归可以对遵循多项式方程的关系进行建模。如果变量之间的真实关系是数学上的,那么这些方法可能会表现更好,并且过度拟合的风险较小。这种发现和利用数学关系的能力使得SVR、线性和多项式回归在预测基础数据关系强大且清晰的结果时更加稳健。
回归部分总结了选择最佳模型的策略。仍然建议使用不同的方法进行实验并评估其在测试数据上的性能,因为实验仍然是选择真正最佳模型的唯一方法。
分类涉及根据输入变量预测分类响应。
逻辑回归,尽管它的名字如此,它是一种基本的分类技术,非常适合二元分类问题。它用于预测具有两种可能状态的结果,例如是/否、真/假。它的工作原理是对默认类的概率(通常标记为 1)建模为输入特征的函数。 逻辑回归将逻辑函数应用于线性方程的输出,产生 0 到 1 之间的概率分数。该模型对于二元分类问题来说稳健、简单且高效。
课程中的下一个模型是K-最近邻(K-NN)。它根据邻居的分类方式对数据点进行分类,能够处理多类问题和更复杂的决策边界。
课程还涵盖支持向量机(SVM)进行分类,解释如何使用不同的内核来处理线性和非线性分类。 支持向量机在多维空间中构造一个超平面来分隔不同的类。 SVM 在高维空间中表现良好。它具有通用性,因为它能够使用不同的核函数来使超平面更适应数据。例如,线性核非常适合线性可分数据,而径向基函数 (RBF) 核可以映射非线性关系。
分类和聚类都是组织数据的方法,但用途不同。分类是一种监督学习方法,其中模型根据标记数据进行训练。这意味着模型从已经分配类别或类的示例中学习。它的任务是根据所学到的知识来预测新数据的类别。例如,分类模型可以根据对相应标记的电子邮件数据集进行训练来确定电子邮件是否是垃圾邮件。
另一方面,聚类是一种无监督学习技术,它涉及对一组对象进行分组,使得同一组中的对象彼此比其他组中的对象更相似。当我们没有预定义数据标签时使用它。模型本身会发现数据中固有的分组。聚类的一个示例可能是根据购买行为将客户分为几组,而无需事先了解不同的客户类型。
这两种方法都是数据分析的基础:
K-Means 是一种流行的聚类技术,它根据数据的特征将数据划分为 K 个不同的、不重叠的聚类。该过程涉及随机初始化 K 个点作为聚类中心,并根据欧氏距离将每个数据点分配到最近的聚类。然后将聚类中心重新计算为指定点的平均值,重复此过程直到质心稳定并且不再显着移动。该方法对于大型数据集特别有效,并且由于其简单和高效而被广泛使用。 K 均值 最适合簇为球形且大小均匀的数据,而对于复杂的簇形状则效果较差。
层次聚类与K-Means不同,不需要提前指定簇的数量。它通过分裂方法或凝聚方法构建集群的层次结构。
在凝聚方法中,每个数据点都从其自己的集群开始,并且当一个集群向上移动时,成对的集群会被合并。该过程持续进行,直到所有点都合并到层次结构顶部的单个簇中。该方法有利于识别数据点之间的相似程度,并使用树状图直观地表示,这可以通过将树状图切割到合适的水平来帮助确定簇的数量。
层次聚类的划分方法,也称为自顶向下聚类,从单个聚类中的所有观察开始,并逐渐将聚类分割成更小的聚类。这种方法从层次结构的顶部开始,一直向下进行,使其在概念上变得简单:每次拆分都旨在在每个划分级别创建尽可能独特和连贯的集群。
在实践中,分裂方法涉及在每一步检查集群并选择最佳点来分裂它。这涉及测量聚类内观察值之间的距离并将最大距离确定为要划分的点。该过程递归地继续,分割每个后续簇,直到每个观察都是其自己的簇或达到指定数量的簇。它通常比凝聚方法计算量更大,因为它需要在每次分割时对数据进行全局视图,因此在非常大的数据集中不太常用。
层次聚类对于较小的数据集或需要仔细检查数据点之间的关系时特别有用,例如在生物科学中或对历史数据进行聚类时。
深度学习是机器学习的一个子集,它采用多层神经网络。它与经典的机器学习技术有显着不同。经典机器学习侧重于通常手动选择和设计的特征,而深度学习旨在训练神经网络来学习特征。这些模型通过从简单的模式构建复杂的模式来自动提取特征。这使得深度学习对于图像和语音识别等任务异常强大,这些任务的输入数据是高维的,数据内的关系也很复杂。然而,训练深度学习模型需要大量信息。
深度学习的基本要素是前向密集连接神经网络,或人工神经网络(ANN)。在这些网络中,神经元按层排列,第一层获取输入数据,最后一层产生输出。一层中的每个神经元都连接到下一层中的每个神经元,使网络“密集连接”。这些神经元的权重和偏差会随着网络在训练过程中从数据中学习而进行调整。每个神经元的输出由非线性激活函数计算,从而引入了捕获数据中非线性关系的能力。
ANN 中的神经元层可以用由权重和偏差组成的向量表示。数据使用矩阵乘法通过这些层向前传播。通过将输入数据乘以权重矩阵,然后添加偏差项来计算每层的输出。然后,该输出在发送到下一层之前先经过激活函数。
激活函数至关重要,因为它将非线性引入模型,使网络能够学习和建模数据中复杂的非线性关系。如果没有非线性激活函数,网络无论其深度如何,仍然会表现得像单层感知器,只能学习线性边界。
基本人工神经网络的替代方案是卷积神经网络(CNN)。与每个输入都连接到每个神经元的密集连接网络不同,CNN 对像素量进行操作,并使用过滤器创建特征图,总结输入中检测到的特征的存在,例如图像中的边缘。这使得 CNN 对于涉及空间层次结构的任务非常高效,因为它们减少了所需参数的数量,从而减轻了计算负担。
卷积神经网络是一种特殊的神经网络,用于处理具有网格状拓扑的数据,例如图像。 CNN 使用过滤器,当过滤器在输入上滑动时执行卷积运算,以创建一个特征图,该特征图总结了输入中检测到的特征的存在。这使得它们在执行图像相关任务时异常高效。
CNN 利用卷积的数学运算,这是数字信号处理的基本技术。在 DSP 环境中,卷积用于通过滤波器改变信号,提取重要特征。类似地,在 CNN 中,卷积涉及在图像上应用滤波器以生成特征图。这个过程有效地允许网络检测图像中与过滤器相对应的相似性或特定特征。例如,过滤器可能会学习检测边缘或特定形状。
随着输入图像通过连续的卷积层进行处理,CNN 在每一层使用多个过滤器来搜索日益复杂的模式。第一层可以检测简单的边缘或纹理,而更深的层可以识别更复杂的特征,例如对象的一部分或整个对象。
梯度下降是用于训练神经网络和其他机器学习模型的基本优化算法。它的工作原理是迭代调整模型的参数以最小化损失函数,该函数衡量模型的预测与实际数据的匹配程度。在每一步中,算法都会计算损失函数相对于模型参数的梯度,并向减少损失的方向移动参数。
反向传播是用于在神经网络中有效计算这些梯度的技术。它分为两个阶段:
这个过程利用微积分的链式法则来估计梯度,确保每个权重根据其对总体误差的贡献按比例进行调整。 梯度下降 和 反向传播 一起使神经网络能够通过迭代提高其准确性来从数据中学习。
损失函数在指导训练过程中发挥着关键作用。它也称为成本函数或误差函数。它量化网络的预测输出与实际目标值之间的差异。该指标提供了网络性能的具体衡量标准。训练的目标是最小化这种损失,从而优化模型的参数。
人工神经网络中常用的损失函数根据具体任务类型而有所不同:
构建深度神经网络时的一个重大挑战是梯度消失问题。训练过程中使用的梯度可能会变得太小,从而阻止权重改变其值,从而阻止网络充分更新参数。
这个问题在 sigmoid 或 tanh 激活函数中尤为突出。为了缓解这个问题,深度学习采用了整流线性单元(ReLu)激活函数。 ReLu 定义为 ReLU(x)=max(0,x),其中 x 表示神经元的输入。该函数有助于在训练过程中保持更强的梯度,从而使更深的网络能够有效地学习而不会导致梯度消失。这种在不影响梯度规模的情况下促进非线性的简单性和效率使得 ReLu 成为深度学习架构中的流行选择。
本课程逐渐发展到各种更专业的机器学习技术,每种技术都针对特定应用和领域量身定制。
自然语言处理 (NLP) 涉及应用计算技术来分析和合成自然语言和语音。将机器学习用于 NLP 的主要挑战之一是文本数据本质上是非结构化且高维的。文本必须转换为机器学习算法可以处理的数字格式,这项任务因语法、语义和上下文等语言的细微差别而变得复杂。
词袋 (BoW) 模型通过计算每个单词在文档中出现的频率,将文本转换为固定长度的向量来解决这个问题,忽略单词的顺序和上下文。此方法简化了文本数据,使其易于基本机器学习模型的管理,并可作为文本分类任务(例如垃圾邮件检测或情感分析)的基础技术。然而,BoW 模型的简单性、它对词序和语义上下文的忽视限制了它在更复杂的语言任务中的有效性。
强化学习 (RL) 是一种机器学习,其中代理通过与环境交互来学习做出决策。它与监督学习不同,因为永远不会呈现正确的输入/输出对,也不会明确纠正次优动作。这种策略通过在决策过程中平衡探索、尝试新事物和利用已知信息而演变。
代理根据策略采取行动,通过奖励或惩罚接收反馈,并更新其策略以最大化长期奖励。 RL 中有助于解决探索-利用困境的两个值得注意的策略是 置信上限 (UCB) 和 汤普森采样。
UCB 是一种算法,它通过选择具有高回报或不经常尝试的操作来优先考虑探索。这个想法是为了平衡已知的奖励和在较少尝试的行动中找到更高奖励的潜力。 UCB 通过围绕动作奖励的估计构建置信界限并选择具有最高置信上限的动作来实现这一点。随着时间的推移,这种方法可以系统地减少不确定性并改善决策。
汤普森采样采用贝叶斯方法来解决探索-利用问题。它涉及从每个动作的奖励的后验分布中进行采样,并选择样本最高的动作。该方法允许基于已知的动作性能进行更具概率的探索,在探索新动作和基于奖励概率分布利用已知动作之间动态平衡。
UCB 和 Thompson 采样 在代理最初未知学习环境的情况下都是强大的技术,允许根据从代理收到的反馈进行系统探索和优化学习环境。这些方法在 A/B 测试或网络路由等实时决策场景中特别有用。
PCA 是一种统计技术,用于降维,同时保留尽可能多的方差。它的工作原理是识别所谓的主成分——数据方差最大化的方向。它通过将原始变量转换为一组新的正交变量来降低数据的维度。正交性允许这个新变量尽可能不相关,并考虑数据中的最大方差。这对于减少数据中的变量数量同时保持对其方差贡献最大的关系特别有用。通过将数据转换为一组降低复杂性的新维度,PCA 有助于可视化高维数据、加速学习算法并消除噪声。
另一方面,LDA也是一种降维技术,但更侧重于最大化已知类别之间的可分离性。它试图对数据类别之间的差异进行建模。 LDA 通过寻找分隔类的特征的线性组合来实现这一点。得到的组合可以用作线性分类器或用于后续分类之前的降维。
PCA 和 LDA 的用途略有不同:
课程的后半部分探讨高级模型选择策略并介绍提升。 Boosting 的工作原理是将多个弱学习器按顺序组合成一个更强的模型。序列中的每个学习器都专注于前一个学习器所犯的错误,逐渐提高模型的准确性。学习器通常是像决策树这样的简单模型,每个模型都对最终决策逐步做出贡献,使得整体比任何单独的模型都更强大。
该技术最流行的实现之一是极端梯度提升(XGBoost),它因其在广泛的预测建模任务中的效率和有效性而脱颖而出。
“机器学习 A-Z:AI、Python 和 R”课程对于任何对机器学习感兴趣的人来说都是一个很好的起点。它涵盖了许多重要主题并提供了广泛的概述,但这只是一个开始。
完成本课程并不会让您立即成为专门从事机器学习工作的专家。相反,请将其视为第一步。它可以帮助您了解基础知识,并向您展示机器学习的哪些部分可能是您最感兴趣的。
以上是机器学习及其他问题:机器学习 A-Z的详细内容。更多信息请关注PHP中文网其他相关文章!