当前位置: 首页 > news >正文

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类

1.4.1 训练监督

1. 监督学习:已对训练数据完成标记
  • 分类:根据数据及其分类信息来进行训练,使模型能够对新的数据进行分类

image-20241209185559439

  • 回归:给出一组特征值来预测目标数值

image-20241209191448573

2. 无监督学习:没有对训练数据进行任何标记
  • 聚类:在大量数据中找到一些关联,并将其分类

  • 可视化算法:提供大量复杂、未标记的数据,使用算法绘制其2D或3D表示,以尽可能保留其结构

  • 降维:在不丢失太多信息情况下简化数据

    • 特征提取:将几个相关的特征值合并成为一个

    将训练数据提供给另一个机器学习算法前,先进行降维算法减少训练数据的维度,能够加快算法运行、减少数据的空间占用(磁盘、内存),有时还能使得算法表现得更好。

  • 异常检测:系统在训练期间主要使用正常实例,因此它会学习识别它们。然后,当看到一个新实例时,系统可以判断这个新实例看起来是正常的还是异常的

    • 新颖性检测:需要有一个非常“干净”的训练集,没有任何你希望算法能够检测到的实例。

    新颖性算法与异常检测的不同:训练集中极少出现过的,如果在测试集合中出现

    a) 新颖性算法:不认为是新颖的,因为测试集里面见到过

    b) 异常检测:认为是异常的,因为很少出现

  • 关联规则学习:目标是挖掘大量数据并发现属性之间有趣的关系

例如,假设你开了一家超市,在销售日志上运行关联规则可能会发现购买烧烤酱和薯片的人也倾向于购买牛排。因此,你可能希望将这几样商品摆放得更近一些。

3. 半监督学习:对训练数据进行了部分标记
  • 现实案例:照片托管服务,在大量照片中,根据照片中出现的人物将其分成不同的分组(无监督学习内容)

大多数半监督学习算法是无监督和监督算法的组合

例如,可以使用聚类算法将相似的实例分组在一起,然后每个未标记的实例都可以用其集群中最常见的标签进行标记。一旦标记了整个数据集,就可以使用任何监督学习算法。

4. 自监督学习:从完全未标记的数据集生成完全标记的数据集。

例如,如果你有一个很大的未标记图像数据集,你可以随机屏蔽每个图像的一小 部分,然后训练一个模型来恢复出原始图像。在训练期间,屏蔽的图像用作模型的输入,原始图像用作标签。

  • 迁移学习:将知识从一项任务转移到另一项任务称为迁移学习
  • 自监督学习与无监督学习的区别:自监督学习在训练期间是使用(生成的)标签的,因此在这方面它更接近于监督学习。在处理聚类、降维或异常检测等任务时,通常会使用术语“无监督学习”,而自监督学习侧重于与监督学习相同的任务,主要是分类和回归。
5. 强化学习:自行学习策略以随时间推移获得最大回报

强化学习,RL,这个学习系统(在此上下文中称为智能体)可以观察环境,选择和执行动作,并获得回报(或负回报形式的惩罚)。然后它必须自行学习什么是最好的方法,称为策略,以便随着时间的推移获得最大的回报。策略定义了智能体在给定情况下应该选择的动作。

一般执行强化学习的流程为:

  1. 观察环境
  2. 使用策略选择下一步的动作
  3. 执行动作
  4. 获得惩罚或回报
  5. 更新策略(学习步骤)
  6. 迭代直到找到最优策略

AlphaGo就是强化学习的示例。

1.4.2 批量学习与在线学习

对机器学习系统进行分类的另一个标准是系统能否从输入数据流中进行增量学习。

1. 批量学习:无法进行增量学习

在批量学习中,系统无法进行增量学习:它必须使用所有可用的数据进行训练。这通常会占用大量的时间和计算资源,因此通常需要离线完成。

  • 离线学习:首先对系统进行训练,然后将其投入生产环境运行,就不再学习了。它只是应用它学到的东西。这称为离线学习。
  • 模型腐烂/数据漂移:由于现实世界不断变化发展,而模型却保持不变,导致模型性能随着时间推移慢慢变差的现象。
  • 解决模型腐烂的方案:定期根据最新的数据重新训练模型。重新训练的间隔次取决于用例,猫狗识别类性能衰减缓慢的模型可以间隔稍长,金融预测类性能衰减迅速的模型应该间隔较短。
  • 批量学习的优缺点:
    • 优点:数据量小时,重新训练、评估和启动机器学习系统的整个过程可以相当容易地自动化,效果较好
    • 缺点:数据量大,或者训练资源占用大时,重新训练系统成本巨大

如果系统需要能够自动学习并且它的资源有限(例如,智能手机应用程序或火星上的漫游机器人),那么携带大量训练数据并占用大量资源来每天训练数小时是不太可能的。

在这些情况下,更好的选择是使用能够增量学习的算法。

2. 在线学习:进行增量学习

在在线学习中,通过以单独的数据或小批量的小组数据方式循序地向系统提供数据实例来对系统进行增量训练。每个学习步骤都既快速又便宜,因此系统可以即时学习新数据

  • 在线学习的适用场景
    • 需要快速适用变化的系统(金融、股票)
    • 计算资源受限的设备
    • 超大数据集:超出一台计算机的主存储器所能容纳的数据,需要用到核外学习
  • 核外学习:(out-of-core)学习,该算法加载部分数据,在该数据上运行一个训练步骤,然后重复该过程,直到它在所有数据上运行完。核外学习通常是离线(即不在实时系统上)完成的
  • 学习率:在线学习系统适应不断变化的数据的速度
    • 学习率高:系统会快速适应新数据,但它也会很快忘记旧数据
    • 学习率低:系统会有惰性,会学习得更慢,但它对新数据中的噪声或非典型数据点(异常值)序列的敏感度也会降低。
  • 在线学习的挑战:如果将不良数据输入系统,系统的性能可能会迅速下降(取决于数据的质量和学习率)。为降低这种风险,你需要密切监控系统,并在检测到性能下降时立即关闭学习(并尽量恢复到之前的工作状态)。你可能还想监控输入数据并对异常数据做出反应。例如,使用异常检测算法。

1.4.3 泛化方法

对机器学习系统进行分类的另一种方法是根据它们的泛化方式。

大多数机器学习任务都与做出预测有关。这意味着在给定大量训练样例的情况下,系统需要能够对它以前未见到过的样例做出良好的预测(泛化)。在训练数据上有很好的性能是好的,但还不够,真正的目标是在新实例上表现良好。

泛化方法主要有两种:基于实例的学习和基于模型的学习。

1. 基于实例的学习

系统用心学习样例,然后通过使用相似性度量将它们与学习到的样例(或它们的子集)进行比较来泛化到新实例。

2. 基于模型的学习

为需要进行泛化的样例构建一个模型,然后使用该模型进行预测。这称为基于模型的学习。

  • 代价函数:对于线性回归问题,人们通常使用代价函数来衡量线性模型的预测与训练样例之间的差距,目的在于最小化这个差距。
示例1-1:一个线性回归模型:Linear Regression
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression# 下载和准备数据
data_root ='https://github.com/ageron/data/raw/main/'
lifesat = pd.read_csv(data_root+'lifesat/lifesat.csv')
X = lifesat[["GDP per capita (USD)"]].values
Y = lifesat[["Life satisfaction"]].values# 可视化数据
lifesat.plot(kind='scatter',grid=True,x="GDP per capita (USD)",y="Life satisfaction")
plt.axis([23_500,62_500,4,9])
plt.show()# 选择线性模型
model = LinearRegression()# 训练模型
model.fit(X,Y)# 对Cyprus进行预测
X_new = [[37_655.2]]    #Cyprus的GDP(2020年)
print(model.predict(X_new)) # 输出[[6.30165767]]

输出结果:

[[6.30165767]]

在上述代码中,用k近邻回归替换线性回归模型:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsRegressor# 下载和准备数据
data_root ='https://github.com/ageron/data/raw/main/'
lifesat = pd.read_csv(data_root+'lifesat/lifesat.csv')
X = lifesat[["GDP per capita (USD)"]].values
Y = lifesat[["Life satisfaction"]].values# 可视化数据
lifesat.plot(kind='scatter',grid=True,x="GDP per capita (USD)",y="Life satisfaction")
plt.axis([23_500,62_500,4,9])
plt.show()# 选择线性模型
model = KNeighborsRegressor(n_neighbors=3)# 训练模型
model.fit(X,Y)# 对Cyprus进行预测
X_new = [[37_655.2]]    #Cyprus的GDP(2020年)
print(model.predict(X_new)) # 输出

输出结果:

[[6.33333333]]

1.4.4 机器学习的典型步骤

  1. 研究数据
  2. 选择模型
  3. 使用训练数据进行训练(即学习算法搜索最小化代价函数的模型参数值)
  4. 应用模型对新实例进行预测(推断),目标是该模型能够很好地被泛化

相关文章:

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类 1.4.1 训练监督 1. 监督学习:已对训练数据完成标记 分类:根据数据及其分类信息来进行训练,使模型能够对新的数据进行分类 回归:给出一组特征值来预测目标数值 2. 无监督学习:没有对训练数据进行任…...

四叉树算法在游戏碰撞检测中的应用

简介 在游戏开发中,碰撞检测是一个非常重要但计算成本较高的环节。如果采用简单的暴力检测方法,需要对场景中的每个物体与其他所有物体进行碰撞检测,时间复杂度为O(n)。四叉树(Quadtree)算法通过空间划分的方式,可以显著降低碰撞…...

IDEA 打包普通JAVA项目为jar包

需求:普通java项目(有添加依赖的jar包),没有用maven管理依赖和打包,要打成jar包,包可以用“java -jar 包名” 启动程序。 讲如何打包前,先记录下普通项目的目录结构和怎么添加依赖包 1.目录结…...

Docker Compose 多应用部署 一键部署

介绍 Docker Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。 如:springbootmysqlnginx 如果一个个去部署他会非常的麻烦,这时候可以选择Docker …...

软件架构设计——通用表单UI—未来之窗行业应用跨平台架构

.东方仙盟_小世界 {margin-top: 2%;padding: 0 3%;background: #fff; } .东方仙盟_小世界 li span {width: 55px;padding-left: 0px; }.东方仙盟_小世界 li span {display: block;position: absolute;left: 0px;padding-left: 10px;width: 55px;font-size: 16px;background-siz…...

人工智能大语言模型起源篇(二),从通用语言微调到驾驭LLM

上一篇:《人工智能大语言模型起源篇(一),从哪里开始》 (5)Howard 和 Ruder 于2018年发表的《Universal Language Model Fine-tuning for Text Classification》,https://arxiv.org/abs/1801.06…...

VBA 连续打印多个内容成PDF

VBA 连续打印多个内容成PDF Dim wb As Workbook Dim sht1 As Worksheet Set sht1 ActiveSheet PT ThisWorkbook.PathApplication.ScreenUpdating FalseApplication.DisplayAlerts FalseApplication.Calculation xlCalculationManual For i [aa2] To [ab2][ad2] iSet wb …...

9. 高效利用Excel设置归档Tag

高效利用Excel设置归档Tag 1. Excle批量新建/修改归档Tag2. 趋势记录模型批量导入归档Tag(Method1)2. 趋势记录模型批量导入归档Tag(Method2)3. 趋势记录控件1. Excle批量新建/修改归档Tag Fcatory Talk常常需要归档模拟量,对于比较大的项目工程会有成千上万个重要数据需…...

ubuntu系统生成SSL证书配置https

自签名【Lets Encrypt】的测试证书,有效期三个月。 第一步:安装acme,如果没有安装git,需要提前安装 下载came资源 git clone https://github.com/Neilpang/acme.sh.git 无法访问,可以试用gitee的资源,安…...

顺序表(数据结构初阶)

文章目录 顺序表一:线性表1.1概念: 二:顺序表2.1概念与结构:2.2分类:2.2.1静态顺序表2.2.2动态顺序表 2.3动态顺序表的实现声明(初始化)检查空间容量尾插头插尾删头删查找指定位置之前插入数据指…...

AOF和RDB【Redis持久化篇】

文章目录 1.什么是持久化?2.RDB3.AOF 1.什么是持久化? Redis是跑在内存里的,当程序重启或者服务器崩溃,数据就会丢失,如果业务场景希望重启之后数据还在,就需要持久化,即把数据保存到可永久保存…...

数据可视化大屏UI组件库:B端科技感素材PSD

在数据可视化领域,一个出色的大屏UI设计不仅能够准确传达数据背后的信息,更能提升用户的视觉体验。然而,对于UI设计师而言,设计这样一款界面往往面临着寻找合适设计素材的挑战。为了应对这一难题,我们推出了这款数据可…...

【力扣算法】234.回文链表

快慢指针:一个指针走两步,一个指针走一步,当快指针走到链表末尾时,慢指针走到中间位置。 逆转链表:根据指针位置分成两个表,逆转第二个表。 按序判断就可以,如果是相同就是回文,反之…...

MVC流程分析

DisaptcherServlet本质是servlet&#xff0c;执行init()方法&#xff0c;自启动底层执行代码&#xff0c; 作用&#xff1a; 1、读取springmvc配置文件&#xff0c;创建Controller对象&#xff0c;放入容器中&#xff0c;map<"id",对象> 2、接收用户请求&#…...

编程中常见的技术难题有哪些?

技术的未来&#xff1a;如何驾驭变革 引言 在科技迅猛发展的今天&#xff0c;变革已成为常态。你是否感受到这一波潮流的力量&#xff1f;我们正身处一个充满机遇与挑战的时代。诸如人工智能、区块链、云计算等技术如同狂风骤雨&#xff0c;席卷我们的生活与工作方式。那么&a…...

「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门

本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念&#xff0c;并解决一个经典问题&#xff1a;斐波那契数列。学生将学习如何使用动态规划优化递归计算&#xff0c;并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …...

前端退出对话框也就是点击右上角的叉,显示灰色界面,已经解决

文章目录 遇到一个前端bug&#xff0c;点击生成邀请码 打开对话框 然后我再点击叉号&#xff0c;退出对话框&#xff0c;虽然退出了对话框&#xff0c;但是显示灰色界面。如下图&#xff1a; 导致界面就会失效&#xff0c;点击任何地方都没有反应。 发现是如下代码的问题&am…...

使div每次隐藏显示后都从顶部开始

<div ref"addmodel" > <!-- 这里内容很长&#xff0c;超出屏幕。。。 --> </div> methods:{ // 页面显示时滚动至顶部 scrollToTop() { const addmodel this.$refs.addmodel; if (addmodel) { addmodel.scrollTop 0; } }, } 在div每次显示或者…...

资源付费软件开发 资源付费系统源码 资源付费类型小程序APP

应用场景 资源付费软件广泛应用于多个领域&#xff0c;以下是其主要应用场景&#xff1a; 在线教育&#xff1a; 各类教育机构、名师通过资源付费软件提供课程、讲座等学习资源&#xff0c;为学生提供个性化的学习服务。用户可以通过软件学习专业知识、职业技能等&#xff0c…...

文件的读写

所涉及到的函数如下&#xff1a;<stdio.h> 函数介绍网站&#xff1a;cplusplus.com - The C Resources Network 读写文件之前要先打开文件&#xff0c;使用完要关闭文件归返空间&#xff1a; fopen 打开 fclose 关闭 返回的是FILE*型&#xff0c;第一个参数是文…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

2.3 物理层设备

在这个视频中&#xff0c;我们要学习工作在物理层的两种网络设备&#xff0c;分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间&#xff0c;需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质&#xff0c;假设A节点要给…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...