机器学习-学习笔记(一)–>(假设空间&版本空间)及归纳…

yizhihongxing

机器学习-学习笔记(一)-->(假设空间&版本空间)及归纳学习算法

引言

机器学习是人工智能和数据科学领域的热点话题。本篇文章旨在介绍机器学习中的重要概念——假设空间和版本空间,以及一个常用的归纳学习算法——Find-S 算法。

假设空间和版本空间

假设空间是指机器学习模型能够表示的所有可能假设的集合。在监督学习中,每个假设由一个函数表示,即假设空间是函数集合。例如对于二分类问题,假设空间可以是所有二元分类函数的集合。而版本空间则是指与经验数据(即训练数据)一致的假设集合,版本空间是假设空间的子集,版本空间由训练数据和假设空间决定。

例如有以下训练数据集:

X1 X2 X3 Y
1 0 1 0
0 1 0 1
1 1 1 0

这是一个二分类训练数据集,我们假设空间为三元布尔函数集合,并设定初始版本空间为所有假设的集合,即

$$ \mathcal{H} = {h_1, h_2, h_3, h_4, h_5, h_6, h_7, h_8} $$

那么,版本空间就表示能够经过二分类训练数据的所有假设组成的假设集合,可通过Find-S算法求解得到。

Find-S算法

Find-S算法是一种简单的归纳学习算法。它的思想是,从假设空间中选取一个能够与训练数据匹配的最特殊假设,不断通过样例进行迭代地缩小版本空间,最终得到符合实际情况的假设。

具体地,Find-S算法的步骤如下:

  1. 初始化版本空间 $\mathcal{V}$ 为假设空间 $\mathcal{H}$ 中的所有假设。
  2. 对于训练集中的每一个正实例,移除 $\mathcal{V}$ 中不包含该实例的假设。
  3. 对于训练集中的每一个负实例,移除 $\mathcal{V}$ 中包含该实例的假设。
  4. 返回最特殊的假设 $h_S$。

在举例说明 Find-S 算法之前,需要先定义一个重要的概念——"比较特殊"。在本文中,“比较特殊”的假设是指与训练集中某些正实例有所区别,而这些正实例与负实例没有区别。反过来,“比较泛化”的假设是指在训练数据集中,不能与任何正实例或负实例区别。

接下来,我们以三个特定的训练数据来说明 Find-S 算法。

X1 X2 X3 Y
1 0 1 0
0 1 0 1
1 1 1 0
  1. 初始化: $\mathcal{H} = {h_1, h_2, h_3, h_4, h_5, h_6, h_7, h_8}$, $\mathcal{V} = \mathcal{H}$。
  2. 对于第一个训练样例 $(1, 0, 1, 0)$,$\mathcal{V}$ 变为 ${h_3, h_5}$,即去掉所有在这个样本上的表现不好的假设。因为 $h_1, h_2, h_4, h_6, h_7, h_8$ 都不符合样本 (1, 0, 1, 0)。其中,$h_3$ 表示 $X_1 = 1$ 且 $X_3 = 1$ 的假设,$h_5$ 表示 $X_3 = 1$ 的假设。
  3. 对于第二个样例 $(0, 1, 0, 1)$,$\mathcal{V}$ 变为 ${h_3}$,即保留所有在前两个样本上表现比较好的假设。这是因为只有 $h_3$ 符合第二个样本。$h_3$ 表示 $X_1 = 1$ 且 $X_3 = 1$。
  4. 对于第三个样例 $(1, 1, 1, 0)$,$\mathcal{V}$ 又变为 ${h_3}$,即保留所有在一个好的样本上表现比较好的假设。这是因为只有 $h_3$ 符合第三个样本。
  5. 返回 $h_S = h_3$,即 $X_1 = 1$ 且 $X_3 = 1$。

通过以上例子,我们看到Find-S 算法能够在有限步内找到最特殊且与训练数据集一致的假设。但需要注意的是,该算法在面对一些复杂的情况时可能会陷入局部最优解。

结论

本文介绍了机器学习中的假设空间和版本空间,以及常用于监督学习的一个简单归纳算法——Find-S算法。这里并未详细讲解其他分类算法,但这些基本概念对机器学习领域的学习和实践都是至关重要的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:机器学习-学习笔记(一)–>(假设空间&版本空间)及归纳… - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • pytorh实现全局平均(最大)池化的两种方式

    以下是关于“PyTorch实现全局平均(最大)池化的两种方式”的完整攻略,包含两个示例。 PyTorch实现全局平均(最)池化的两种方式 在PyTorch中,我们可以使用两种方式来实全局平均(最大)池化,分别是使用nn.AdaptiveAvgPool2d和nn.AdaptiveMaxPool2d模块,以及使用torch和torch.max函数。下面我们将介绍…

    other 2023年5月9日
    00
  • asp获取当前文件名的代码

    获取当前文件名是在ASP中非常普遍的操作。下面是获取当前文件名的代码及其说明: 代码示例一: <% Dim sFileName sFileName=Server.MapPath(Request.ServerVariables("SCRIPT_NAME")) sFileName=Mid(sFileName,InStrRev(sFile…

    other 2023年6月26日
    00
  • 用ajax自动加载blogjava和博客园的rss

    使用ajax自动加载blogjava和博客园的rss主要包含以下步骤: 了解RSS的基本结构:RSS(Really Simple Syndication)是一种用于发布更新信息的格式。它的结构非常简单,通常是一个包含了标题、链接、摘要和时间等基本信息的XML文档。 获取RSS文档:我们可以使用ajax从其他网站获取RSS文档,这里以blogjava和博客园的…

    other 2023年6月25日
    00
  • 微软发布Win10创意者更新15063 SDK下载地址(附更新内容及已知问题)

    微软发布Win10创意者更新15063 SDK下载地址(附更新内容及已知问题)攻略 1. 下载SDK 微软发布了Win10创意者更新15063的SDK,您可以按照以下步骤下载SDK: 打开微软的开发者网站 https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk。 在页面上找…

    other 2023年8月3日
    00
  • Android Intent封装的实例详解

    下面我将详细讲解“Android Intent封装的实例详解”的完整攻略。 概述 在 Android 开发中,Intent 是一种用于执行各种操作的对象。通过 Intent,我们可以在不同的组件之间传递数据,启动不同的活动、服务等。 然而,在实际开发中,直接使用 Intent 进行操作时,存在一些重复性的操作,导致代码冗长,不利于维护。因此,我们可以对 In…

    other 2023年6月25日
    00
  • 浅谈Redis处理接口幂等性的两种方案

    浅谈Redis处理接口幂等性的两种方案 什么是接口幂等性 接口幂等性是指无论调用多次同一个接口,都不会对数据产生影响,最终得到的结果都是相同的。 为什么需要处理接口幂等性 在分布式系统中,由于网络或者系统本身的原因,可能会造成接口调用多次,导致重复操作,或者是第一次调用失败后再次调用,导致数据出现错误。 解决方案一:使用Redis实现接口幂等性 Redis是…

    other 2023年6月26日
    00
  • C/C++中的OpenCV读取视频与调用摄像头

    下面就给你详细讲解“C/C++中的OpenCV读取视频与调用摄像头”的完整攻略。 1.安装OpenCV 在使用OpenCV之前,必须先安装OpenCV库,安装过程比较复杂,可以参考OpenCV官方文档或者其他相关教程,这里不再赘述。 2.读取视频 OpenCV可以很方便地读取视频,只需要用cv::VideoCapture类的对象打开一个视频文件即可。具体步骤…

    other 2023年6月27日
    00
  • 用vue3封装一个符合思维且简单实用的弹出层

    下面我将详细讲解用vue3封装一个符合思维且简单实用的弹出层的完整攻略。 1. 弹出层的需求分析 在封装弹出层之前,我们需要对需求进行分析,明确所需功能、交互,进而确定实现方式和技术选型。 弹出层的主要需求包括:弹出层中展示数据、支持输入、支持自定义样式、支持关闭、支持拖拽等。 在交互方面,我们需要考虑以下几个问题: 如何打开/关闭弹出层? 如何传递数据给弹…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部