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

news2024/12/15 9:05:26

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. 应用模型对新实例进行预测(推断),目标是该模型能够很好地被泛化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2259847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测

【算法介绍】 ddddocr是一个强大的Python OCR(光学字符识别)库,特别适用于验证码识别。它利用深度学习技术,如卷积神经网络(CNN)和循环神经网络(RNN),对图像中的文字进行…

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气🍬,只有绝对的努力✊】 目录 实战项目简介: 1、用户管理(8个) 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …

云服务器搭建lamp的wordpress

Ubuntu系统搭建过程目录 一、检查环境1.1 检查是否安装Apache1.2 检查是否安装Mysql1.3 检查是否安装PHP 二、安装Apache截图 三、安装Mysql3.1 安全安装配置3.2 修改权限和密码3.3 重启MySQL服务 四、安装PHP4.1 测试截图 五、下载并安装wordpress以及配置5.1 下载并解压移动5…

C#速成(GID+图形编程)

常用类 类说明Brush填充图形形状,画刷GraphicsGDI绘图画面,无法继承Pen定义绘制的对象直线等(颜色,粗细)Font定义文本格式(字体,字号) 常用结构 结构说明Color颜色Point在平面中定义点Rectan…

babeltrace与CTF相关学习笔记-4

babeltrace与CTF相关学习笔记-4 写在前面metadata_string 重头开始定位,操作meta的位置bt_ctf_trace_get_metadata_string stream部分内存的问题 写在前面 正在并行做几件事。 在编译过程中,突然想到,还是再详细研究一下之前的例程。 一是详…

多旋翼无人机 :桨叶设计—跷跷板结构

多旋翼无人机 :桨叶设计——跷跷板结构 前言跷跷板结构 前言 2024年11月,大疆发布了最新的农业无人机T70和T100。其中T70不同于以往的机型,在桨夹处采用了翘翘板结构,大疆将其命名为“挥舞桨叶”。 T70 无人机如下 放大其中螺旋…

低通滤波器,高通滤波器,公式

1 低通滤波器 :输出的是电容的电压 1 低通滤波器可以把低频信号上面的高频信号给滤掉 2 100hz正常通过 3 经过低通滤波器后,波形光滑,绿色波形。一致 4 电容充电速度跟不上输入信号的速度(因为加了电阻,限制了电流&…

如何打造个人知识体系?

第一,每个人的基本情况不同。比如我有一个类别跟「设计」相关,这是自己的个人爱好,但不一定适合其他人。再比如我还有一个类别跟「广告文案」相关,因为里面很多表达可以借用到演讲或写作中,这也不适合所有人。 第二&am…

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是,NTN的RF内容有TS 38.101-5单独去讲,而ATG则会和地面网络共用某些band,这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…

《自动驾驶技术的深度思考:安全与伦理的挑战》

内容概要 在当今这个自动驾驶技术飞速发展的时代,我们生活的节奏恰似一场疾驰的赛车,然而,赛道上并非总是平坦。在这场技术革命中,安全与伦理问题像是潜伏在阴影中的幽灵,轮番考验着我们的道德底线与法律界限。 随着…

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】,点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…

【AIGC】如何高效使用ChatGPT挖掘AI最大潜能?26个Prompt提问秘诀帮你提升300%效率的!

还记得第一次使用ChatGPT时,那种既兴奋又困惑的心情吗?我是从一个对AI一知半解的普通用户,逐步成长为现在的“ChatGPT大神”。这一过程并非一蹴而就,而是通过不断的探索和实践,掌握了一系列高效使用的技巧。今天&#…

汽车免拆诊断案例 | 2014款保时捷卡宴车发动机偶尔无法起动

故障现象 一辆2014款保时捷卡宴车,搭载3.0T 发动机,累计行驶里程约为18万km。车主反映,发动机偶尔无法起动。 故障诊断 接车后试车,发动机起动及运转均正常。用故障检测仪检测,发动机控制单元(DME&#x…

aippt:AI 智能生成 PPT 的开源项目

aippt:AI 智能生成 PPT 的开源项目 在现代办公和学习中,PPT(PowerPoint Presentation)是一种非常重要的展示工具。然而,制作一份高质量的PPT往往需要花费大量的时间和精力。为了解决这一问题,aippt项目应运…

【泛微系统】流程发起次数报表

流程发起次数报表 应用场景: 查询所有发起过业务流程的员工的信息,可作为绩效考核、系统使用情况等依据; 如何使用该SQL生成系统在线报表,实时查询最新的发起数据? 1、数据库创建视图,并定义一个视图名称如;view_test1 2、系统后台建模引擎-表单-右键创建一个虚拟表单…

【电子元器件】电感基础知识

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、 电感的基本工作原理 1. 电感的基本工作原理如下: (1) 当线圈中有电流通过时&#…

IDEA 修改格式化仅格式化本次改动代码

最近总是发现格式化的时候会格式化文件所有代码,提交Git 后再看提交日志,就很不清晰。修改方式如下 中文: 格式化代码快捷键[中文配置]: 英文: 格式化代码快捷键[英文配置]:

数据结构开始——时间复杂度和空间复杂度知识点笔记总结

好了,经过了漫长的时间学习c语言语法知识,现在我们到了数据结构的学习。 首先,我们得思考一下 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素…

【游戏设计原理】7 - 加德纳的多元智能理论

虽然多元智能理论是对认知方式的分类,但它也可以为游戏设计提供丰富的思路和策略,帮助设计师创建更具吸引力、包容性和多样性的游戏。通过理解不同玩家的认知方式和优势,我们可以更精准地设计游戏的元素和玩法,使其能够吸引广泛的…

【OpenCV】基于分水岭算法的图像分割

介绍 分水岭算法(Watershed Algorithm)是一种基于形态学的图像分割方法,它模仿了地理学中的分水岭概念。在图像处理中,分水岭算法通过模拟水流从山顶流向谷底的过程来分割图像,其中局部极小值点被视为“山谷”&#x…