统计学习的分类概述

在这里插入图片描述

一、引言

统计学习(或机器学习)范围广、内容多、应用领域广泛,无法用一个统一的理论体现涵盖所有内容,可以从多个角度对统计学习方法进行分类。

二、基本分类

基本分类的方法是大部分人所知悉的,按基本分类,统计学习可以分为监督学习、非监督学习、强化学习,有时还包括半监督学习、主动学习。

2.1、监督学习(Supervised Learning)

监督学习是指从标注数据中学习预测模型的机器学习,标注数据表示输入输出的对应关系,预测模型对给定的输入产生相应的输出,其本质是学习输入到输出的映射的统计规律。

监督学习是一种基于已知输入和对应输出(标签)的数据集进行学习的方法。在这种模式下,模型通过训练数据学习到一个映射关系,即如何从输入数据预测输出结果。

监督学习可以进一步分为分类问题和回归问题。分类问题是指输出是离散的类别标签,而回归问题是指输出是连续的数值。

常见的监督学习算法包括线性回归、逻辑回归、支持向量机、决策树、神经网络等。

❀❀❀❀❀❀老猿注

  • 在监督学习中,标注(Labeling)和标签(Label)是紧密相关的概念,它们共同构成了监督学习数据集的基础。
  • 标签(Label):标签是与数据样本直接相关联的信息,它代表了样本的正确输出或目标值。在分类问题中,标签通常是类别名称;在回归问题中,标签是数值。标签是模型需要学习预测的目标。例如,在一个用于识别猫和狗的数据集中,每个图片样本的标签可能是“猫”或“狗”。
  • 标注(Labeling):标注是指将标签分配给数据样本的过程。这个过程通常由人工完成,专家或标注者会根据样本的内容和特征,将其分类到正确的类别或给出相应的数值。标注的目的是创建一个带有正确答案的数据集,这样监督学习算法就可以使用这个数据集来训练模型,学习如何从输入数据预测标签。
  • 在监督学习中,每个训练样本由输入数据和对应的标签组成。输入数据可以是图像、文本、声音信号等形式,而标签则是对该输入数据的描述或结果。通过学习输入数据和标签之间的关系,模型能够识别出新的、未见过的数据样本的标签。因此,标签是监督学习中的目标输出,而标注是将这些标签与数据样本关联起来的过程。两者共同确保了监督学习算法能够在训练过程中获得正确的指导,从而学习到有效的预测或分类规则。

2.2、非监督学习(Unsupervised Learning)

2.2.1、概念

非监督学习(也称为无监督学习)是指从无标注的的数据中学习预测模型的机器学习,涉及到没有标签的数据集。模型需要自行发现数据中的结构和模式。

无监督学习的本质是学习数据中的统计规律或潜在结构,主要的目标可能包括聚类(将数据分组到不同的类别中,使得同一组内的数据点相似度高,不同组之间的数据点相似度低)和降维(减少数据的维度,同时保留重要的信息)。

2.2.2、案例

非监督学习的理解可能没有监督学习那么直观,为此老猿在此举几个例子,有助于使得这2个概念比较通俗易懂。

2.2.2.1、聚类(Clustering)应用案例
  • 市场细分:
    企业经常使用聚类分析来识别不同的客户群体。例如,一个零售公司可能根据消费者的购买行为、年龄、收入水平和其他社会经济因素将客户分为几个不同的群组。每个群组代表了市场上的一个特定细分,具有相似的购买习惯和偏好。通过识别这些细分,公司可以更有效地定制营销策略和产品,以满足不同客户群体的需求。
  • 社交网络分析:
    在社交网络中,聚类可以帮助识别紧密联系的用户群组或社区。例如,通过分析用户之间的互动和共同兴趣,可以发现社交网络中的兴趣小组或朋友圈。这种分析对于社交网络的设计和信息传播策略非常有用。
2.2.2.2、降维(Dimensionality Reduction)应用案例
  • 基因相关性识别
    在生物信息学领域,尤其是在基因表达数据分析中,降维技术是分析大规模基因数据的重要工具。研究者通常需要处理成千上万个基因的表达数据,每个基因都可以看作是一个维度。
    通过使用降维技术,研究者可以将高维的基因表达数据映射到二维或三维空间中,以便于可视化和解释。这样,研究者可以识别出具有相似表达模式的基因群体,这些群体可能参与相同的生物过程或病理状态。降维后的可视化结果有助于研究者发现基因之间的相关性,识别疾病标志物,以及理解复杂的生物系统。
  • 图像压缩
    在数字图像处理中,数字图像的每个像素都可以认为是一个维度,降维技术可以用来压缩图像数据,去除冗余信息,减少存储空间和传输带宽,同时尽量保持图像的视觉质量。
  • 自然语言处理
    在自然语言处理中,文本数据通常由大量的词语组成,每个词语都可以看作是一个特征。如要对文本进行分析或者分类,那么处理这么多维度的数据将会非常复杂和耗时。通过降维技术,可以将文本数据进行压缩,减少数据的维度,同时保留重要的信息。这样可以提高文本处理的效率,并且在一定程度上减少存储空间的需求。

2.3、强化学习(Reinforcement Learning):

强化学习是指智能系统在与环境的连续互动中学习最优行为策略的机器学习,模型(称为智能体或智能系统)通过与环境的交互来学习如何做出决策。在这种学习模式中,智能体在每一步都会采取一个动作,并从环境中获得一个反馈(奖励或惩罚)。目标是学习一个策略,以最大化长期累积的奖励。

❀❀❀❀❀❀下面老猿举一些强化学习的应用案例:

  • 自动驾驶汽车
    自动驾驶汽车是一个复杂的强化学习应用实例。在这个场景中,汽车是一个智能体,它需要学习如何在道路上安全行驶。智能体的目标是最大化安全和效率,这可以通过奖励函数来实现,例如,奖励智能体遵守交通规则、避免碰撞和减少行驶时间等行为。
    通过与真实世界的不断交互,智能体学习到何时加速、何时减速、何时变道等决策。强化学习算法可以帮助智能体在各种交通情况下做出最佳决策,从而实现安全和高效的自动驾驶。
  • 游戏AI
    强化学习在游戏AI领域有着广泛的应用。例如,DeepMind的AlphaGo就是一个著名的强化学习应用,它通过自我对弈的方式学习如何下围棋,并最终击败了世界顶尖的围棋选手。
    在游戏AI中,智能体的目标是赢得游戏。通过不断尝试不同的策略和行动,智能体学习到哪些行动序列能够带来胜利。强化学习算法使得智能体能够从每次游戏的结果中学习,并不断优化其策略。
  • 机器人控制
    在机器人控制领域,强化学习可以用来教会机器人执行各种任务,如抓取物体、行走或跳跃等。机器人作为智能体,需要学习如何在复杂的环境中导航和操作。
    通过强化学习,机器人可以通过尝试不同的动作来学习如何完成任务。例如,一个机械臂可以通过不断尝试不同的抓取动作来学习如何稳定地抓取一个物体。强化学习算法根据机器人的行为和任务完成情况给予奖励或惩罚,从而帮助机器人学习到有效的动作策略。
  • 智能客服:
    强化学习也可以应用于智能客服系统,使其能够更好地与用户交互。在这种情况下,智能客服的目标是提供准确和有用的信息,同时保持用户的满意度。
    通过与用户的交互,智能客服系统可以学习如何更好地理解用户的问题,并提供合适的回答。强化学习算法可以根据用户的反馈来优化客服系统的回答策略,例如,通过奖励准确和及时的回答,惩罚不相关或错误的信息。

2.4、半监督学习(Semi-supervised Learning)

半监督学习介于监督学习和非监督学习之间,它使用标注数据和未标注数据学习预测模型。这种方法利用少量的标注数据和大量的未标注数据,通过结合两者来提高学习模型的性能。半监督学习在标注数据成本高昂或难以获得的情况下特别有用。

半监督学习旨在利用未标注数据中的信息,辅助标注数据进行监督学习,以较低成本达到较好的学习效果。

半监督学习的关键点是怎么使得未标注的数据发生作用,这个问题有多种方法来应对,在此暂不展开说明。

2.5、主动学习(Active Learning):

主动学习是一种特殊的学习模式,机器不断主动给出实例让人进行标注,然后利用标注数据学习预测模型,模型可以主动选择它认为最有信息量的数据点进行标注。在这种模式下,模型可以向人类专家或其他信息源提出问题(例如,请求标注特定的数据点),并根据得到的答案来更新和改进自身。主动学习的目标是以最少的标注努力获得最好的学习效果。

在这里插入图片描述

三、按模型分类

3.1、概率模型和非概率模型

3.1.1、概率模型(Probabilistic Models)

概率模型是基于概率论的模型,它们在模型的构建和预测过程中显式地使用概率分布。概率模型考虑了数据的不确定性和随机性,通常用于估计事件的概率或计算条件概率。

概率模型的关键特点如下:

  • 不确定性的量化:概率模型通过概率分布来量化不确定性,为每个可能的事件赋予一个概率值。
  • 条件概率:概率模型可以计算给定某些观测条件下其他事件发生的概率,这在处理有依赖关系的数据时非常有用。
  • 贝叶斯推断:概率模型支持贝叶斯推断,这是一种在给定新证据时更新信念(或假设的概率)的方法。
  • 泛化能力:概率模型通常具有良好的泛化能力,因为它们考虑了数据的随机波动。
  • 模型复杂性:概率模型可能会比较复杂,需要估计多个参数,但这也使得它们能够捕捉数据中的复杂结构。

概率模型的例子包括朴素贝叶斯分类器、高斯混合模型、隐马尔可夫模型等。

3.1.2、非概率模型(Non-probabilistic Models)

非概率模型不直接使用概率分布,而是通过确定性的规则或映射关系来进行预测。这类模型通常关注于找到一个从输入到输出的最优映射,而不显式地考虑概率或不确定性。

非概率模型的特点如下:

  • 确定性映射:非概率模型通常寻找一个确定性的函数或规则来描述输入和输出之间的关系。
  • 优化目标:这类模型的目标通常是最小化预测误差或最大化某个性能指标,如准确率、召回率等。
  • 简单性和效率:非概率模型往往更简单、计算效率更高,因为它们不需要估计概率分布或处理不确定性。
  • 缺乏概率解释:非概率模型不提供概率解释,因此它们在处理需要概率解释的问题时可能不如概率模型灵活。
  • 决策边界:非概率模型,特别是基于规则的模型,可能会产生硬决策边界,这可能导致过拟合。

非概率模型的例子包括支持向量机、神经网络等。

3.1.3、确定性模型(Deterministic Models)

确定性模型是指在给定输入的情况下,总是产生相同输出的模型。这类模型不考虑数据的随机性或不确定性,而是假设输入和输出之间存在一个明确的、固定的映射关系。确定性模型的特点是:

  • 输出是唯一的,不随概率变化。
  • 通常用于那些没有内在随机性的问题,或者对随机性不感兴趣的场景。

例如线性回归等。

确定性模型可以被视为非概率模型的一个特例。所有确定性模型都是非概率模型,但非概率模型不全是确定性的。非概率模型可能使用其他方法来处理不确定性,而不依赖概率分布。

3.1.4、概率模型与非概率模型应用场景

概率模型与非概率模型的主要区别在于是否使用概率分布来描述数据和预测。概率模型提供了关于预测不确定性的量化信息,而非概率模型可能不提供这种信息,或者采用其他方式来处理不确定性。

选择使用概率模型还是非概率模型通常取决于问题的性质和需求。如果问题需要考虑数据的随机性或需要概率解释,概率模型可能更合适。如果问题更关注于找到一个最优的预测或决策规则,而不关心概率解释,非概率模型可能更受欢迎。

在实际应用中,有时也会结合概率模型和非概率模型的优点,例如,在非概率模型的基础上引入概率估计,或者将概率模型的输出用于非概率模型的决策过程中。这种混合方法可以提供更灵活和强大的解决方案。

3.2、线性模型和非线性模型

统计学习模型中,特别是非概率模型中,可以分为线性模型(Linear Model)和非线性模型(Non-linear Model)。线性模型是指模型的输出是输入特征的线性组合,非线性模型则与此相反。

3.3、参数化模型和非参数化模型

参数化模型(Parametric Model)是基于一组固定数量的参数来定义的模型,这些参数完全确定了模型的结构和形式,模型可以由有限参数完成表达。参数化模型通常基于某些假设或理论来指定模型的形式,例如正态分布、指数分布等。

非参数化模型(Non-parametric Model)不基于固定数量的参数,可以说模型参数无穷大,而是允许模型结构根据数据的内在特性自由变化,会随着训练数据的增加而不断增大。

❀❀❀❀❀❀老猿注:现在流行的GPT4.0等大模型是基于深度学习中的神经网络架构,特别是Transformer模型,它们通过训练过程中的学习调整大量参数来捕捉和学习数据中的复杂模式和关系,但这些模型并不是非参数模型,而是参数化模型。

四、按算法分类

机器学习按算法分类分为了在线学习(Online Learning)和批量学习(Batch Learning):

  1. 在线学习(Online Learning)
    在线学习算法在数据流式传输时进行学习,每次只处理一个样本或小批量样本,然后立即更新模型,并不断重复该过程。这种学习方式适合于数据不断变化或大量数据的情况,因为它允许模型快速适应新数据。

  2. 批量学习(Batch Learning)
    批量学习算法在训练过程中一次性使用所有可用的数据。这种学习方式适合于数据集相对较小或固定的情况。

在线学习看起来很好,但比批量学习更难,很难得到预测准确率更高的模型,因为每次模型的更新可利用的数据有限。

四、按技巧分类

机器学习按技巧分类为贝叶斯学习(Bayesian Learning)和核方法(Kernel Method)。

4.1、贝叶斯学习(Bayesian Learning)

贝叶斯学习是一种统计学习方法,又称为贝叶斯推理(Bayesian Inference),它基于贝叶斯定理和概率论的原理。

贝叶斯定理:贝叶斯学习的核心是贝叶斯定理,它提供了一种计算条件概率的方法。贝叶斯定理的公式为:
P ( θ ∣ D ) = P ( θ ) ⋅ P ( D ∣ θ ) P ( D ) P(θ|D) = \frac{P(θ) \cdot P(D|θ)}{P(D)} P(θD)=P(D)P(θ)P(Dθ)

按照统计学的条件概率的贝叶斯定理,P(θ|D) 是在事件D发生的条件下事件θ发生的概率(后验概率),P(D∣θ) 是在事件θ发生的条件下事件D发生的概率,P(θ)是事件θ的先验概率,P(D) 是事件D的概率。

在统计学习中,D表示数据,θ表示模型参数,P(θ)是先验概率,P(θ|D)是后验概率,P(D|θ)是似然函数,模型估计时,估计整个后验概率分布P(θ|D),如果要给出一个模型,通常取后验概率最大的模型。

预测时,计算数据对后验概率的期望值:P(x|D)=∫P(x|θ,D)P(θ|D)dθ,这里x是新样本。

在贝叶斯学习中,模型的参数被视为随机变量,它们有先验概率分布,通过观测数据来更新这些参数的后验概率分布。具体来说,在概率模型的学习和推理中,利用贝叶斯定理计算在给定数据条件下模型的条件概率(即后验概率),并应用这个原理进行模型的估计以及对数据的预测。

老猿觉得这个公式在 概率统计中很好理解,但到统计学习中这个公式与概率统计中的理解要复杂得多,为此老猿专门进行了深入学习,相关感悟请参考《关于机器学习中贝叶斯学习(Bayesian Learning)计算公式的理解》。

4.2、核方法(Kernal Method)

核方法是使用核函数来表示和学习非线性模型的一种机器学习方法,它将非线性的复杂数据从原始空间映射到新空间,使得在新空间中原本复杂的关系变得简单,从而可以使用传统的线性方法来处理。也就是说核方法通过一种特殊的变换,将原始数据映射到一个新空间,在这个新空间中,原本线性不可分的数据变得线性可分了。

核函数是机器学习中一种特殊的函数,它能够在不显式地进行高维空间映射的情况下,计算在新的特征空间中点与点之间的相似性。核函数通过将数据映射到更高维的特征空间,核函数使得算法能够找到合适的决策边界,从而提高学习性能。核函数之所以重要,是因为它们使得机器学习算法能够处理那些在原始特征空间中线性不可分的数据。

核函数的一个关键特性是它满足Mercer定理,这意味着它可以生成一个有效的内积,并且可以保证学习算法(如支持向量机)的稳定性和收敛性。常见的核函数包括:

  1. 线性核函数:这是最简单的核函数,它计算两个向量的点积。虽然它看起来很简单,但它实际上只在原始空间中工作,没有映射到更高维的空间;
  2. 多项式核函数:这个核函数可以模拟特征的高阶交互,通过对输入特征的高次幂和交互项进行计算来实现这一点;
  3. 径向基函数(RBF)核:这是一种非常流行的核函数,特别是在支持向量机中。它基于高斯分布,可以测量数据点之间的欧几里得距离。RBF核函数能够处理非线性可分的数据,并且通过调整带宽参数,可以控制函数的平滑程度;
  4. Sigmoid核函数:这个核函数的形式类似于神经网络中的Sigmoid激活函数。它可以用来模拟数据点之间的非线性关系。

核函数之所以重要,是因为它们使得机器学习算法能够处理那些在原始特征空间中线性不可分的数据。通过将数据映射到更高维的特征空间,核函数使得算法能够找到合适的决策边界,从而提高学习性能。此外,核方法的另一个优点是它们具有很好的泛化能力,这意味着它们能够在未见过的数据上表现得也很好。这使得核方法在许多实际应用中非常有用,如图像识别、生物信息学、文本分类等领域。

以上关于核方法和核函数的介绍是老猿查阅相关资料整理而成的,但老猿自己几乎都没有理解,只有等后续继续学习才能明白,不过为了文章的完整性,在此还是将其整理在文中,如果有疏漏之处,敬请指教。

五、小结

本文介绍了统计学习的各种分类,按基本分类,统计学习可以分为监督学习、非监督学习、强化学习,有时还包括半监督学习、主动学习,按模型分类,分为概率模型和非概率模型,按算法分类分为了在线学习和批量学习,按技巧分类为贝叶斯学习和核方法。这些分类方法是从不同视角进行的,因此各种分类方法之间对应的学习方法又是交叉的,正所谓条条大路通罗马。

在这里插入图片描述

更多统计学习基础知识请参考专栏《统计学习基础知识》。

更多人工智能基础知识请参考专栏《人工智能基础知识》。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython
  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先需要了解得物网站的数据结构和爬取方式,得物网站比较复杂,需要使用Selenium+BeautifulSoup进行爬取。 以下是一个简单的得物爬虫Python代码实现(注:仅供学习参考,请勿用于商业用途): ```python import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup options = Options() options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在报错的问题 options.add_argument('window-size=1920x3000') # 指定浏览器分辨率 options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面 options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 options.add_argument('--headless') # 无界面 driver = webdriver.Chrome(options=options) url = 'https://www.dewu.com/' driver.get(url) # 等待页面加载完成 time.sleep(3) # 模拟鼠标点击,展开商品列表 driver.find_element_by_xpath('//div[text()="全部商品"]').click() # 等待页面加载完成 time.sleep(3) # 获取页面源代码 html = driver.page_source # 解析页面 soup = BeautifulSoup(html, 'html.parser') # 获取商品列表 items = soup.find_all('div', {'class': 'item-card'}) for item in items: # 获取商品标题 title = item.find('div', {'class': 'title'}).text.strip() # 获取商品价格 price = item.find('div', {'class': 'price'}).text.strip() # 获取商品链接 link = item.find('a', {'class': 'item-link'})['href'] print(title, price, link) # 关闭浏览器 driver.quit() ``` 这里的代码仅仅是一个简单的爬虫示例,如果想要更加深入地了解得物网站的数据结构和爬取方式,需要结合具体的需求进行更加详细的分析和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值