深度学习入门(五):有监督学习

一、逻辑回归

逻辑回归(Logistic Regression)是一种广泛使用的分类算法,以作者的理解,它是在线性回归【线性回归:拟合一条最接近自变量X与因变量Y关系的直线,线性回归可预测连续值】的基础上添加了一个逻辑转换函数(通常是Sigmoid函数),以将输出值映射到[0,1]区间,然后根据一个阈值(通常是0.5)来进行分类。

通过这种方式,逻辑回归将线性回归的输出转换为一个介于0和1之间的概率值,再通过阈值判断来实现分类任务。

优点和应用

  • 简单易用:逻辑回归是一个非常简单但非常强大的分类算法,特别适用于二分类问题。
  • 概率输出:逻辑回归不仅给出类别标签,还能提供类别的概率,这在很多应用中非常有用。
  • 广泛应用:逻辑回归广泛应用于医学、社会科学、金融等领域,用于疾病预测、用户行为分析、信用评分等任务。

二、分类回归树

分类回归树(Classification and Regression Tree, CART)是一种决策树模型,用于处理分类和回归问题。决策树通过一系列的决策节点将数据分割成更小的部分,直到达到叶子节点。每个决策节点基于某个特征的特定值来划分数据,叶子节点则代表最终的输出值(类别或连续值)。

决策树的基本组成部分

  1. 根节点(Root Node)

    • 决策树的顶端节点,是树的起点。
    • 它包含了整个数据集,并根据某个特征的特定值进行第一次划分
  2. 内部节点(Internal Node)

    • 位于树的中间,连接根节点和叶子节点。
    • 每个内部节点基于某个特征的特定值继续划分数据。
  3. 叶子节点(Leaf Node)

    • 决策树的终端节点,不再进行进一步的划分。
    • 代表最终的输出值,在分类问题中是类别标签,在回归问题中是一个连续值。

分类回归树的构建过程

  1. 选择最佳分裂点

    • 对每个特征进行尝试,根据某个准则(如信息增益、基尼指数或方差)选择最佳分裂点。
    • 信息增益:通常用于ID3和C4.5算法,度量特征对数据集的纯度提升。
    • 基尼指数:用于CART算法,度量数据集的不纯度。
    • 方差:用于回归树,度量连续变量的分散程度。
  2. 数据集划分

    • 根据选择的最佳分裂点,将数据集划分成两个或多个子集。
    • 对每个子集重复上述过程,直到满足停止条件(如叶子节点中的样本数小于某个阈值,或者达到最大树深度)。
  3. 构建子树

    • 对每个子集递归地构建子树,直到所有数据都被正确分类或达到停止条件。

让我们理解一下决策树的分裂。

        在决策树的背景中,“分裂”是一个过程,通过这个过程,数据会被根据某个特定的标准(如某个特征的值)划分为两个或更多的子集

        想象一下,你有一篮子水果,里面既有苹果又有香蕉。你的目标是将苹果和香蕉分开。一种简单的方法是根据“水果类型”进行“分裂”:所有的苹果放在一个篮子里,所有的香蕉放在另一个篮子里。

        在决策树中,我们也做同样的事情,但不是与水果,而是与数据。我们查看数据的特征(例如年龄、性别、收入等)并选择一个特征来“分裂”数据,以使结果更“纯”。纯度意味着尽可能减少每个子集中类别的混合。例如,假设我们有以下数据,并想知道谁会在雨中打伞:

名字是否带伞
Alice
Bob
Carol

        如果我们知道每个人都是因为他们不想淋湿而带伞的,我们可以使用“不想淋湿”这一特征进行“分裂”:那些不想淋湿的人会带伞,而其他人则不会。在这里,“分裂”是一个决策点,它告诉我们如何将数据分为两部分:带伞的人和不带伞的人。当我们在决策树中进行“分裂”时,我们试图找到最佳的方式(即哪个特征)来区分数据,使每个子集尽可能地纯净。

        在决策树中,每次节点分裂的目的是找到一个特征,使得其分裂可以最大程度地增加信息增益(或者其他定义的纯度增益)。对于常规的决策树,这一步会考虑数据集中的所有特征,并选择其中的最佳特征进行分裂。

分类回归树的例子

假设我们有一个决策树,根据一个人的年龄和婚姻状况进行分类,以决定他们是否会购买跑车或小型货车。

  • 问题描述
    • 目标:根据年龄和婚姻状况预测某人是否会购买跑车或小型货车
    • 特征:年龄、婚姻状况。
    • 类别标签:购买跑车、购买小型货车。
                         是否超过30岁?
                        /             \
                     是                 否
                   /                      \
                已婚?                  购买跑车
               /     \
           是          否
         /              \
购买小型货车          购买跑车
  • 决策过程
    1. 从根节点开始,根据"是否超过30岁"进行第一次划分。
      • 如果是,则继续到内部节点。
      • 如果否,则分类为"购买跑车"。
    2. 在内部节点,根据"已婚?"进行第二次划分。
      • 如果是,则分类为"购买小型货车"。
      • 如果否,则分类为"购买跑车"。

三、朴素贝叶斯

朴素贝叶斯(Naive Bayes)是一类基于贝叶斯定理的简单但强大的分类算法。它之所以被称为“朴素”,是因为它假设所有特征(变量)之间相互独立,这在很多现实应用中并不完全正确,但这种假设使得算法计算量大大减少,并且在很多实际问题中仍然表现良好。

贝叶斯定理

贝叶斯定理是朴素贝叶斯算法的基础,它用于计算某一事件在给定另一事件发生的前提下的概率。贝叶斯定理的公式如下:

  • P(h∣d):后验概率,是在给定数据 d 的前提下,假设 h 为真的概率。
  • P(d∣h):似然(可能性),是在假设 h 为真的前提下,数据 d 出现的概率。
  • P(h):先验概率,是假设 h 为真时的概率(与数据无关)。
  • P(d):边缘概率,是数据 d 出现的概率(与假设无关)。

朴素贝叶斯的优缺点

优点

  • 简单高效,计算量小。
  • 对小规模数据集有效,适用于文本分类、垃圾邮件过滤等问题。
  • 能够处理高维数据。

缺点

  • 条件独立性假设在实际中往往不成立,可能影响分类性能。
  • 对数据中的噪声和相关性较敏感。

实际应用示例

假设我们要预测一个人是否会购买某种产品。我们有以下特征:年龄、收入、是否有房子、信用等级。类别标签是是否购买(是/否)。

训练数据:

年龄收入有房子信用等级购买
<30
30-40
>40
<30

如果我们要预测的人的情况为:年龄=<30,收入=高,有房子=否,信用等级=好,那么使用朴素贝叶斯预测的步骤如下: 

通过这种方式,朴素贝叶斯可以对新数据进行分类预测,即使在特征相互独立的假设不完全成立的情况下,也能提供合理的结果。


KNN算法

K近邻算法(K-Nearest Neighbors,简称KNN)是一种简单而有效的分类和回归算法。其核心思想是,对于一个新的输入实例,通过比较其与训练集中所有实例的距离,找到距离最近的 k 个实例,并根据这 k 个实例的标签来预测新实例的标签。

KNN算法的基本步骤

  1. 计算距离:对于新的输入实例 x,计算它与训练集中每个实例之间的距离。常用的距离度量方法包括欧氏距离、曼哈顿距离等。

  2. 选择最近的 k 个邻居:根据计算的距离,选择距离 x 最近的 k 个训练实例。

  3. 分类或回归

    • 分类:对 k 个最近邻的标签进行投票,选择出现次数最多的标签作为新实例的预测标签。
    • 回归:对 k 个最近邻的标签进行平均,作为新实例的预测值。它就是通过机器学习方法预测来填充缺失值的典型示例,而非使用线性插值、分段插值等数学方法。

KNN的参数选择

  1. k值的选择:k 的值对算法的性能有很大影响。较小的 k 值使模型更复杂,容易发生过拟合;较大的 k 值使模型更简单,容易发生欠拟合。一般通过交叉验证来选择合适的 k 值

  2. 距离度量:常用的距离度量方法有欧氏距离(适用于连续变量)、曼哈顿距离(适用于稀疏数据)、余弦相似度(适用于文本数据)等。

KNN的优缺点

优点

  • 简单直观,易于理解和实现。
  • 无需显式的训练过程,适合小数据集。
  • 对非线性分类问题有很好的效果。

缺点

  • 计算开销大,对大数据集不适用,因为每次预测都需要计算与所有训练实例的距离。
  • 存储开销大,需要存储整个训练数据集。
  • 对噪声敏感,噪声数据可能会对预测结果产生较大影响。

示例

假设我们有如下数据集,用于预测一个人是否会购买产品:

年龄收入有房子信用等级购买
<30
30-40
>40
<30

我们希望预测一个新的实例:年龄为30-40,收入为高,有房子,信用等级为好。

步骤:

  1. 计算距离:计算新实例与每个训练实例之间的距离。
  2. 选择最近的 k 个邻居:假设 k=3,选择距离最近的3个实例。
  3. 分类:根据这3个最近邻的标签进行投票,确定新实例的预测标签。

假设计算结果如下:

  • 新实例与实例2的距离最小,为1
  • 新实例与实例4的距离次之,为2
  • 新实例与实例3的距离再次之,为3

最近的3个邻居分别是实例2、实例4和实例3,标签分别是"是"、"否"和"是"。因此,投票结果为"是",新实例的预测标签为"是"。

KNN是一种非参数算法,适用于对数据分布没有太多先验假设的情况。其效果取决于距离度量方法和 k 值的选择,需要根据具体问题进行调整和优化。

  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Joy T

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

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

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

打赏作者

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

抵扣说明:

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

余额充值