统计学习和符号学习 @

统计学习和符号学习是机器学习领域中的两种重要学习范式

统计学习 @

  • 定义:统计学习基于统计学理论,利用数据来构建模型并进行预测和决策。它通过分析大量的数据,发现数据中的统计规律,以实现对未知数据的预测和分类等任务。
  • 方法:常见的统计学习方法包括线性回归、逻辑回归、支持向量机、决策树、随机森林、神经网络等。这些方法通常基于概率模型,通过优化目标函数(如损失函数)来估计模型的参数。例如,在支持向量机中,通过寻找一个最优的超平面来将不同类别的数据分开,使得分类间隔最大化。
  • 特点
    • 数据驱动:依赖大量的数据来学习模型,数据越多,模型的性能往往越好。
    • 擅长处理复杂问题:能够处理高维数据和复杂的非线性关系,例如神经网络可以通过多层神经元来学习复杂的函数映射。
    • 具有概率解释:模型的输出通常具有概率意义,例如逻辑回归可以给出样本属于某一类别的概率。
    • 可扩展性强:可以通过增加数据量和模型复杂度来提高性能,适用于大规模数据处理。

符号学习 @

  • 定义:符号学习以符号表示为基础,通过对符号表达式的操作和推理来进行学习。它强调基于规则和逻辑的知识表示与推理,通常使用符号语言来描述问题和解决方案。
  • 方法:包括决策树学习、基于规则的学习、归纳逻辑编程等。例如,决策树学习通过构建树形结构来表示决策规则,每个内部节点是一个属性上的测试,分支是测试的结果,叶节点是类别或值。基于规则的学习则直接学习一组规则,用于对数据进行分类或预测。
  • 特点
    • 知识表示明确:以符号和规则的形式表示知识,易于理解和解释,人类可以直接阅读和理解这些规则,例如“如果天气晴朗且温度较高,那么适合户外活动”这样的规则。
    • 可进行逻辑推理:能够利用逻辑推理来处理问题,适合处理需要基于先验知识和逻辑判断的任务,如专家系统中的知识推理。
    • 对数据量要求较低:不像统计学习那样依赖大量的数据,在数据量较少的情况下也能进行学习和推理。
    • 难以处理复杂的非线性关系:对于复杂的、高度非线性的数据关系,符号学习的表示和处理能力相对有限,不如统计学习方法灵活。

机器学习分类 @

常见的分类包括监督学习、无监督学习、半监督学习和强化学习,先简单讲下前两种

监督学习 @

比如有老师教的学生,老师给的学习资料都有答案(标签),学生通过学习这些资料掌握知识,然后用学到的知识去做有答案的新题目(对新数据预测)。

  • 原理:使用标记的数据集来训练算法,对于每个输入样本,都有对应的输出标签。算法通过学习输入和输出之间的映射关系,来对新的输入进行准确预测。
  • 算法:常见的监督学习算法包括线性回归、逻辑回归、支持向量机、决策树、随机森林等。
  • 应用
    • 图像和物体识别:可用于定位、隔离和分类视频或图像中的对象,如识别交通标志、医学影像中的病变等。
    • 预测分析:创建预测分析系统,预测股票价格走势、天气变化、客户需求等,帮助企业决策。
    • 客户情绪分析:从大量文本数据中提取和分类客户的情感、意图等信息,改善客户服务和品牌参与度。
    • 垃圾邮件检测:训练模型识别垃圾邮件和非垃圾邮件,将垃圾邮件分类到指定文件夹,提高邮箱使用效率。

监督学习主要分为分类和回归两种:

  • 分类
    • 定义:将输入数据划分到不同的离散类别中。例如,判断一封邮件是垃圾邮件还是正常邮件,识别一张图片是猫还是狗等。
    • 目标:模型通过学习有标记的训练数据,找到输入特征与类别之间的关系,从而对新的未知数据进行准确分类。
    • 评估指标:常用准确率、精确率、召回率、F1值等指标来评估分类模型的性能。
      • 准确率:指分类正确的样本数占总样本数的比例
      • 精确率:指预测为正类的样本中实际为正类的比例
      • 召回率:指实际为正类的样本中被正确预测为正类的比例
      • F1值:精确率和召回率的调和平均数,综合考虑了两者的性能
    • 常见算法:决策树、支持向量机、朴素贝叶斯、K近邻算法等。例如决策树算法,它通过构建树状结构,基于特征的不同取值对样本进行划分,最终将样本分类到不同的叶子节点类别中。
  • 回归
    • 定义:预测一个连续的数值输出。比如,根据房屋的面积、房龄、地理位置等特征预测房屋的价格,或者根据历史销售数据预测未来的销售额等。
    • 目标:建立一个模型,能够根据输入的特征准确地预测出连续的目标值,找到输入特征与连续输出之间的函数关系。
    • 评估指标:常用均方误差(MSE)、平均绝对误差(MAE)、决定系数(R²)等指标来评估回归模型的性能。
      • 均方误差:预测值与真实值之差的平方的平均值,反映了模型预测的平均误差大小
      • 平均绝对误差:预测值与真实值之差的绝对值的平均值,更直观地体现了预测值与真实值之间的平均偏离程度
      • 决定系数:衡量了回归模型对观测数据的拟合程度,取值范围在0到1之间,越接近1表示模型拟合效果越好
    • 常见算法:线性回归、岭回归、Lasso回归、随机森林回归等。以线性回归为例,它假设输入特征与输出之间存在线性关系,通过最小化误差的平方和来确定模型的参数,从而得到一个能够对新数据进行连续值预测的线性函数。

无监督学习 @

好比一个人在一个陌生的地方探险,没有任何向导或指示,需要自己根据看到的各种景象(数据特征)去发现规律,比如找到不同的区域划分(聚类)或发现一些特别的现象(数据内在模式)。

  • 原理:基于数据自身的特征和规律,如数据点之间的相似性、距离等,将数据进行分组或降维,以发现数据的内在结构和模式。
  • 算法:常见的无监督学习算法包括K均值聚类、层次聚类、主成分分析、关联规则挖掘、奇异值分解、自编码器等。
  • 应用
    • 异常检测:发现数据中的异常值或模式,用于欺诈检测、网络安全监控、设备故障预警等。
    • 自然语言处理:进行文本摘要、文本聚类、词向量表示等任务,帮助理解和处理大量文本数据。
    • 图像处理:实现图像分类、图像生成、特征提取等,对于无标记图像数据的处理非常有用。
    • 社交网络分析:分析社交网络中的模式和关系,识别关键节点、社区结构,了解用户行为和群体特征。

基础概念介绍 @

本文以预测天气状况的例子来介绍这些机器学习基本概念,小学生都能看得懂!

  • 数据集

    • 表示方法:通常用大写字母 $D$ 表示。设数据集中有 $m$ 个样本,则 $D = {x_1, x_2, \cdots, x_m}$。
    • 例子:在天气数据集中,$D$ 就是包含过去一个月每天天气信息的集合,$m$ 为天数(如 30 天),$x_i$ 表示第 $i$ 天的样本信息。
  • 样本

    • 表示方法:一般用小写字母 $x$ 表示单个样本,如果样本有 $n$ 个特征,则 $x = (x^{(1)}, x^{(2)}, \cdots, x^{(n)})$,其中 $x^{(i)}$ 表示第 $i$ 个特征的值。
    • 例子:对于某一天的天气样本 $x$,若有温度、湿度、风速 3 个特征,则 $x = (x^{(1)}, x^{(2)}, x^{(3)})$,比如 $x = (25, 60, 5)$ 分别对应温度、湿度、风速。
  • 特征

    • 表示方法:常用 $x^{(i)}$ 表示样本 $x$ 的第 $i$ 个特征,$i = 1, 2, \cdots, n$,$n$ 为特征的总数。
    • 例子:在天气样本中,$x^{(1)}$ 可以表示温度,$x^{(2)}$ 表示湿度,$x^{(3)}$ 表示风速等。
  • 样本空间

    • 表示方法:一般用大写希腊字母 $\mathcal{X}$ 表示。$\mathcal{X} = {x | x = (x^{(1)}, x^{(2)}, \cdots, x^{(n)}), x^{(i)} \in \mathcal{X}_i, i = 1, 2, \cdots, n}$,其中 $\mathcal{X}_i$ 是第 $i$ 个特征的取值范围。
    • 例子:天气的样本空间 $\mathcal{X}$ 中,温度 $x^{(1)}$ 的取值范围可能是 $[0, 50]$(单位:℃),湿度 $x^{(2)}$ 的取值范围可能是 $[0, 100]$(单位:%),风速 $x^{(3)}$ 的取值范围可能是 $[0, 50]$(单位:米/秒)等。
  • 特征向量

    • 表示方法:与样本的表示类似,$x = (x^{(1)}, x^{(2)}, \cdots, x^{(n)})$,它是一个 $n$ 维向量。
    • 例子:如前面所述,某一天天气的特征向量 $x = (25, 60, 5)$,维度 $n = 3$。
  • 标记

    • 表示方法:通常用大写字母 $L$ 表示所有标记的集合,对于单个样本的标记,常用小写字母 $y_i$ 表示样本 $x_i$ 对应的标记。
    • 分类:根据标记的取值类型不同,可分为以下两类
      • 分类
        • 表示方法:设分类模型为 $f: \mathcal{X} \to \mathcal{Y}$,输入样本 $x \in \mathcal{X}$,输出标记 $y = f(x) \in \mathcal{Y}$。
        • 例子:天气分类模型 $f$,输入某一天的天气样本特征向量 $x$(如 $x = (25, 60, 5)$),输出 $y = f(x)$,$y$ 的值为“下雨”或“不下雨”。
      • 回归
        • 表示方法:设回归模型为 $f: \mathcal{X} \to \mathbb{R}$,输入样本 $x \in \mathcal{X}$,输出预测的连续值 $y = f(x) \in \mathbb{R}$。
        • 例子:天气温度回归模型 $f$,输入某一天的天气样本特征向量 $x$,输出预测的温度值 $y = f(x)$,$y$ 是一个实数,如 25℃。
  • 标记空间

    • 表示方法:通常用大写希腊字母 $\mathcal{Y}$ 表示。对于分类问题,$\mathcal{Y}$ 是有限个离散值的集合;对于回归问题,$\mathcal{Y}$ 是实数集 $\mathbb{R}$。即分类问题 $\mathcal{Y} = {y_1, y_2, \cdots, y_k}$($k$ 为类别数),回归问题 $\mathcal{Y} = \mathbb{R}$。
    • 例子:在天气是否下雨的分类问题中,$\mathcal{Y} = {下雨, 不下雨}$;若预测温度的回归问题中,$\mathcal{Y} = \mathbb{R}$(温度取值为实数)。
  • 泛化

    • 表示方法:通常用泛化误差来衡量,设总体分布为 $P(X, Y)$,模型 $f$ 的泛化误差为 $E_{泛化}(f) = \mathbb{E}_{(X, Y) \sim P} [L(f(X), Y)]$,其中 $L$ 是损失函数。
    • 例子:在天气预测模型中,通过计算模型在新的未见过的天气数据上的预测误差(如均方误差等损失函数的值)来评估其泛化能力。
  • 独立同分布

    • 表示方法:若样本 $x_1, x_2, \cdots, x_m$ 独立同分布,则 $P(x_1, x_2, \cdots, x_m) = \prod_{i = 1}^{m} P(x_i)$,且 $P(x_i)$ 相同。
    • 例子:假设每天的天气样本 $x_i$ 独立同分布,意味着每天天气的概率分布 $P(x_i)$ 相同,且某一天的天气不影响其他天的天气概率。
  • 假设空间

    • 表示方法:用 $\mathcal{H}$ 表示假设空间,它是所有可能的模型(假设)$h$ 的集合,$h: \mathcal{X} \to \mathcal{Y}$。
    • 例子:在天气预测中,$\mathcal{H}$ 包含各种可能的关于天气特征和天气状态关系的模型,如线性模型、非线性模型等。
  • 版本空间

    • 表示方法:设训练集 $D = {(x_1, y_1), (x_2, y_2), \cdots, (x_m, y_m)}$,版本空间 $\mathcal{V}$ 是满足 $h(x_i) = y_i$(对于所有 $(x_i, y_i) \in D$)的假设 $h \in \mathcal{H}$ 的集合。
    • 例子:在天气预测的训练集中,那些能够正确预测每一天是否下雨的假设构成了版本空间 $\mathcal{V}$。
  • 归纳偏好

    • 表示方法:没有统一的公式表示,但可以理解为在选择模型时,对某些模型属性(如简单性、平滑性等)的偏好。
    • 例子:如前面提到的倾向于选择简单的线性模型作为天气预测模型,体现了对简单性的归纳偏好。
  • 奥卡姆剃刀

    • 表示方法:没有严格公式,原则是在多个满足训练数据的假设中,选择复杂度最低的假设。
    • 例子:在天气预测中,若线性模型 $h_1$ 和非线性模型 $h_2$ 都能较好地拟合训练数据,但线性模型更简单(复杂度低),则根据奥卡姆剃刀选择 $h_1$。
  • NFL定理(没有免费的午餐定理)

    • 表示方法:对于二分类问题,设 $f$ 和 $g$ 是两个学习算法,在所有可能的数据分布 $P$ 上,有 $\sum_{P} E_{泛化}(f) = \sum_{P} E_{泛化}(g)$,其中 $E_{泛化}(f)$ 和 $E_{泛化}(g)$ 分别是算法 $f$ 和 $g$ 的泛化误差。
    • 例子:在天气预测的二分类(下雨/不下雨)问题中,不同算法的平均泛化性能在所有可能的天气数据分布上是相同的。
  • 析取范式

    • 表示方法:$A = \bigvee_{i = 1}^{k} B_i$,其中 $B_i$ 是简单合取式。
    • 例子:在天气描述中,$A$ 表示某种天气情况,$B_1 = (x^{(1)} > 20 \land x^{(2)} < 50)$(温度高且湿度低),$B_2 = (x^{(3)} > 10 \land x^{(4)} < 1000)$(风速大且气压低),则 $A = B_1 \lor B_2$ 是析取范式。
  • 合取式

    • 表示方法:$B = \bigwedge_{i = 1}^{n} C_i$,其中 $C_i$ 是命题。
    • 例子:$B = (x^{(1)} > 20 \land x^{(2)} < 50)$(温度高且湿度低)就是一个合取式。
  • 噪音

    • 表示方法:在数据中表现为样本的特征值或标记值与真实值的偏差,如样本 $x$ 的真实特征值为 $\tilde{x}$,观测值为 $x$,则噪音 $\epsilon = x - \tilde{x}$;对于标记,真实标记为 $\tilde{y}$,观测标记为 $y$,噪音可体现在预测误差中。
    • 例子:在天气数据中,若某一天实际温度 $\tilde{x}^{(1)} = 23℃$,但测量值 $x^{(1)} = 25℃$,则噪音 $\epsilon = 25 - 23 = 2℃$,会影响模型训练和预测。
  • 经验误差

    • 指学习器(模型)在训练集上的误差,即模型实际预测输出与训练样本真实输出之间的差异 。
    • 比如用过去一个月的天气数据(训练集)训练一个天气预测模型,模型对这一个月每天天气状况预测错误的比例,就是该模型在这个训练集上的经验误差。在一定程度上,经验误差能反映模型对已有的训练数据的学习效果,但经验误差小并不意味着模型就是好的。
  • 过拟合

    • 指模型把训练样本学得 “太好”,将训练样本自身的一些特点当作所有潜在样本都会具有的一般性质。这使得模型在训练集上表现很好,误差较小,但在新的测试样本(未在训练集中出现的数据)上表现较差,泛化能力下降。- 比如,天气预测模型在训练集上能精准预测过去一个月的天气,但面对新的日期的天气预测时,却频繁出错。过拟合通常是因为模型学习能力过强、数据量不足、参数过多、特征选择不当或训练时间过长等原因导致。
  • 欠拟合

    • 表示模型未能充分拟合训练数据,对训练样本的一般性质尚未学好,没有很好地捕捉到数据特征。这种情况下,模型在训练集和测试集上的表现都不佳,泛化能力也较低。
    • 例如天气预测模型,在训练集上对过去一个月天气的预测就有很多错误,那么在预测新的日期的天气时,效果也不会好。欠拟合常发生在模型学习能力较弱,而数据复杂度较高时,比如使用过于简单的模型、数据量太少、特征不充分或正则化参数过大等。

模型评估方法 @

留出法 @

  • 原理:将数据集直接划分为两个相互独立且互斥的集合,通常一个集合作为训练集 $D_{train}$,另一个作为测试集 $D_{test}$。划分比例一般为7:3或8:2等。使用训练集 $D_{train}$ 来训练模型,然后在测试集 $D_{test}$ 上对训练好的模型进行评估,得到模型的性能指标。
  • 优点:实现简单,计算量相对较小,能够快速得到模型在测试集上的性能评估结果。
  • 缺点:由于划分方式的随机性,不同的划分可能会导致训练集和测试集的分布有所不同,从而使评估结果不稳定,对模型的评估可能存在偏差。

交叉验证法 @

  • 原理:将数据集 $D$ 划分为 $k$ 个大小相似的互斥子集,记为 $D_1, D_2, \cdots, D_k$。每次从 $k$ 个子集中选取 $k - 1$ 个子集作为训练集,剩下的一个子集作为测试集,这样进行 $k$ 次训练和测试。最后将 $k$ 次测试结果的平均值作为模型的评估指标,以综合评估模型的性能。
  • 优点:充分利用了数据集的所有数据,能够更全面地评估模型的性能,评估结果相对稳定和可靠。
  • 缺点:计算量较大,尤其是当 $k$ 取值较大时,需要进行多次模型训练和测试,耗费较多的时间和计算资源。

自助法 @

  • 原理:从原始数据集 $D$ 中有放回地随机抽样 $m$ 次,得到一个大小为 $m$ 的自助样本集 $D_{boot}$。由于是有放回抽样,原始数据集中约有 $36.8%$ 的数据不会出现在自助样本集中,这些数据组成测试集 $D_{test}$。使用自助样本集 $D_{boot}$ 训练模型,然后在测试集 $D_{test}$ 上评估模型的性能。
  • 优点:在数据集较小、难以有效划分训练集和测试集时非常有用,能够通过有放回抽样从有限的数据中获取更多的信息,增加了数据的利用率。
  • 缺点:自助样本集改变了原始数据集的分布,可能会引入一些偏差,导致评估结果与真实情况存在一定的差异,尤其是在数据集本身分布不均匀的情况下。

性能度量 @

基本度量单位 @

  1. 均方误差(Mean Squared Error, MSE)
    • 定义:预测值与真实值之差的平方的平均值。假设预测值为 $\hat{y}i$,真实值为 $y_i$,样本数量为 $n$,则均方误差的计算公式为 $MSE=\frac{1}{n}\sum{i = 1}^{n}(\hat{y}_i - y_i)^2$。
    • 应用场景:常用于回归任务,用于衡量模型预测结果与真实值之间的平均误差大小,值越小,说明模型的预测效果越好。
  2. 错误率(Error Rate)
    • 定义:分类错误的样本数占总样本数的比例。若分类错误的样本数为 $m$,总样本数为 $N$,则错误率 $E=\frac{m}{N}$。
    • 应用场景:在分类任务中广泛应用,直观地反映了模型分类错误的概率,是评估分类模型性能的一个基本指标。
  3. 精度(Accuracy)
    • 定义:分类正确的样本数占总样本数的比例。即 $Accuracy=\frac{TP + TN}{TP + TN + FP + FN}$,其中 $TP$(True Positive)为真正例,$TN$(True Negative)为真反例,$FP$(False Positive)为假正例,$FN$(False Negative)为假反例。
    • 应用场景:是分类任务中最常用的指标之一,用于衡量模型正确分类的能力,值越高表示模型性能越好。但在样本不均衡的情况下,精度可能会产生误导。
  4. 查准率(Precision)
    • 定义:预测为正例的样本中,真正例的比例,即 $Precision=\frac{TP}{TP + FP}$。
    • 应用场景:在一些对误判为正例较为敏感的场景中很重要,例如在垃圾邮件分类中,希望尽量减少将正常邮件误判为垃圾邮件的情况,此时查准率是一个关键指标。
  5. 查全率(Recall)
    • 定义:真实正例中被预测为正例的比例,计算公式为 $Recall=\frac{TP}{TP + FN}$。
    • 应用场景:在一些需要尽可能找出所有正例的场景中非常重要,比如在疾病检测中,希望尽可能检测出所有患病的个体,此时查全率是重要的评估指标。
  6. F1值(F1 - score)
    • 定义:查准率和查全率的调和平均数,$F1=\frac{2\times Precision\times Recall}{Precision + Recall}$。
    • 应用场景:当需要综合考虑查准率和查全率时,F1值是一个很好的指标,它能平衡地反映模型在这两个方面的性能,常用于评估分类模型的整体性能。
  7. ROC曲线(Receiver Operating Characteristic Curve)
    • 定义:以假正例率($FPR$)为横坐标,真正例率($TPR$)为纵坐标绘制的曲线。$FPR=\frac{FP}{FP + TN}$,$TPR=\frac{TP}{TP + FN}$。曲线通过改变分类器的阈值来得到不同的 $TPR$ 和 $FPR$ 组合点。
    • 应用场景:用于评估二分类模型的性能,能直观地展示模型在不同阈值下的分类性能,曲线越靠近左上角,说明模型性能越好。
  8. AUC(Area Under Curve)
    • 定义:ROC曲线下的面积,取值范围在 $[0, 1]$ 之间。
    • 应用场景:是衡量二分类模型性能的一个综合指标,AUC值越大,说明模型对正例和反例的区分能力越强,模型性能越好。AUC不受样本不均衡的影响,在很多实际应用中被广泛采用。 以下是代价敏感错误率和代价曲线的简单介绍:

代价敏感错误率 @

  • 定义:在分类问题中,不同类型的错误可能会带来不同的代价。代价敏感错误率就是考虑了错误分类代价后的一种错误率度量方式。假设对于一个二分类问题,将正例误分类为反例的代价为 $C_{FN}$(False Negative Cost),将反例误分类为正例的代价为 $C_{FP}$(False Positive Cost)。设 $FN$ 为假反例的数量,$FP$ 为假正例的数量,$N$ 为总样本数,则代价敏感错误率的计算公式可以表示为:$Cost - Sensitive Error Rate=\frac{C_{FN}\times FN + C_{FP}\times FP}{N}$。
  • 应用场景:在实际应用中,当不同类型的错误具有不同的业务影响时,代价敏感错误率能更准确地反映模型的实际性能。例如,在医疗诊断中,将患病者误判为健康人的代价可能远高于将健康人误判为患病者的代价,此时使用代价敏感错误率可以更好地评估模型在这种场景下的表现。

代价曲线 @

  • 定义:代价曲线是一种用于可视化代价敏感学习中模型性能的工具。它以代价敏感错误率为纵坐标,以正例的先验概率为横坐标。曲线上的每个点代表在不同正例先验概率下,模型的代价敏感错误率。代价曲线通常是通过对一系列不同阈值的分类器进行评估得到的,通过连接这些点形成一条曲线,能够直观地展示模型在不同先验概率和阈值设置下的代价情况。
  • 应用场景:代价曲线可以帮助我们直观地比较不同模型在代价敏感场景下的性能。通过观察曲线的形状和位置,我们可以了解模型在不同先验概率下的代价变化趋势,从而选择在特定应用场景下最优的模型或阈值。例如,在信用风险评估中,不同的违约先验概率会影响模型的决策,代价曲线可以帮助我们找到在不同违约先验概率下,能够最小化代价的模型策略。

假设检验 @

基于二项分布计算测试错误率的概率 @

\(P(\hat{\epsilon};\epsilon) = \binom{m}{\hat{\epsilon} \times m}\epsilon^{\hat{\epsilon} \times m}(1 - \epsilon)^{m - \hat{\epsilon} \times m}\)

该公式是在机器学习等领域中,基于二项分布原理,用于计算在给定真实错误率\(\epsilon\)的情况下,观测到测试错误率\(\hat{\epsilon}\)的概率 ,以下是具体介绍:

  • 符号含义
    • \(P(\hat{\epsilon};\epsilon)\):表示在真实错误率为\(\epsilon\)的条件下,观测到测试错误率为\(\hat{\epsilon}\)的概率。这里\(\hat{\epsilon}\)是通过测试数据得到的错误率估计值,\(\epsilon\)是数据真实的错误率。
    • \(m\):代表测试样本的数量。
    • \(\binom{m}{\hat{\epsilon} \times m}\):是组合数,也写作\(C_{m}^{\hat{\epsilon} \times m}\) ,其计算公式为\(\frac{m!}{(\hat{\epsilon} \times m)!(m - \hat{\epsilon} \times m)!}\) ,表示从\(m\)个样本中选取\(\hat{\epsilon} \times m\)个错误样本的组合方式数量。
    • \(\epsilon^{\hat{\epsilon} \times m}\):其中\(\epsilon\)为单个样本预测错误的真实概率,\(\hat{\epsilon} \times m\)为测试中预测错误的样本数量,该部分表示\(\hat{\epsilon} \times m\)个样本都预测错误的概率。
    • \((1 - \epsilon)^{m - \hat{\epsilon} \times m}\):\(1 - \epsilon\) 是单个样本预测正确的真实概率,\(m - \hat{\epsilon} \times m\)为测试中预测正确的样本数量,该部分表示\(m - \hat{\epsilon} \times m\)个样本都预测正确的概率。
  • 原理:公式基于二项分布,二项分布用于描述\(n\)次独立重复试验中成功次数的概率分布。在样本分类预测场景下,将样本预测错误视为“成功”事件,每个样本的预测可看作一次独立试验,预测错误概率为\(\epsilon\) 。从\(m\)个样本中恰好有\(\hat{\epsilon} \times m\)个样本预测错误的概率,就符合二项分布的计算逻辑。 利用这个公式,可在已知真实错误率的情况下,评估观测到特定测试错误率的可能性,辅助判断测试结果的合理性和可靠性等。

举例分析 @

假设我们有一个图像分类模型,现在要评估它的性能。 我们准备了\(m = 100\)张图像作为测试样本集,已知该模型在这类图像分类任务中的真实错误率\(\epsilon = 0.1\)(即平均每10张图像会有1张分类错误) ,现在我们想知道在这次测试中,观测到测试错误率\(\hat{\epsilon}= 0.15\)的概率是多少。

  1. 计算组合数\(\binom{m}{\hat{\epsilon} \times m}\) \(\hat{\epsilon} \times m = 0.15\times100 = 15\),即预计有15张图像分类错误。 组合数\(\binom{100}{15}=\frac{100!}{15!(100 - 15)!}=\frac{100!}{15!×85!}\) 通过计算器或数学软件可算出\(\binom{100}{15}≈2.53×10^{16}\) 。
  2. 计算\(\epsilon^{\hat{\epsilon} \times m}\) 将\(\epsilon = 0.1\),\(\hat{\epsilon} \times m = 15\)代入可得: \(0.1^{15}=1×10^{-15}\)
  3. 计算\((1 - \epsilon)^{m - \hat{\epsilon} \times m}\) \(1 - \epsilon = 1 - 0.1 = 0.9\),\(m - \hat{\epsilon} \times m = 100 - 15 = 85\) 则\(0.9^{85}≈0.0064\)

将上述计算结果代入原公式: \(P(0.15;0.1)=\binom{100}{15}×0.1^{15}×0.9^{85}\) \(≈2.53×10^{16}×1×10^{-15}×0.0064\) \(≈ 0.162\)

这意味着在真实错误率为\(0.1\)的情况下,从100个测试样本中观测到测试错误率为\(0.15\)(即15个样本分类错误)的概率约为\(0.162\) 。通过这样的计算,我们可以了解在给定真实错误率时,出现不同测试错误率的可能性大小,帮助判断测试结果是否合理,以及模型的表现是否符合预期。

McNemar检验 @

McNemar检验是一种用于分析配对数据的非参数检验方法,常用于比较两种处理方法或两个相关样本在分类变量上的差异。以下是其详细介绍:

适用场景 @

当我们有一对相关的样本,并且每个样本都被分类到两个类别中的一个时,就可以使用McNemar检验。例如,在医学研究中,对同一批患者在治疗前和治疗后进行疾病状态(痊愈、未痊愈)的评估;在市场调研中,调查消费者对某产品改进前后的满意度(满意、不满意)等。

检验原理 @

McNemar检验的原假设是两种处理方法在总体上没有差异,即两种分类结果的概率在总体中是相等的。它主要关注的是配对数据中分类结果发生变化的情况。

计算步骤 @

  1. 首先,将数据整理成如下的四格表形式:
处理方法A为类别1 处理方法A为类别2
处理方法B为类别1 $a$ $b$
处理方法B为类别2 $c$ $d$

其中,$a$表示两种处理方法都为类别1的观测数,$b$表示处理方法A为类别2而处理方法B为类别1的观测数,$c$表示处理方法A为类别1而处理方法B为类别2的观测数,$d$表示两种处理方法都为类别2的观测数。

  1. 然后,计算检验统计量:
    • 当$b + c \geq 10$时,使用近似的$\chi^2$检验,统计量为$\chi^2=\frac{(b - c)^2}{b + c}$,自由度为1。
    • 当$b + c < 10$时,使用精确的二项分布检验。

举例分析 @

假设对100名学生进行了一次数学测验和一次语文测验,将成绩分为及格和不及格两类,得到以下数据:

数学及格 数学不及格
语文及格 40 20
语文不及格 15 25

这里$a = 40$,$b = 20$,$c = 15$,$d = 25$。

由于$b + c = 20 + 15 = 35 \geq 10$,我们使用近似的$\chi^2$检验。

计算统计量$\chi^2=\frac{(20 - 15)^2}{20 + 15}=\frac{25}{35}\approx 0.714$。

查$\chi^2$分布表,自由度为1时,在给定的显著性水平(如$\alpha = 0.05$)下,临界值为3.841。

因为$0.714 < 3.841$,所以我们不拒绝原假设,即在这次测验中,认为学生的数学成绩和语文成绩的及格情况没有显著差异。

McNemar检验是一种简单有效的配对数据检验方法,但在使用时要注意其适用条件,确保数据符合配对和分类变量的要求。

Friedman检验 @

假设我们有三种机器学习算法A、B、C,在5个不同的数据集上进行训练和测试,得到它们在每个数据集上的性能指标(如准确率)如下表所示:

数据集 算法A 算法B 算法C
1 0.85 0.80 0.75
2 0.78 0.82 0.70
3 0.82 0.85 0.78
4 0.80 0.83 0.76
5 0.83 0.86 0.79

首先,对每个数据集上的算法性能进行排序,排名越靠前得分越高(排名相同则取平均排名),得到如下排名表:

数据集 算法A 算法B 算法C
1 1 2 3
2 2 1 3
3 2 1 3
4 2 1 3
5 2 1 3

接下来计算每个算法的平均排名:

  • 算法A的平均排名 $R_1=(1 + 2 + 2 + 2 + 2)/5 = 1.8$
  • 算法B的平均排名 $R_2=(2 + 1 + 1 + 1 + 1)/5 = 1.2$
  • 算法C的平均排名 $R_3=(3 + 3 + 3 + 3 + 3)/5 = 3$

Friedman检验的统计量计算公式为: $\chi F^2=\frac{12N}{k(k + 1)}\sum{i = 1}^k\left(R_i-\frac{k + 1}{2}\right)^2$ 其中,$N$是数据集的数量(这里$N = 5$),$k$是算法的数量(这里$k = 3$),$R_i$是第$i$个算法的平均排名。

将数值代入公式可得: [ \begin{align*} \chi _F^2&=\frac{12\times5}{3\times(3 + 1)}\times\left[\left(1.8-\frac{3 + 1}{2}\right)^2+\left(1.2-\frac{3 + 1}{2}\right)^2+\left(3-\frac{3 + 1}{2}\right)^2\right]\\ &=\frac{60}{12}\times\left[(1.8 - 2)^2+(1.2 - 2)^2+(3 - 2)^2\right]\\ &= 5\times\left[(-0.2)^2+(-0.8)^2+(1)^2\right]\\ &= 5\times(0.04 + 0.64 + 1)\\ &= 5\times1.68\\ &= 8.4 \end{align*} ]

然后,根据自由度 $df = k - 1 = 3 - 1 = 2$,查找$\chi^2$分布表,在给定的显著性水平(如$\alpha = 0.05$)下,得到临界值。若计算得到的$\chi _F^2$大于临界值,则拒绝原假设,认为至少有两种算法的性能存在显著差异。

Nemenyi后续检验 @

当Friedman检验表明存在显著差异后,使用Nemenyi后续检验来确定具体哪些算法之间存在差异。

Nemenyi检验的临界值域(CD)计算公式为: $CD = q_{\alpha}\sqrt{\frac{k(k + 1)}{6N}}$ 其中,$q_{\alpha}$是根据显著性水平$\alpha$和自由度确定的学生化极差统计量,$N$是数据集数量,$k$是算法数量。

对于$\alpha = 0.05$,$k = 3$,$N = 5$,通过查阅相关统计表可得$q_{0.05}=3.64$。

则$CD = 3.64\sqrt{\frac{3\times(3 + 1)}{6\times5}}=3.64\sqrt{\frac{12}{30}}\approx 2.05$

然后比较不同算法平均排名之间的差值,若差值大于$CD$,则认为这两种算法之间存在显著差异。

例如,算法A和算法B的平均排名差值为$\vert R_1 - R_2\vert=\vert1.8 - 1.2\vert = 0.6<2.05$,所以在$\alpha = 0.05$的显著性水平下,算法A和算法B的性能没有显著差异。

算法A和算法C的平均排名差值为$\vert R_1 - R_3\vert=\vert1.8 - 3\vert = 1.2<2.05$,算法B和算法C的平均排名差值为$\vert R_2 - R_3\vert=\vert1.2 - 3\vert = 1.8<2.05$,所以在该显著性水平下,算法A与算法C、算法B与算法C之间的性能也没有显著差异。

以上例子和公式推导展示了Friedman检验和Nemenyi后续检验在比较多个机器学习算法性能时的应用过程。实际应用中,数据情况和结果可能更为复杂,需要根据具体问题进行分析和判断。

偏差、方差、分解 @

在机器学习和统计学中,偏差(Bias)、方差(Variance)以及它们的分解是评估模型性能的重要概念,以下是详细讲解:

偏差 @

  • 定义:偏差是指模型预测结果与真实结果之间的差异程度,反映了模型的拟合能力。高偏差意味着模型在训练数据上的拟合效果不佳,可能是由于模型过于简单,无法捕捉到数据中的复杂关系。
  • 举例:如果用一个线性模型去拟合一个非线性的数据集,那么这个模型很可能会产生较大的偏差,因为它无法准确地描述数据的真实分布。

方差 @

  • 定义:方差衡量的是模型在不同训练数据集上的预测结果的波动程度。高方差表示模型对训练数据的微小变化非常敏感,可能是因为模型过于复杂,记住了训练数据中的噪声和细节,而不是数据的本质规律。
  • 举例:在决策树模型中,如果树的深度过大,就可能会导致模型的方差较高。因为这样的模型会过于拟合训练数据,当使用不同的训练集进行训练时,模型的结构和预测结果可能会发生很大的变化。

偏差 - 方差分解 @

  • 定义:偏差 - 方差分解是将模型的期望预测误差分解为偏差的平方、方差和噪声三部分。数学表达式为:\(E[(y - \hat{y})^2] = Bias^2 + Variance + Noise\),其中\(y\)是真实值,\(\hat{y}\)是模型的预测值。
  • 解释:偏差的平方表示模型的平均预测结果与真实结果之间的偏离程度;方差表示模型在不同训练数据集上的预测结果的离散程度;噪声是数据本身固有的不确定性,无法通过模型来消除。通过偏差 - 方差分解,可以更深入地理解模型的误差来源,从而指导模型的选择和优化。

偏差与方差的权衡 @

  • 在模型选择和训练过程中,需要平衡偏差和方差。通常情况下,增加模型的复杂度可以降低偏差,但会增加方差;反之,降低模型的复杂度可以减小方差,但可能会增大偏差。
  • 理想的模型应该在偏差和方差之间找到一个合适的平衡点,使得模型在训练数据和测试数据上都能表现出较好的性能。例如,在多项式回归中,选择合适的多项式次数可以控制模型的偏差和方差。如果次数过低,模型会有高偏差、低方差,不能很好地拟合数据;如果次数过高,模型会有低偏差、高方差,容易过拟合。

偏差、方差以及它们的分解是理解模型性能和进行模型优化的关键概念,有助于选择合适的模型复杂度和训练方法,以提高模型的泛化能力。

举例分析 @

想象你在打靶,靶子的中心是真实值,而你每次射击的结果就是模型的预测值。

  • 偏差:如果你总是打在靶子的左侧或右侧,离靶心有一定的距离,这就代表偏差。这说明你的射击(模型)有系统性的误差,总是偏离真实值,就像一个总是打偏的射手,可能是因为他的瞄准方法有问题,导致每次射击都不能准确命中靶心,反映在模型上就是模型过于简单,无法准确捕捉数据的真实关系。

  • 方差:如果你的射击结果很分散,有的时候打在靶子的左上角,有的时候打在右下角,虽然平均下来可能接近靶心,但每次射击的波动很大,这就是方差大。就好比一个射手射击的稳定性很差,每次射击的结果都不一样,受外界因素(如风速、心理状态等)影响很大,对应到模型中就是模型对训练数据的微小变化过于敏感,过于复杂而记住了一些无关的细节和噪声。

  • 偏差 - 方差分解:把每次射击的误差(偏离靶心的程度)进行分解,一部分是由于你系统性打偏造成的(偏差的平方),一部分是因为你射击的不稳定性导致的(方差),还有一部分可能是由于一些不可控的随机因素,比如偶尔一阵怪风影响了子弹的轨迹(噪声)。通过这种分解,你可以清楚地知道射击误差的来源,是因为瞄准方法有问题(偏差),还是射击的稳定性不好(方差),或者是存在一些外部的随机因素(噪声)。

  • 偏差与方差的权衡:你可以尝试调整射击的方法和姿势来减小偏差,比如更仔细地瞄准,但这可能会让你射击的稳定性下降,也就是方差增大;或者你为了保证射击的稳定性,采用一种比较简单但不太准确的射击姿势,这样方差会减小,但可能会导致偏差增大。所以你需要找到一个合适的平衡点,既能保证一定的瞄准精度,又能保持射击的稳定性,让每次射击都能尽量接近靶心,这就如同在模型选择和训练中,要找到一个合适的模型复杂度,使偏差和方差达到平衡,从而让模型具有较好的泛化能力。