Microsoft Azure AI 机器学习笔记-1

发布时间 2023-12-24 14:43:42作者: sha0dow

机器学习基础:

  1. 数据与建模

    • 数据统计数学建模是处理数据和描述现实情况的关键工具。
    • 观测值是记录的数据实例,而特征是描述观测对象的属性。
    • 标签则代表监督式学习中的已知输出值。
  2. 学习类型

    • 监督式学习包括回归(预测数值标签)和分类(预测类别标签),其中分类又分为二元分类多类分类
    • 非监督式学习则使用聚类将观测值根据特征相似性分组。
  3. 数学和技术概念

    • 函数描述输入和输出之间的关系,而特征向量是包含多个特征值的数组。
  4. 机器学习技术

    • 监督式学习算法聚类分析算法用于分别训练监督式和非监督式模型。
  5. 模型训练和评估

    • 训练模型涉及迭代过程,选择适当的算法算法参数,以及准备特征数据。
    • 评估指标用于验证和比较模型的预测与实际数据的差异。
  6. 模型应用

    • 推理阶段使用已训练好的模型对新数据进行预测,其中包括数据集拆分模型拟合预测验证过程。

监督式学习

其中算法利用有标签的数据集进行训练。模型在学习过程中使用输入数据和对应的预先定义标签,以学习预测输出标签或值。其目标是建立一个预测模型,可以根据输入数据预测相应的输出标签。

回归

回归分析是统计学中常见的一种方法,用于探索因变量(或响应变量)与一个或多个自变量(或预测变量)之间的关系。其主要目的是预测因变量的值,了解自变量与因变量之间的关联,以及解释变量之间的因果关系。

在数学和统计学中,回归模型通常用线性方程来表示,其中因变量与自变量之间的关系被建模为线性关系。简单线性回归包括一个自变量和一个因变量,而多元线性回归包含多个自变量。

简单线性回归模型可表示为:$ Y = \beta_0 + \beta_1 X + \epsilon $
其中:

  • $ Y $ 是因变量(或响应变量),
  • $ X $ 是自变量(或预测变量),
  • $ \beta_0 $ 是截距,
  • $ \beta_1 $ 是斜率,
  • $ \epsilon $ 是误差项。

回归分析的目标是通过拟合最佳的线性模型来预测因变量 $ Y $ 的值。为了找到最佳拟合的线性模型,通常使用最小二乘法来估计模型的系数 $ \beta_0 $ 和 $ \beta_1 $,使得模型预测值与实际观测值之间的残差平方和最小化。

对于多元线性回归,模型的表示类似于简单线性回归,但有多个自变量。其表达式为:

\[Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + ... + \beta_p X_p + \epsilon \]

其中 $ X_1, X_2, ..., X_p $ 是多个自变量,$ \beta_0, \beta_1, \beta_2, ..., \beta_p $ 是各自变量的系数,$ \epsilon $ 是误差项。

回归分析用于预测和解释变量之间的关系,支持决策制定和预测未来趋势。回归模型中常使用的评估指标:

  1. 平均绝对误差 (MAE)

    • 定义:预测值与实际值之间的平均绝对差值,表示预测错误的平均程度。
    • 数学解释:$$ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| $$
    • 说明:MAE 衡量了预测值与实际值之间的平均偏差,忽略了误差的方向。
  2. 均方误差 (MSE)

    • 定义:预测值与实际值之间的平均平方差值,衡量预测错误的平均程度,较大的误差被放大。
    • 数学解释:$$ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 $$
    • 说明:MSE 考虑了误差的大小和方向,通过对误差取平方将较大的误差进行了加重。
  3. 均方根误差 (RMSE)

    • 定义:均方误差的平方根,代表预测值与实际值之间的平均差异。
    • 数学解释:$$ RMSE = \sqrt{MSE} $$
    • 说明:RMSE 提供了衡量误差的标准度量,以实际的测量单元进行了校准。
  4. 决定系数 (R2)

    • 定义:衡量模型解释验证数据中方差的比例,用于评估模型拟合程度。
    • 数学解释:$$ R^2 = 1 - \frac{\sum (y_i - \hat{y}_i)^2}{\sum (y_i - \bar{y})^2} $$
    • 说明:R2 值介于 0 和 1 之间,接近 1 表示模型拟合较好,能够解释大部分数据的方差。

这些指标是用于评估回归模型的常见数学度量,用以量化预测值与实际值之间的差异程度,有助于确定模型的预测能力和拟合程度。

二元分类

在机器学习领域,二元分类是一种监督式学习方法,旨在将数据分为两个类别中的一个。它解决的问题通常是对某个实例进行分类,例如预测是否会发生某个事件(例如,疾病的诊断,电子邮件是否为垃圾邮件等)。

过程概述:

  1. 数据准备:通过收集和整理包含特征(输入)和标签(输出)的数据集,其中标签通常是二元值(例如 0 或 1)。

  2. 模型训练:使用训练数据集来训练模型。这包括选择适当的算法(例如逻辑回归)和调整算法参数,以便模型能够从特征中学习并做出合适的预测。

  3. 预测:模型完成训练后,使用未知标签的数据进行预测。模型基于学习到的规律对新数据进行分类。

举例说明:

考虑一个医疗数据集,特征是病人的不同生物指标(如血糖水平、血压等),标签是患者是否患有某种疾病(例如糖尿病)。通过二元分类,模型可以基于这些特征预测患者是否患有糖尿病(标签为 1)或者不患有(标签为 0)。

在混淆矩阵中评估二元分类模型下常使用的评估指标:

  1. 准确度(Accuracy)

    • 数学解释:准确度是指模型正确预测的样本数量与总样本数量的比率。
    • 数学公式:$$ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} $$
    • 其中,\(TP\) 表示真阳性(模型正确预测为正类的样本数),\(TN\) 表示真阴性(模型正确预测为负类的样本数),\(FP\) 表示假阳性(模型错误预测为正类的样本数),\(FN\) 表示假阴性(模型错误预测为负类的样本数)。
  2. 召回率(Recall)

    • 数学解释:召回率表示模型能够识别出所有真实正样本的能力。
    • 数学公式:$$ \text{Recall} = \frac{TP}{TP + FN} $$
    • 在此公式中,\(TP\) 代表真阳性,\(FN\) 代表假阴性。
  3. 精准率(Precision)

    • 数学解释:精准率衡量模型在预测为正类的样本中,有多少实际为正类。
    • 数学公式:$$ \text{Precision} = \frac{TP}{TP + FP} $$
    • 其中,\(FP\) 表示假阳性。
  4. F1 分数(F1 Score)

    • 数学解释:F1 分数是综合考虑召回率和精准率的度量,适用于评估模型在不平衡类别分布情况下的表现。
    • 数学公式:$$ \text{F1 Score} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} $$
    • 它是精准率和召回率的调和平均值。
  5. 曲线下面积(AUC)

    • 数学解释:AUC 是 ROC 曲线下的面积,ROC 曲线表示真阳性率(TPR)与假阳性率(FPR)之间的关系。AUC 衡量模型在不同阈值下分类性能的优劣程度。
    • 数学公式:AUC 是曲线下的积分面积。

这些指标在评估二元分类模型时提供了数学上的量化度量,用于衡量模型的性能和准确性。

多类分类

多类分类是指一种监督式机器学习任务,其目标是预测观察结果属于多个可能类别中的哪一个。与二元分类不同,多类分类涉及预测样本可能属于三个或三个以上的类别中的一个。在多类分类中,模型训练的目的是为每个类别创建一个预测模型,以便根据观察到的特征将新的样本正确地分类到这些类别之一。多类分类常用于识别图像中的物体、文本分类、语音识别和医学诊断等领域。

一对其他算法(One-vs-Rest Algorithm) 是一种用于解决多类分类问题的方法。在这个算法中,针对每个类别,都训练一个独立的二元分类器,目的是将这个类别与其他所有类别进行区分。例如,在一个有三个类别的情况下,会创建三个分类器,每个分类器专门负责区分一个类别和其他所有类别之间的差异。假设我们有三个类别,OvR 算法将会创建三个分类器:

  • 分类器1(\(f_A\)):区分类别 \(A\) 和非 \(A\) 类别(\(B\)\(C\))。
  • 分类器2(\(f_B\)):区分类别 \(B\) 和非 \(B\) 类别(\(A\)\(C\))。
  • 分类器3(\(f_C\)):区分类别 \(C\) 和非 \(C\) 类别(\(A\)\(B\))。

每个分类器都使用二元分类的方法,即使用独立的模型来计算观测结果属于该类别的概率。这些概率值是通过对应类别的sigmoid函数生成的,值的范围在 0.0 到 1.0 之间,表示观测结果属于特定类别的可能性大小。

在预测新的样本时,OvR 算法会对这些分类器进行评估,并选择输出概率最高的分类器对应的类别作为最终的预测结果。这种方式使得每个样本被分到一个类别中,即使是一个多类别的问题。 OvR 算法的主要优点之一是它能与任何分类算法兼容,并且易于理解和实现。

多项式算法(Multinomial Algorithm) 是另一种解决多类分类问题的方法,它与一对其他 (OvR) 算法不同。在多项式算法中,不是为每个类别训练一个独立的二元分类器,而是创建一个单独的模型,该模型能够直接预测多个类别中的一个。

多项式算法产生的输出是一个包含每个可能类别的概率分布的向量,其中每个类别的概率得分总和为 1.0。例如,如果有三个类别 A、B 和 C,则模型将生成一个向量来表示属于每个类别的可能性,如 [0.2, 0.5, 0.3],这表示样本属于 A 类的概率为 0.2,属于 B 类的概率为 0.5,属于 C 类的概率为 0.3。

多项式算法中使用的一个常见函数是 softmax 函数,它将一组实数转换为概率分布。softmax 函数计算的公式如下:

\[P(y=j \,|\, x) = \frac{e^{f_j(x)}}{\sum_{k=1}^{K} e^{f_k(x)}} \]

其中 \(f_j(x)\) 表示与类别 \(j\) 相关的线性分数,\(K\) 是总类别数。softmax 函数将线性分数转换为概率值,并确保所有类别的概率总和为 1。

多项式算法的优势之一是它可以直接处理多类别问题,而不需要创建多个二元分类器。这种方法可以在训练期间优化单个模型,从而更有效地预测多类别。

多类分类中混淆矩阵的计算 涉及多个类别,因此涉及到每个类别的真阳性(True Positives)、真阴性(True Negatives)、假阳性(False Positives)和假阴性(False Negatives)的数量。

对于一个多类分类问题,混淆矩阵是一个 \(N \times N\) 的矩阵(\(N\) 是类别的数量),其中 \(N\) 表示类别的数量。以下是混淆矩阵的基本形式:

\[\begin{array}{|c|c|c|c|} \hline & \text{预测类别} 1 & \text{预测类别} 2 & \cdots & \text{预测类别} N \\ \hline \text{实际类别} 1 & \text{TP}_{1} & \text{FP}_{1,2} & \cdots & \text{FP}_{1,N} \\ \text{实际类别} 2 & \text{FP}_{2,1} & \text{TP}_{2} & \cdots & \text{FP}_{2,N} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \text{实际类别} N & \text{FP}_{N,1} & \text{FP}_{N,2} & \cdots & \text{TP}_{N} \\ \hline \end{array} \]

其中,\(\text{TP}_{i}\) 表示被正确预测为类别 \(i\) 的样本数;\(\text{FP}_{i,j}\) 表示实际类别为 \(i\) 但被错误预测为类别 \(j\) 的样本数。

在多类分类的混淆矩阵中,无法简单地使用“真阴性”或“假阴性”等术语来描述每个单独类别,因为这些概念通常与二元分类相关。相反,我们需要关注每个类别的真阳性、假阳性和假阴性来理解模型的性能。

对于多类分类问题,我们可以计算整体的准确度(Accuracy)、整体召回率(Recall)、整体精准率(Precision)来评估模型的性能。

  • 整体准确度是模型正确分类的样本数占总样本数的比例。它可以通过计算对角线上的正确分类样本数之和除以总样本数得到:

\[\text{Accuracy} = \frac{\sum_{i=1}^{N} \text{TP}_{i}}{\sum_{i=1}^{N} (\text{TP}_{i} + \text{FP}_{i,1} + \text{FP}_{i,2} + \dots + \text{FP}_{i,N})} \]

  • 整体召回率表示模型正确预测为某一类别的样本数量与实际属于该类别的样本数量之比的平均值。计算整体召回率的方法是将每个类别的真阳性的数量加总并除以该类别的总样本数:

\[\text{Recall} = \frac{\sum_{i=1}^{N} \text{TP}_{i}}{\sum_{i=1}^{N} (\text{TP}_{i} + \text{FP}_{i,1} + \text{FP}_{i,2} + \dots + \text{FP}_{i,N})} \]

  • 整体精准率表示模型在预测为某一类别时实际上属于该类别的样本数量与所有被预测为该类别的样本数量之比的平均值。计算整体精准率的方法是将每个类别的真阳性的数量加总并除以被预测为该类别的样本数之和:

\[\text{Precision} = \frac{\sum_{i=1}^{N} \text{TP}_{i}}{\sum_{i=1}^{N} (\text{TP}_{i} + \text{FN}_{1,i} + \text{FN}_{2,i} + \dots + \text{FN}_{N,i})} \]

  • 整体 F1 分数是综合考虑整体召回率(Recall)和整体精准率(Precision)的指标,通常用于评估多类分类模型的综合性能。计算整体 F1 分数的方法是使用整体召回率和整体精准率的值来求得加权调和平均数:

\[\text{F1 Score} = \frac{2 \times \text{Recall} \times \text{Precision}}{\text{Recall} + \text{Precision}} \]

整体 F1 分数是一个综合指标,能够更全面地评估多类分类模型在多个类别上的性能表现,当然这是不考虑了类别不平衡的情况。

加权F1分数(Weighted F1 Score) 考虑了类别不平衡的情况,并使用每个类别的样本数或其他权重因素来计算整体F1分数。它通过对每个类别的F1分数进行加权平均来获得整体的F1分数,以更全面地评估模型性能。

计算加权F1分数的一种常见方法是根据类别的样本数量作为权重进行加权平均。具体步骤如下:

  1. 计算每个类别的F1分数:对于每个类别,计算其对应的精准率(Precision)和召回率(Recall),然后使用以下公式计算F1分数:

    \[F1_{i} = 2 \times \frac{\text{Precision}_{i} \times \text{Recall}_{i}}{\text{Precision}_{i} + \text{Recall}_{i}} \]

  2. 计算类别权重:根据每个类别的样本数量或其他权重因素,得到各个类别的权重值。

  3. 加权平均:利用每个类别的F1分数及其对应的权重,进行加权平均得到加权F1分数。这可以通过下面的公式计算:

    \[Weighted\ F1\ Score = \sum_{i=1}^{N} (F1_{i} \times w_{i}) \]

    其中,$ F1_{i} $ 是类别 \(i\) 的F1分数,$ w_{i} $ 是对应的权重,$ N $ 是类别的数量。

通过这种方法,加权F1分数能更准确地反映出每个类别对整体F1分数的贡献,并且更好地考虑了类别不平衡对模型评估的影响。

这些指标可以提供关于多类分类模型性能的整体概览,能够帮助评估模型在不同类别上的表现。

非监督式机器学习

不使用预先标记的数据,而是通过数据内在的结构和模式进行学习。在这种情况下,算法尝试发现数据集中的模式、结构或关系,通过对相似性或潜在组织进行分组或聚类,而不需要已知的输出标签。

在聚类分析领域,涉及以下学术词汇的逻辑关系:

  1. 非监督式学习是机器学习中的一种范式,与聚类分析紧密相关。它强调的是从数据内在结构和模式中学习,而不依赖于预先标记的数据来训练模型。

  2. 聚类分析作为非监督式学习的一部分,利用数据观察值之间的相似性将它们分组到群集中。这种方法不使用先前已知的标签值,而是关注数据自身的特征。

  3. K-Means 聚类分析是一种常见的聚类算法,用于将数据点分配到 k 个群集中,并以质心为中心进行分组。质心代表着群集的平均位置,是群集分析中的关键元素。

  4. 群集是聚类分析中的组成部分,指的是具有相似特征的数据点组成的分组。这些群集由聚类算法根据数据点的相似性自动形成。

  5. 指标评估用于衡量聚类模型的性能,包括测量群集内部数据点之间的距离以及不同群集之间的分离程度。其中,剪影指数是一种常用的度量,用于评估群集内外数据点的距离比率,以衡量群集的紧密性和分离度。

这些术语共同构成了聚类分析的基础概念和评估方法,用于理解数据结构和模式,而无需先验标签。

群集

在聚类分析中,群集(Cluster)是指根据数据点之间的相似性或距离度量将观察值分组成的集合。这些群集由具有相似特征或行为模式的数据点组成,展现出内在的结构和关联。在群集分析中,其目标是将数据点划分为不同的群集,使得每个群集内的数据点彼此相似,而不同群集之间的数据点则表现出明显的差异性。

数学上,群集是由数据点的特征和属性定义的,通过聚类算法将这些点分配到不同的群集中。这些算法依赖于距离或相似性的度量来确定数据点之间的关联程度,并根据相似性将它们归类到相应的群集中。

群集的形成有助于揭示数据集内部的模式、趋势或隐藏的结构,并有助于更好地理解数据的性质和内在关系。群集分析在许多领域都有广泛的应用,包括数据挖掘、模式识别、生物信息学和市场分析等领域。

K-Means 聚类分析(K-Means Clustering) 是一种常用的聚类算法,旨在将数据点分配到预先确定数量(K个)的群集中,使得每个数据点都属于与其最近的质心所代表的群集。这个方法基于数据点之间的距离或相似性进行分组,并尝试将数据点划分为 K 个互不重叠的群集。以下是 K-Means 算法的步骤:

  1. 初始化质心

    • 选择要分成的群集数量 K。
    • 随机选择 K 个数据点作为初始的质心(群集的中心点)。
  2. 分配数据点到最近的质心

    • 计算每个数据点与每个质心的距离,通常采用欧氏距离或其他距离度量。
    • 将每个数据点分配到与其最近的质心所代表的群集中。
  3. 更新质心位置

    • 对于每个群集,计算该群集中所有数据点的平均值,以此确定新的质心位置。
  4. 重新分配数据点

    • 将数据点重新分配到新的质心所代表的群集中。
  5. 重复迭代

    • 重复执行步骤 2 和步骤 3,直到满足停止迭代的条件,比如质心不再变化或达到预定的迭代次数。
  6. 收敛检验

    • 在迭代的每一步中,检查质心是否收敛(即质心位置是否稳定不变)。
  7. 确定最终聚类结果

    • 当算法收敛或达到预定的迭代次数后,停止迭代,并确定最终的聚类结果。

这些步骤循环执行,直到质心不再变化为止。K-Means 的目标是通过迭代过程最小化数据点与其所属质心之间的距离,从而实现有效的数据聚类。

聚类分析模型的评估涉及对生成的群集进行分析,因为聚类通常是无监督学习,缺乏真实标签进行评估。以下是几种用于评估聚类分析模型的常用方法:

  1. 距群集中心的平均距离:计算群集中每个数据点与其所属群集的质心之间的距离。然后对所有点的距离进行平均。较小的平均距离表示数据点更靠近其所属的群集中心,表明较好的聚类效果。

  2. 距其他中心的平均距离:对于每个群集,计算其内部数据点与其他所有群集质心的平均距离。这个指标用于衡量不同群集之间的分离程度。较大的平均距离表示群集之间的分离度较好。

  3. 距聚类中心的最大距离:确定每个群集中的数据点与其所属质心之间的最远距离。该指标用于确定群集内部的数据点分布情况。较小的最大距离表明数据点更紧密地聚集在一起。

  4. 剪影(Silhouette Score):剪影指数综合了群集内数据点间距离和不同群集之间的距离。它通过比较群集内点与同一群集中其他点之间的平均距离和与其他群集质心的平均距离来计算。剪影范围从 -1 到 1,值越接近 1 表示群集分离效果越好。

这些指标可用于评估群集的紧密度、分离度以及群集内部数据点的分布情况。通过综合分析这些指标,可以对聚类分析模型的性能进行评估和比较。

K-Means 的目标是最小化数据点与其所属质心之间的距离,通过迭代过程不断调整质心的位置,直至达到稳定的聚类结果。该算法适用于数值型数据,并在大多数情况下表现良好。

然而,K-Means 也有其局限性,例如对初始质心的敏感性,对于不同初始值可能会得到不同的结果。此外,在处理非球形、大小不一的群集或存在噪声数据时,其效果可能会减弱。但总体而言,K-Means 聚类是一个简单而高效的聚类算法,适用于许多实际应用场景。

深度学习

以下是深度学习的基本内容:

  • 深度学习 (Deep Learning) 是一种模拟人类大脑学习方式的高级机器学习形式。
    • 人工神经网络 (Artificial Neural Networks) 是深度学习的关键工具,通过数学函数模拟生物神经元的电化学活动。
      • 神经元 (Neurons) 是神经网络的基本单元,执行输入与权重的函数处理,并通过激活函数传递输出。
    • 深度神经网络 (DNN) 是多层神经元组成的人工神经网络,其深度嵌套函数定义了该技术被称为深度学习的原因。它常用于多种机器学习问题,包括回归、分类、自然语言处理和计算机视觉模型。
      • 前馈神经网络 (Feedforward Neural Networks) 是数据从输入层传递至输出层的网络结构。
        • 分类问题 (Classification Problem) 是机器学习中的一类问题,其目标是根据已知类别对新数据进行分类。
          • 概率分布 (Probability Distribution) 是表示每个类别预测概率的分布。
      • 损失函数 (Loss Function) 用于衡量模型预测值与真实值之间的差异,促使模型进行优化。
      • 优化函数 (Optimization Function) 通过调整神经网络中的权重,以最小化损失函数来改善模型。
        • 梯度下降法 (Gradient Descent) 是一种优化算法,通过计算损失函数梯度来更新权重以降低整体损失量。
      • 时期 (Epoch) 是神经网络训练中对整个数据集进行一次前向传递和后向传播的过程。
    • 线性代数 (Linear Algebra) 是处理神经网络中矩阵和向量操作的数学分支。
    • 图形处理单元 (GPU) 是用于高效执行神经网络训练的硬件设备,能够优化矩阵和向量操作。

这些术语在深度学习领域密切相关,构成了深度学习及其核心概念,从网络结构、训练过程、优化方法到数学基础。神经网络的实现是一种模仿生物神经系统的人工智能模型。它由多个神经元组成的层次结构构建而成,这些神经元相互连接,通过权重和激活函数传递信息,实现信息的处理和学习。

神经网络的关键实现步骤

  1. 神经元模拟:神经元模拟生物神经元,接收输入并应用权重,然后通过激活函数将输出传递给连接的神经元。

  2. 多层嵌套:神经网络的多层结构构成了深度学习的基础。这种深度嵌套函数的结构形成了深度神经网络(DNN),允许模型从数据中学习复杂的特征表示。

  3. 模型训练:神经网络模型训练涉及将训练数据馈送到网络中,通过前向传播计算输出并评估损失,然后通过反向传播和优化算法来更新权重,以最小化损失函数。

相关原理

  1. 激活函数:它们引入非线性特性,如ReLU、Sigmoid、Tanh,用于确定神经元是否激活并将信号传递到下一层。

  2. 损失函数:用于评估模型预测值与真实值之间的差异,例如均方误差(MSE)、交叉熵损失(Cross Entropy)。

  3. 优化算法:例如梯度下降法,用于调整权重以最小化损失。

  4. 反向传播:利用链式法则计算损失函数对权重的梯度,然后通过梯度下降更新权重。

神经网络的数学表示可以利用线性代数进行描述。输入和权重可以表示为向量和矩阵,在神经网络的正向传播和反向传播中,矩阵乘法、梯度计算和参数更新使用了线性代数的原理。

例如,正向传播阶段中,输入向量 x 与权重矩阵 W 的乘积加上偏置向量 b 可以表示为 Z = Wx + b,然后应用激活函数得到输出 A。反向传播阶段使用链式法则计算损失函数对权重的梯度,通过梯度下降更新权重,使得损失最小化。